@hellpig/anarchy-engine 22.0.0 → 22.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Actor/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Actor/Adapters/ConfigToParams.js +1 -1
- package/dist/Actor/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Actor/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Actor/Adapters/EntityToConfig.js +1 -1
- package/dist/Actor/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Actor/Entities/Actor/Actor.js +1 -1
- package/dist/Actor/Entities/Actor/Actor.js.map +1 -1
- package/dist/Actor/Factories/ActorFactory.js +1 -1
- package/dist/Actor/Factories/ActorFactory.js.map +1 -1
- package/dist/Actor/index.d.ts +1 -0
- package/dist/Audio/Adapters/AudioConfigToParams.d.ts +2 -0
- package/dist/Audio/Adapters/AudioConfigToParams.js +2 -0
- package/dist/Audio/Adapters/AudioConfigToParams.js.map +1 -0
- package/dist/Audio/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Audio/Adapters/EntityToConfig.js +1 -1
- package/dist/Audio/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Audio/Adapters/index.d.ts +1 -1
- package/dist/Audio/Factories/AudioFactory.js +1 -1
- package/dist/Audio/Factories/AudioFactory.js.map +1 -1
- package/dist/Audio/Wrappers/AbstractAudioWrapper.js +1 -1
- package/dist/Audio/Wrappers/AbstractAudioWrapper.js.map +1 -1
- package/dist/Camera/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Camera/Adapters/ConfigToParams.js +1 -1
- package/dist/Camera/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Camera/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Camera/Adapters/EntityToConfig.js +1 -1
- package/dist/Camera/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Camera/Adapters/index.d.ts +1 -1
- package/dist/Camera/Factories/CameraFactory.js +1 -1
- package/dist/Camera/Factories/CameraFactory.js.map +1 -1
- package/dist/Camera/Wrappers/OrthographicCameraWrapper.js +1 -1
- package/dist/Camera/Wrappers/OrthographicCameraWrapper.js.map +1 -1
- package/dist/Camera/Wrappers/PerspectiveCameraWrapper.js +1 -1
- package/dist/Camera/Wrappers/PerspectiveCameraWrapper.js.map +1 -1
- package/dist/Color/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Color/Adapters/EntityToConfig.js +1 -1
- package/dist/Color/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Color/Wrappers/ColorWrapper.js +1 -1
- package/dist/Color/Wrappers/ColorWrapper.js.map +1 -1
- package/dist/Controls/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Controls/Adapters/ConfigToParams.js +1 -1
- package/dist/Controls/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Controls/Factories/ControlsFactory.js +1 -1
- package/dist/Controls/Factories/ControlsFactory.js.map +1 -1
- package/dist/Controls/Wrappers/FpsControls/FpsControlsWrapper.js +1 -1
- package/dist/Controls/Wrappers/OrbitControls/OrbitControlsWrapper.js +1 -1
- package/dist/Controls/index.d.ts +1 -0
- package/dist/EnvMap/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/EnvMap/Adapters/ConfigToParams.js +1 -1
- package/dist/EnvMap/Adapters/ConfigToParams.js.map +1 -1
- package/dist/EnvMap/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/EnvMap/Adapters/EntityToConfig.js +1 -1
- package/dist/EnvMap/Adapters/EntityToConfig.js.map +1 -1
- package/dist/EnvMap/Factories/EnvMapFactory.js +1 -1
- package/dist/EnvMap/Factories/EnvMapFactory.js.map +1 -1
- package/dist/EnvMap/Wrappers/EnvMapWrapper.js +1 -1
- package/dist/EnvMap/Wrappers/EnvMapWrapper.js.map +1 -1
- package/dist/EnvMap/index.d.ts +1 -1
- package/dist/Fog/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Fog/Adapters/ConfigToParams.js +1 -1
- package/dist/Fog/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Fog/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Fog/Adapters/EntityToConfig.js +1 -1
- package/dist/Fog/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Fog/Factories/FogFactory.js +1 -1
- package/dist/Fog/Factories/FogFactory.js.map +1 -1
- package/dist/Fog/Wrappers/FogWrapper.js +1 -1
- package/dist/Fog/Wrappers/FogWrapper.js.map +1 -1
- package/dist/Fog/index.d.ts +1 -0
- package/dist/Fsm/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Fsm/Adapters/ConfigToParams.js +1 -1
- package/dist/Fsm/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Fsm/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Fsm/Adapters/EntityToConfig.js +1 -1
- package/dist/Fsm/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Fsm/Factories/FsmInstanceFactory.js +1 -1
- package/dist/Fsm/Factories/FsmInstanceFactory.js.map +1 -1
- package/dist/Fsm/Factories/FsmSourceFactory.js +1 -1
- package/dist/Fsm/Factories/FsmSourceFactory.js.map +1 -1
- package/dist/Fsm/Wrappers/FsmWrapper.js +1 -1
- package/dist/Fsm/Wrappers/FsmWrapper.js.map +1 -1
- package/dist/Intersections/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Intersections/Adapters/ConfigToParams.js +1 -1
- package/dist/Intersections/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Intersections/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Intersections/Adapters/EntityToConfig.js +1 -1
- package/dist/Intersections/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Intersections/Factories/IntersectionsWatcherFactory.js +1 -1
- package/dist/Intersections/Factories/IntersectionsWatcherFactory.js.map +1 -1
- package/dist/Intersections/Watchers/AbstractIntersectionsWatcher.js +1 -1
- package/dist/Intersections/Watchers/AbstractIntersectionsWatcher.js.map +1 -1
- package/dist/Intersections/index.d.ts +1 -1
- package/dist/Kinematic/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Kinematic/Adapters/ConfigToParams.js +1 -1
- package/dist/Kinematic/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Kinematic/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Kinematic/Adapters/EntityToConfig.js +1 -1
- package/dist/Kinematic/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Kinematic/Adapters/index.d.ts +1 -1
- package/dist/Light/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Light/Adapters/ConfigToParams.js +1 -1
- package/dist/Light/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Light/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Light/Adapters/EntityToConfig.js +1 -1
- package/dist/Light/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Light/Factories/LightFactory.js +1 -1
- package/dist/Light/Factories/LightFactory.js.map +1 -1
- package/dist/Light/Wrappers/AbstractLightWrapper.js +1 -1
- package/dist/Light/Wrappers/AbstractLightWrapper.js.map +1 -1
- package/dist/Light/index.d.ts +1 -0
- package/dist/Material/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Material/Adapters/ConfigToParams.js +1 -1
- package/dist/Material/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Material/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Material/Adapters/EntityToConfig.js +1 -1
- package/dist/Material/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Material/Factories/MaterialFactory.js +1 -1
- package/dist/Material/Factories/MaterialFactory.js.map +1 -1
- package/dist/Material/Wrappers/MaterialWrapper.js +1 -1
- package/dist/Material/Wrappers/MaterialWrapper.js.map +1 -1
- package/dist/Material/index.d.ts +1 -0
- package/dist/Models3d/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Models3d/Adapters/ConfigToParams.js +1 -1
- package/dist/Models3d/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Models3d/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Models3d/Adapters/EntityToConfig.js +1 -1
- package/dist/Models3d/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Models3d/Entities/Model3d.js +1 -1
- package/dist/Models3d/Entities/Model3d.js.map +1 -1
- package/dist/Models3d/Factories/Models3dFactory.js +1 -1
- package/dist/Models3d/Factories/Models3dFactory.js.map +1 -1
- package/dist/Models3d/index.d.ts +1 -1
- package/dist/Particles/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Particles/Adapters/ConfigToParams.js +1 -1
- package/dist/Particles/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Particles/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Particles/Adapters/EntityToConfig.js +1 -1
- package/dist/Particles/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Particles/Factories/ParticlesFactory.js +1 -1
- package/dist/Particles/Factories/ParticlesFactory.js.map +1 -1
- package/dist/Particles/Wrappers/ParticlesWrapper.js +1 -1
- package/dist/Particles/Wrappers/ParticlesWrapper.js.map +1 -1
- package/dist/Particles/index.d.ts +1 -1
- package/dist/Physics/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Physics/Adapters/EntityToConfig.js +1 -1
- package/dist/Physics/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Physics/Adapters/PhysicsBodyConfigToParams.d.ts +1 -1
- package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js +1 -1
- package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js.map +1 -1
- package/dist/Physics/Adapters/PhysicsWorldConfigToParams.d.ts +1 -1
- package/dist/Physics/Adapters/PhysicsWorldConfigToParams.js +1 -1
- package/dist/Physics/Adapters/PhysicsWorldConfigToParams.js.map +1 -1
- package/dist/Physics/Entities/PhysicsBody.js +1 -1
- package/dist/Physics/Entities/PhysicsBody.js.map +1 -1
- package/dist/Physics/Factories/PhysicsBodyFactory.js +1 -1
- package/dist/Physics/Factories/PhysicsBodyFactory.js.map +1 -1
- package/dist/Renderer/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Renderer/Adapters/ConfigToParams.js +1 -1
- package/dist/Renderer/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Renderer/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Renderer/Adapters/EntityToConfig.js +1 -1
- package/dist/Renderer/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Renderer/Factories/RendererFactory.js +1 -1
- package/dist/Renderer/Factories/RendererFactory.js.map +1 -1
- package/dist/Renderer/Wrappers/RendererWrapper.js +1 -1
- package/dist/Renderer/Wrappers/RendererWrapper.js.map +1 -1
- package/dist/Renderer/index.d.ts +1 -1
- package/dist/Scene/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Scene/Adapters/ConfigToParams.js +1 -1
- package/dist/Scene/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Scene/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Scene/Adapters/EntityToConfig.js +1 -1
- package/dist/Scene/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Scene/Factories/SceneFactory.js +1 -1
- package/dist/Scene/Factories/SceneFactory.js.map +1 -1
- package/dist/Scene/Wrappers/SceneWrapper.js +1 -1
- package/dist/Scene/Wrappers/SceneWrapper.js.map +1 -1
- package/dist/Scene/index.d.ts +1 -0
- package/dist/Space/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Space/Adapters/ConfigToParams.js +1 -1
- package/dist/Space/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Space/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Space/Adapters/EntityToConfig.js +1 -1
- package/dist/Space/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Space/Entities/Space.js +1 -1
- package/dist/Space/Entities/Space.js.map +1 -1
- package/dist/Space/Factories/SpaceFactory.js +1 -1
- package/dist/Space/Factories/SpaceFactory.js.map +1 -1
- package/dist/Space/index.d.ts +1 -1
- package/dist/Spatial/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Spatial/Adapters/ConfigToParams.js +1 -1
- package/dist/Spatial/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Spatial/Adapters/ConfigToParamsSpatialData.d.ts +1 -1
- package/dist/Spatial/Adapters/ConfigToParamsSpatialData.js +1 -1
- package/dist/Spatial/Adapters/ConfigToParamsSpatialData.js.map +1 -1
- package/dist/Spatial/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Spatial/Adapters/EntityToConfig.js +1 -1
- package/dist/Spatial/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Spatial/Factories/SpatialGridFactory.js +1 -1
- package/dist/Spatial/Factories/SpatialGridFactory.js.map +1 -1
- package/dist/Spatial/Wrappers/SpatialGridWrapper.js +1 -1
- package/dist/Spatial/Wrappers/SpatialGridWrapper.js.map +1 -1
- package/dist/Text/Adapters/ConfigToParams.d.ts +1 -1
- package/dist/Text/Adapters/ConfigToParams.js +1 -1
- package/dist/Text/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Text/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Text/Adapters/EntityToConfig.js +1 -1
- package/dist/Text/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Text/Factories/TextFactory.js +1 -1
- package/dist/Text/Factories/TextFactory.js.map +1 -1
- package/dist/Text/Wrappers/TextTextureWrapper.js +1 -1
- package/dist/Text/Wrappers/TextTextureWrapper.js.map +1 -1
- package/dist/Text/Wrappers/TextWrapper.js +1 -1
- package/dist/Text/Wrappers/TextWrapper.js.map +1 -1
- package/dist/Text/index.d.ts +1 -0
- package/dist/ThreeLib/Utils/Object3dUtils.d.ts +1 -1
- package/dist/ThreeLib/Utils/Object3dUtils.js +1 -1
- package/dist/ThreeLib/Utils/Object3dUtils.js.map +1 -1
- package/dist/TransformDrive/Entities/Agents/KinematicTransformAgent.js +1 -1
- package/dist/TransformDrive/Entities/Agents/KinematicTransformAgent.js.map +1 -1
- package/dist/index.js +1 -1
- package/legal/NOTICE.md +1 -1
- package/legal/THIRD_PARTY_LICENSES.md +1 -1
- package/package.json +2 -1
- package/dist/Audio/Adapters/ConfigToParams.d.ts +0 -2
- package/dist/Audio/Adapters/ConfigToParams.js +0 -2
- package/dist/Audio/Adapters/ConfigToParams.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Models3d/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TAnimations, TAnimationsResourceAsyncRegistry } from '@Anarchy/Engine/Animations';\nimport type { PrimitiveModel3dType } from '@Anarchy/Engine/Models3d/Constants';\nimport type { TModel3dConfig, TModel3dConfigToParamsDependencies, TModel3dParams, TModels3dResourceAsyncRegistry } from '@Anarchy/Engine/Models3d/Models';\nimport { isPrimitiveModel3dData } from '@Anarchy/Engine/Models3d/Utils';\nimport {
|
|
1
|
+
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Models3d/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TAnimations, TAnimationsResourceAsyncRegistry } from '@Anarchy/Engine/Animations';\nimport type { PrimitiveModel3dType } from '@Anarchy/Engine/Models3d/Constants';\nimport type { TModel3dConfig, TModel3dConfigToParamsDependencies, TModel3dParams, TModels3dResourceAsyncRegistry } from '@Anarchy/Engine/Models3d/Models';\nimport { isPrimitiveModel3dData } from '@Anarchy/Engine/Models3d/Utils';\nimport { object3dConfigToParams } from '@Anarchy/Engine/ThreeLib';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { AnimationClip } from 'three';\nimport type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';\n\nexport function model3dConfigToParams(config: TModel3dConfig, { animationsResourceAsyncRegistry, materialRegistry, model3dResourceAsyncRegistry }: TModel3dConfigToParamsDependencies): TModel3dParams {\n const { position, rotation, material, scale, ...rest } = config;\n\n return {\n ...rest,\n ...object3dConfigToParams({ position, rotation, scale }),\n animationsSource: getAnimationsSource(config, animationsResourceAsyncRegistry),\n model3dSource: getModel3d(config, model3dResourceAsyncRegistry),\n material: isDefined(material) ? materialRegistry.getByName(material) : undefined\n };\n}\n\nfunction getModel3d(config: TModel3dConfig, model3dResourceAsyncRegistry: TModels3dResourceAsyncRegistry): GLTF | PrimitiveModel3dType | never {\n let model3d: GLTF | PrimitiveModel3dType | undefined;\n if (isPrimitiveModel3dData(config)) {\n model3d = config.model3dSource as PrimitiveModel3dType;\n } else {\n model3d = isDefined(config.model3dSource) ? model3dResourceAsyncRegistry.getByKey(config.model3dSource) : undefined;\n }\n\n if (isNotDefined(model3d)) throw new Error(`Model3dConfigAdapter: model3dSource not found: ${config.model3dSource}`);\n\n return model3d;\n}\n\nfunction getAnimationsSource(config: TModel3dConfig, animationsResourceAsyncRegistry: TAnimationsResourceAsyncRegistry): ReadonlyArray<AnimationClip> | never {\n let animations: ReadonlyArray<AnimationClip> = [];\n if (isDefined(config.animationsSource)) {\n config.animationsSource.forEach((source: string): void => {\n const loaded: TAnimations = animationsResourceAsyncRegistry.getByKey(source);\n animations = [...animations, ...loaded];\n });\n }\n\n return animations;\n}\n"],"names":["model3dConfigToParams","config","animationsResourceAsyncRegistry","materialRegistry","model3dResourceAsyncRegistry","position","rotation","material","scale","rest","object3dConfigToParams","animationsSource","getAnimationsSource","model3dSource","getModel3d","isDefined","getByName","model3d","isPrimitiveModel3dData","getByKey","isNotDefined","Error","animations","forEach","source","loaded"],"mappings":"2OASO,SAASA,sBAAsBC,QAAwBC,gCAAEA,gCAAAC,iBAAiCA,iBAAAC,6BAAkBA,+BACjH,MAAMC,SAAEA,SAAAC,SAAUA,SAAAC,SAAUA,eAAUC,SAAUC,MAASR,OAEzD,MAAO,IACFQ,QACAC,uBAAuB,CAAEL,kBAAUC,kBAAUE,cAChDG,iBAAkBC,oBAAoBX,OAAQC,iCAC9CW,cAAeC,WAAWb,OAAQG,8BAClCG,SAAUQ,UAAUR,UAAYJ,iBAAiBa,UAAUT,eAAY,EAE3E,CAEA,SAASO,WAAWb,OAAwBG,8BAC1C,IAAIa,QAOJ,GALEA,QADEC,uBAAuBjB,QACfA,OAAOY,cAEPE,UAAUd,OAAOY,eAAiBT,6BAA6Be,SAASlB,OAAOY,oBAAiB,EAGxGO,aAAaH,SAAU,MAAM,IAAII,MAAM,kDAAkDpB,OAAOY,iBAEpG,OAAOI,OACT,CAEA,SAASL,oBAAoBX,OAAwBC,iCACnD,IAAIoB,WAA2C,GAQ/C,OAPIP,UAAUd,OAAOU,mBACnBV,OAAOU,iBAAiBY,QAASC,SAC/B,MAAMC,OAAsBvB,gCAAgCiB,SAASK,QACrEF,WAAa,IAAIA,cAAeG,UAI7BH,UACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TModel3d, TModel3dConfig, TModel3dConfigToParamsDependencies } from '../Models';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function model3dEntityToConfig(entity: TModel3d, { animationsResourceAsyncRegistry, model3dResourceAsyncRegistry }: Pick<TModel3dConfigToParamsDependencies, 'animationsResourceAsyncRegistry' | 'model3dResourceAsyncRegistry'>): TModel3dConfig;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isNotDefined,isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{isPrimitiveModel3dSource}from"../Utils/UtilsPrimitiveModels3d.js";import{animationActionToConfig}from"../../Animations/Adapters/EntityToConfig.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";import{vector3ToXyz,eulerToXyz}from"../../Utils/TransformUtils.js";function
|
|
1
|
+
import{isNotDefined,isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{isPrimitiveModel3dSource}from"../Utils/UtilsPrimitiveModels3d.js";import{animationActionToConfig}from"../../Animations/Adapters/EntityToConfig.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";import{vector3ToXyz,eulerToXyz}from"../../Utils/TransformUtils.js";function model3dEntityToConfig(entity,{animationsResourceAsyncRegistry:animationsResourceAsyncRegistry,model3dResourceAsyncRegistry:model3dResourceAsyncRegistry}){const rawModel3d=entity.getRawModel3d(),params=entity.getParams(),model3dSource=isPrimitiveModel3dSource(params.model3dSource)?params.model3dSource:function(entity,model3dResourceAsyncRegistry){const modelId=entity.forceClone?entity.getParams().model3dSource.scene.uuid:entity.getRawModel3d().uuid;return model3dResourceAsyncRegistry.findKey(val=>val.scene.uuid===modelId)}(entity,model3dResourceAsyncRegistry);if(isNotDefined(model3dSource))throw new Error(`[Serialization] Model3d: model3dSource not found for entity with name: "${entity.name}", (id: "${entity.id}")`);const material=isDefined(params.material)?params.material.name:void 0;return filterOutEmptyFields({model3dSource:model3dSource,material:material,animationsSource:getAllAnimationsSource(entity,animationsResourceAsyncRegistry),animationsState:serializeActiveAnimations(entity),options:params.options,forceClone:entity.forceClone,castShadow:rawModel3d.castShadow,receiveShadow:rawModel3d.receiveShadow,position:vector3ToXyz(rawModel3d.position),rotation:eulerToXyz(rawModel3d.rotation),scale:vector3ToXyz(rawModel3d.scale),...extractSerializableRegistrableFields(entity)})}function getAllAnimationsSource(entity,animationsResourceAsyncRegistry){const animationsSource=entity.getAnimations().map(animation=>animationsResourceAsyncRegistry.findKey(val=>val[0]===animation)).filter(isDefined);return animationsSource.length>0?animationsSource:void 0}function serializeActiveAnimations(entity){return Object.values(entity.actions).filter(action=>action.isRunning()||action.enabled&&action.weight>.001).map(animationActionToConfig)}export{model3dEntityToConfig};
|
|
2
2
|
//# sourceMappingURL=EntityToConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Models3d/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAnimationStateConfig } from '@Anarchy/Engine/Animations';\nimport { animationActionToConfig } from '@Anarchy/Engine/Animations/Adapters';\nimport type { TAnimations, TAnimationsResourceAsyncRegistry } from '@Anarchy/Engine/Animations/Models';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { PrimitiveModel3dType } from '@Anarchy/Engine/Models3d/Constants';\nimport type { TModel3d, TModel3dConfig, TModel3dConfigToParamsDependencies, TModel3dParams, TModels3dResourceAsyncRegistry, TRawModel3d } from '@Anarchy/Engine/Models3d/Models';\nimport { isPrimitiveModel3dSource } from '@Anarchy/Engine/Models3d/Utils';\nimport { eulerToXyz, vector3ToXyz } from '@Anarchy/Engine/Utils';\nimport { filterOutEmptyFields, isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { AnimationAction, AnimationClip } from 'three';\nimport type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';\n\nexport function
|
|
1
|
+
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Models3d/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAnimationStateConfig } from '@Anarchy/Engine/Animations';\nimport { animationActionToConfig } from '@Anarchy/Engine/Animations/Adapters';\nimport type { TAnimations, TAnimationsResourceAsyncRegistry } from '@Anarchy/Engine/Animations/Models';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { PrimitiveModel3dType } from '@Anarchy/Engine/Models3d/Constants';\nimport type { TModel3d, TModel3dConfig, TModel3dConfigToParamsDependencies, TModel3dParams, TModels3dResourceAsyncRegistry, TRawModel3d } from '@Anarchy/Engine/Models3d/Models';\nimport { isPrimitiveModel3dSource } from '@Anarchy/Engine/Models3d/Utils';\nimport { eulerToXyz, vector3ToXyz } from '@Anarchy/Engine/Utils';\nimport { filterOutEmptyFields, isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { AnimationAction, AnimationClip } from 'three';\nimport type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';\n\nexport function model3dEntityToConfig(\n entity: TModel3d,\n { animationsResourceAsyncRegistry, model3dResourceAsyncRegistry }: Pick<TModel3dConfigToParamsDependencies, 'animationsResourceAsyncRegistry' | 'model3dResourceAsyncRegistry'>\n): TModel3dConfig {\n const rawModel3d: TRawModel3d = entity.getRawModel3d();\n\n const params: TModel3dParams = entity.getParams();\n const isPrimitive: boolean = isPrimitiveModel3dSource(params.model3dSource);\n\n const model3dSource: string | undefined = isPrimitive ? (params.model3dSource as PrimitiveModel3dType) : getComplexModel3dSource(entity, model3dResourceAsyncRegistry);\n if (isNotDefined(model3dSource)) throw new Error(`[Serialization] Model3d: model3dSource not found for entity with name: \"${entity.name}\", (id: \"${entity.id}\")`);\n const material: string | undefined = isDefined(params.material) ? params.material.name : undefined;\n\n return filterOutEmptyFields({\n model3dSource,\n material,\n animationsSource: getAllAnimationsSource(entity, animationsResourceAsyncRegistry),\n animationsState: serializeActiveAnimations(entity),\n options: params.options,\n forceClone: entity.forceClone,\n castShadow: rawModel3d.castShadow,\n receiveShadow: rawModel3d.receiveShadow,\n position: vector3ToXyz(rawModel3d.position),\n rotation: eulerToXyz(rawModel3d.rotation),\n scale: vector3ToXyz(rawModel3d.scale),\n ...extractSerializableRegistrableFields(entity)\n });\n}\n\nfunction getComplexModel3dSource(entity: TModel3d, model3dResourceAsyncRegistry: TModels3dResourceAsyncRegistry): string | undefined {\n // For cloned models we need to use the ID from the params\n const modelId: string = !entity.forceClone ? entity.getRawModel3d().uuid : (entity.getParams().model3dSource as GLTF).scene.uuid;\n return model3dResourceAsyncRegistry.findKey((val: GLTF): boolean => val.scene.uuid === modelId);\n}\n\nfunction getAllAnimationsSource(entity: TModel3d, animationsResourceAsyncRegistry: TAnimationsResourceAsyncRegistry): ReadonlyArray<string> | undefined {\n const allAnimations: ReadonlyArray<AnimationClip> = entity.getAnimations();\n\n const animationsSource: ReadonlyArray<string> = allAnimations\n .map((animation: AnimationClip): string | undefined => {\n return animationsResourceAsyncRegistry.findKey((val: TAnimations): boolean => {\n return val[0] === animation;\n });\n })\n .filter(isDefined);\n\n return animationsSource.length > 0 ? animationsSource : undefined;\n}\n\nfunction serializeActiveAnimations(entity: TModel3d): ReadonlyArray<TAnimationStateConfig> {\n const MIN_WEIGHT = 1e-3;\n return Object.values(entity.actions)\n .filter((action: AnimationAction): boolean => {\n return action.isRunning() || (action.enabled && action.weight > MIN_WEIGHT);\n })\n .map(animationActionToConfig);\n}\n"],"names":["model3dEntityToConfig","entity","animationsResourceAsyncRegistry","model3dResourceAsyncRegistry","rawModel3d","getRawModel3d","params","getParams","model3dSource","isPrimitiveModel3dSource","modelId","forceClone","scene","uuid","findKey","val","getComplexModel3dSource","isNotDefined","Error","name","id","material","isDefined","filterOutEmptyFields","animationsSource","getAllAnimationsSource","animationsState","serializeActiveAnimations","options","castShadow","receiveShadow","position","vector3ToXyz","rotation","eulerToXyz","scale","extractSerializableRegistrableFields","getAnimations","map","animation","filter","length","Object","values","actions","action","isRunning","enabled","weight","animationActionToConfig"],"mappings":"ggBAYO,SAASA,sBACdC,QACAC,gCAAEA,gCAAAC,6BAAiCA,+BAEnC,MAAMC,WAA0BH,OAAOI,gBAEjCC,OAAyBL,OAAOM,YAGhCC,cAFuBC,yBAAyBH,OAAOE,eAEJF,OAAOE,cAoBlE,SAAiCP,OAAkBE,8BAEjD,MAAMO,QAAmBT,OAAOU,WAA4CV,OAAOM,YAAYC,cAAuBI,MAAMC,KAA/EZ,OAAOI,gBAAgBQ,KACpE,OAAOV,6BAA6BW,QAASC,KAAuBA,IAAIH,MAAMC,OAASH,QACzF,CAxB2GM,CAAwBf,OAAQE,8BACzI,GAAIc,aAAaT,eAAgB,MAAM,IAAIU,MAAM,2EAA2EjB,OAAOkB,gBAAgBlB,OAAOmB,QAC1J,MAAMC,SAA+BC,UAAUhB,OAAOe,UAAYf,OAAOe,SAASF,UAAO,EAEzF,OAAOI,qBAAqB,CAC1Bf,4BACAa,kBACAG,iBAAkBC,uBAAuBxB,OAAQC,iCACjDwB,gBAAiBC,0BAA0B1B,QAC3C2B,QAAStB,OAAOsB,QAChBjB,WAAYV,OAAOU,WACnBkB,WAAYzB,WAAWyB,WACvBC,cAAe1B,WAAW0B,cAC1BC,SAAUC,aAAa5B,WAAW2B,UAClCE,SAAUC,WAAW9B,WAAW6B,UAChCE,MAAOH,aAAa5B,WAAW+B,UAC5BC,qCAAqCnC,SAE5C,CAQA,SAASwB,uBAAuBxB,OAAkBC,iCAChD,MAEMsB,iBAF8CvB,OAAOoC,gBAGxDC,IAAKC,WACGrC,gCAAgCY,QAASC,KACvCA,IAAI,KAAOwB,YAGrBC,OAAOlB,WAEV,OAAOE,iBAAiBiB,OAAS,EAAIjB,sBAAmB,CAC1D,CAEA,SAASG,0BAA0B1B,QAEjC,OAAOyC,OAAOC,OAAO1C,OAAO2C,SACzBJ,OAAQK,QACAA,OAAOC,aAAgBD,OAAOE,SAAWF,OAAOG,OAHxC,MAKhBV,IAAIW,wBACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{isModel3dAlreadyInUse,createModels3dEntities}from"../Utils/UtilsModel3d.js";import{withModel3dEntities}from"../Mixins/WithModel3dEntities.js";import{applyScaleToModel3d,applyRotationToModel3d,applyPositionToModel3d,applyObject3dParamsToModel3d}from"../Utils/UtilsModels3dService.js";import{withObject3d}from"../../Mixins/GameObjects/Mixins/WithObject3D.js";import{destroyModel3dAnimationEntities,disposeGltf}from"../../Utils/DestroyUtils.js";import{applyObject3dParams}from"../../Utils/WrapperHelpers.js";import{applyAnimationsState}from"../Utils/SerializationUtils.js";import{
|
|
1
|
+
import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{isModel3dAlreadyInUse,createModels3dEntities}from"../Utils/UtilsModel3d.js";import{withModel3dEntities}from"../Mixins/WithModel3dEntities.js";import{applyScaleToModel3d,applyRotationToModel3d,applyPositionToModel3d,applyObject3dParamsToModel3d}from"../Utils/UtilsModels3dService.js";import{withObject3d}from"../../Mixins/GameObjects/Mixins/WithObject3D.js";import{destroyModel3dAnimationEntities,disposeGltf}from"../../Utils/DestroyUtils.js";import{applyObject3dParams}from"../../Utils/WrapperHelpers.js";import{applyAnimationsState}from"../Utils/SerializationUtils.js";import{model3dEntityToConfig}from"../Adapters/EntityToConfig.js";import{AbstractEntity}from"../../Abstract/Entities/AbstractEntity.js";import{EntityType}from"../../Abstract/Constants/EntityType.js";import{mergeAll}from"../../Utils/ObjectUtils.js";function Model3d(params,{animationsService:animationsService,model3dRawToModel3dConnectionRegistry:model3dRawToModel3dConnectionRegistry}){const shouldForceClone=params.forceClone??isModel3dAlreadyInUse(params.model3dSource,model3dRawToModel3dConnectionRegistry);let entities=createModels3dEntities({...params,forceClone:shouldForceClone},animationsService);const abstract=AbstractEntity(withModel3dEntities(entities),EntityType.Model3d,params);isDefined(params.scale)&&applyScaleToModel3d(abstract.getRawModel3d(),params.scale),isDefined(params.rotation)&&applyRotationToModel3d(abstract.getRawModel3d(),params.rotation),isDefined(params.position)&&applyPositionToModel3d(abstract.getRawModel3d(),params.position),applyObject3dParamsToModel3d(abstract.getRawModel3d(),params),model3dRawToModel3dConnectionRegistry.addModel3d(abstract.getRawModel3d(),abstract);const preResult=withObject3d(abstract.getRawModel3d()),result=mergeAll(preResult,abstract,{getParams:()=>({...params}),serialize:dependencies=>model3dEntityToConfig(result,dependencies)}),destroySub$=abstract.destroy$.subscribe(()=>{destroySub$.unsubscribe(),model3dRawToModel3dConnectionRegistry.removeByModel3d(result.getRawModel3d(),!0),destroyModel3dAnimationEntities(abstract),disposeGltf(abstract.getRawModel3d()),entities=null});return applyObject3dParams(result,params),applyAnimationsState(result,params),result}export{Model3d};
|
|
2
2
|
//# sourceMappingURL=Model3d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Model3d.js","sources":["../../../src/Models3d/Entities/Model3d.ts"],"sourcesContent":["import type { TAbstractEntity } from '@Anarchy/Engine/Abstract';\nimport { AbstractEntity, EntityType } from '@Anarchy/Engine/Abstract';\nimport { withObject3d } from '@Anarchy/Engine/Mixins';\nimport {
|
|
1
|
+
{"version":3,"file":"Model3d.js","sources":["../../../src/Models3d/Entities/Model3d.ts"],"sourcesContent":["import type { TAbstractEntity } from '@Anarchy/Engine/Abstract';\nimport { AbstractEntity, EntityType } from '@Anarchy/Engine/Abstract';\nimport { withObject3d } from '@Anarchy/Engine/Mixins';\nimport { model3dEntityToConfig } from '@Anarchy/Engine/Models3d/Adapters';\nimport { withModel3dEntities } from '@Anarchy/Engine/Models3d/Mixins';\nimport type { TModel3d, TModel3dConfig, TModel3dConfigToParamsDependencies, TModel3dDependencies, TModel3dEntities, TModel3dParams, TWithModel3dEntities } from '@Anarchy/Engine/Models3d/Models';\nimport {\n applyAnimationsState,\n applyObject3dParamsToModel3d,\n applyPositionToModel3d,\n applyRotationToModel3d,\n applyScaleToModel3d,\n createModels3dEntities,\n isModel3dAlreadyInUse\n} from '@Anarchy/Engine/Models3d/Utils';\nimport { applyObject3dParams, destroyModel3dAnimationEntities, disposeGltf, mergeAll } from '@Anarchy/Engine/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\n\nexport function Model3d(params: TModel3dParams, { animationsService, model3dRawToModel3dConnectionRegistry }: TModel3dDependencies): TModel3d {\n const shouldForceClone: boolean = params.forceClone ?? isModel3dAlreadyInUse(params.model3dSource, model3dRawToModel3dConnectionRegistry);\n let entities: TModel3dEntities = createModels3dEntities({ ...params, forceClone: shouldForceClone }, animationsService);\n const abstract: TAbstractEntity<TWithModel3dEntities> = AbstractEntity(withModel3dEntities(entities), EntityType.Model3d, params);\n\n const getParams = (): TModel3dParams => ({ ...params });\n\n // Maybe we should apply all the params from object3d (can we do it in a more generic way?)\n //applying model's params\n if (isDefined(params.scale)) applyScaleToModel3d(abstract.getRawModel3d(), params.scale);\n if (isDefined(params.rotation)) applyRotationToModel3d(abstract.getRawModel3d(), params.rotation);\n if (isDefined(params.position)) applyPositionToModel3d(abstract.getRawModel3d(), params.position);\n applyObject3dParamsToModel3d(abstract.getRawModel3d(), params);\n\n model3dRawToModel3dConnectionRegistry.addModel3d(abstract.getRawModel3d(), abstract as TModel3d);\n\n const preResult = withObject3d(abstract.getRawModel3d());\n const result: TModel3d = mergeAll(preResult, abstract, {\n getParams,\n serialize: (dependencies: TModel3dConfigToParamsDependencies): TModel3dConfig => model3dEntityToConfig(result, dependencies)\n });\n\n const destroySub$: Subscription = abstract.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n model3dRawToModel3dConnectionRegistry.removeByModel3d(result.getRawModel3d(), true);\n\n destroyModel3dAnimationEntities(abstract);\n\n // TODO MODELS: This is not tested yet. This dispose function could remove resources (e.g. textures) that could be used by other models.\n disposeGltf(abstract.getRawModel3d());\n entities = null as any;\n });\n\n applyObject3dParams(result, params);\n applyAnimationsState(result, params);\n\n return result;\n}\n"],"names":["Model3d","params","animationsService","model3dRawToModel3dConnectionRegistry","shouldForceClone","forceClone","isModel3dAlreadyInUse","model3dSource","entities","createModels3dEntities","abstract","AbstractEntity","withModel3dEntities","EntityType","isDefined","scale","getRawModel3d","rotation","position","applyObject3dParamsToModel3d","addModel3d","preResult","withObject3d","result","mergeAll","getParams","serialize","dependencies","model3dEntityToConfig","destroySub$","destroy$","subscribe","unsubscribe","removeByModel3d","destroyModel3dAnimationEntities","disposeGltf","applyObject3dParams","applyAnimationsState"],"mappings":"q4BAmBO,SAASA,QAAQC,QAAwBC,kBAAEA,kBAAAC,sCAAmBA,wCACnE,MAAMC,iBAA4BH,OAAOI,YAAcC,sBAAsBL,OAAOM,cAAeJ,uCACnG,IAAIK,SAA6BC,uBAAuB,IAAKR,OAAQI,WAAYD,kBAAoBF,mBACrG,MAAMQ,SAAkDC,eAAeC,oBAAoBJ,UAAWK,WAAWb,QAASC,QAMtHa,UAAUb,OAAOc,4BAA4BL,SAASM,gBAAiBf,OAAOc,OAC9ED,UAAUb,OAAOgB,kCAAkCP,SAASM,gBAAiBf,OAAOgB,UACpFH,UAAUb,OAAOiB,kCAAkCR,SAASM,gBAAiBf,OAAOiB,UACxFC,6BAA6BT,SAASM,gBAAiBf,QAEvDE,sCAAsCiB,WAAWV,SAASM,gBAAiBN,UAE3E,MAAMW,UAAYC,aAAaZ,SAASM,iBAClCO,OAAmBC,SAASH,UAAWX,SAAU,CACrDe,UAbgB,KAAA,IAA4BxB,SAc5CyB,UAAYC,cAAqEC,sBAAsBL,OAAQI,gBAG3GE,YAA4BnB,SAASoB,SAASC,UAAU,KAC5DF,YAAYG,cACZ7B,sCAAsC8B,gBAAgBV,OAAOP,iBAAiB,GAE9EkB,gCAAgCxB,UAGhCyB,YAAYzB,SAASM,iBACrBR,SAAW,OAMb,OAHA4B,oBAAoBb,OAAQtB,QAC5BoC,qBAAqBd,OAAQtB,QAEtBsB,MACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{model3dConfigToParams}from"../Adapters/ConfigToParams.js";import{Model3d}from"../Entities/Model3d.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function Models3dFactory(){const factory=ReactiveFactory(FactoryType.Models3d,Model3d);return Object.assign(factory,{configToParams:model3dConfigToParams})}export{Models3dFactory};
|
|
2
2
|
//# sourceMappingURL=Models3dFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Models3dFactory.js","sources":["../../../src/Models3d/Factories/Models3dFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport {
|
|
1
|
+
{"version":3,"file":"Models3dFactory.js","sources":["../../../src/Models3d/Factories/Models3dFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { model3dConfigToParams } from '@Anarchy/Engine/Models3d/Adapters';\nimport { Model3d } from '@Anarchy/Engine/Models3d/Entities';\nimport type { TModel3d, TModel3dParams, TModels3dFactory, TModels3dServiceDependencies } from '@Anarchy/Engine/Models3d/Models';\n\nexport function Models3dFactory(): TModels3dFactory {\n const factory: TReactiveFactory<TModel3d, TModel3dParams, Pick<TModels3dServiceDependencies, 'animationsService' | 'model3dRawToModel3dConnectionRegistry'>> = ReactiveFactory(\n FactoryType.Models3d,\n Model3d\n );\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: model3dConfigToParams });\n}\n"],"names":["Models3dFactory","factory","ReactiveFactory","FactoryType","Models3d","Model3d","Object","assign","configToParams","model3dConfigToParams"],"mappings":"uPAMO,SAASA,kBACd,MAAMC,QAAyJC,gBAC7JC,YAAYC,SACZC,SAIF,OAAOC,OAAOC,OAAON,QAAS,CAAEO,eAAgBC,uBAClD"}
|
package/dist/Models3d/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TParticlesConfig, TParticlesConfigToParamsDependencies, TParticlesParams } from '../Models';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function particlesConfigToParams(config: TParticlesConfig, { materialRegistry }: TParticlesConfigToParamsDependencies): TParticlesParams | never;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{object3dConfigToParams}from"../../ThreeLib/Utils/Object3dUtils.js";function particlesConfigToParams(config,{materialRegistry:materialRegistry}){const{position:position,rotation:rotation,layers:layers,scale:scale,...rest}=config,material=materialRegistry.getByName(config.material);return{...rest,...object3dConfigToParams({position:position,rotation:rotation,scale:scale,layers:layers}),material:material}}export{particlesConfigToParams};
|
|
2
2
|
//# sourceMappingURL=ConfigToParams.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Particles/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TAnyMaterialWrapper } from '@Anarchy/Engine/Material';\nimport type { TParticlesConfig, TParticlesConfigToParamsDependencies, TParticlesParams } from '@Anarchy/Engine/Particles/Models';\nimport {
|
|
1
|
+
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Particles/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TAnyMaterialWrapper } from '@Anarchy/Engine/Material';\nimport type { TParticlesConfig, TParticlesConfigToParamsDependencies, TParticlesParams } from '@Anarchy/Engine/Particles/Models';\nimport { object3dConfigToParams } from '@Anarchy/Engine/ThreeLib';\n\nexport function particlesConfigToParams(config: TParticlesConfig, { materialRegistry }: TParticlesConfigToParamsDependencies): TParticlesParams | never {\n const { position, rotation, layers, scale, ...rest } = config;\n const material: TAnyMaterialWrapper = materialRegistry.getByName(config.material);\n\n return {\n ...rest,\n ...object3dConfigToParams({ position, rotation, scale, layers }),\n material\n };\n}\n"],"names":["particlesConfigToParams","config","materialRegistry","position","rotation","layers","scale","rest","material","getByName","object3dConfigToParams"],"mappings":"0EAIO,SAASA,wBAAwBC,QAA0BC,iBAAEA,mBAClE,MAAMC,SAAEA,SAAAC,SAAUA,SAAAC,OAAUA,aAAQC,SAAUC,MAASN,OACjDO,SAAgCN,iBAAiBO,UAAUR,OAAOO,UAExE,MAAO,IACFD,QACAG,uBAAuB,CAAEP,kBAAUC,kBAAUE,YAAOD,gBACvDG,kBAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TParticlesConfig, TParticlesConfigToParamsDependencies, TParticlesWrapper } from '../Models';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function particlesEntityToConfig(entity: TParticlesWrapper, { materialRegistry }: TParticlesConfigToParamsDependencies): TParticlesConfig;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function
|
|
1
|
+
import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function particlesEntityToConfig(entity,{materialRegistry:materialRegistry}){const{drive:drive}=entity,materialW=materialRegistry.get(materialW2=>materialW2.entity===entity.entity.material);return filterOutEmptyFields({material:materialW.name,...extractSerializableRegistrableFields(entity),...drive.serialize()})}export{particlesEntityToConfig};
|
|
2
2
|
//# sourceMappingURL=EntityToConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Particles/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAnyMaterialWrapper } from '@Anarchy/Engine/Material';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TParticlesConfig, TParticlesConfigToParamsDependencies, TParticlesWrapper } from '@Anarchy/Engine/Particles/Models';\nimport { filterOutEmptyFields } from '@Anarchy/Shared/Utils';\n\nexport function
|
|
1
|
+
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Particles/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAnyMaterialWrapper } from '@Anarchy/Engine/Material';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TParticlesConfig, TParticlesConfigToParamsDependencies, TParticlesWrapper } from '@Anarchy/Engine/Particles/Models';\nimport { filterOutEmptyFields } from '@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,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{particlesConfigToParams}from"../Adapters/ConfigToParams.js";import{ParticlesWrapper}from"../Wrappers/ParticlesWrapper.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function ParticlesFactory(){const factory=ReactiveFactory(FactoryType.Particles,ParticlesWrapper);return Object.assign(factory,{configToParams:particlesConfigToParams})}export{ParticlesFactory};
|
|
2
2
|
//# sourceMappingURL=ParticlesFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticlesFactory.js","sources":["../../../src/Particles/Factories/ParticlesFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport {
|
|
1
|
+
{"version":3,"file":"ParticlesFactory.js","sources":["../../../src/Particles/Factories/ParticlesFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { particlesConfigToParams } from '@Anarchy/Engine/Particles/Adapters';\nimport type { TParticlesFactory, TParticlesParams, TParticlesServiceDependencies, TParticlesWrapper } from '@Anarchy/Engine/Particles/Models';\nimport { ParticlesWrapper } from '@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,2 +1,2 @@
|
|
|
1
|
-
import{BufferGeometry,Points,BufferAttribute}from"three";import{isPointsMaterial}from"../../Material/Utils/MaterialUtils.js";import{ParticlesTransformDrive}from"../TransformDrive/ParticlesTransformDrive.js";import{
|
|
1
|
+
import{BufferGeometry,Points,BufferAttribute}from"three";import{isPointsMaterial}from"../../Material/Utils/MaterialUtils.js";import{ParticlesTransformDrive}from"../TransformDrive/ParticlesTransformDrive.js";import{particlesEntityToConfig}from"../Adapters/EntityToConfig.js";import{withMaterial}from"../../Material/Mixins/WithMaterial.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";import{DriveToTargetConnector}from"../../TransformDrive/Entities/Connectors/DriveToTargetConnector.js";import{withObject3d}from"../../Mixins/GameObjects/Mixins/WithObject3D.js";import{applyObject3dParams}from"../../Utils/WrapperHelpers.js";function ParticlesWrapper(params,dependencies){let geometry=new BufferGeometry,entity=new Points(geometry,params.material.entity);const{material:material}=entity;if(!isPointsMaterial(material))throw new Error("Material is not PointsMaterial or not defined");const withMaterialEntity=withMaterial(entity),wrapper=AbstractWrapper(entity,WrapperType.Particles,params),drive=ParticlesTransformDrive(params,dependencies,wrapper.id),driveToTargetConnector=DriveToTargetConnector(drive,entity),result=Object.assign(wrapper,{drive:drive,driveToTargetConnector:driveToTargetConnector,...withObject3d(entity),...withMaterialEntity,setMaterialColor:color=>{material.color=color},getMaterialColor:()=>material.color,setIndividualMaterialColors:colors=>{geometry.setAttribute("color",new BufferAttribute(colors,3))},getIndividualMaterialColors:()=>geometry.getAttribute("color").array,setIndividualPositions:positions=>{geometry.setAttribute("position",new BufferAttribute(positions,3))},getIndividualPositions:()=>geometry.getAttribute("position").array,entity:entity,serialize:()=>particlesEntityToConfig(result,{materialRegistry:dependencies.materialService.getRegistry()})});applyObject3dParams(result,params);const destroySub$=result.destroy$.subscribe(()=>{destroySub$.unsubscribe(),geometry=null,entity=null,result.entity=null});return result}export{ParticlesWrapper};
|
|
2
2
|
//# sourceMappingURL=ParticlesWrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticlesWrapper.js","sources":["../../../src/Particles/Wrappers/ParticlesWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport type { TColor } from '@Anarchy/Engine/Color';\nimport type { TWithMaterial } from '@Anarchy/Engine/Material';\nimport { isPointsMaterial, withMaterial } from '@Anarchy/Engine/Material';\nimport { withObject3d } from '@Anarchy/Engine/Mixins';\nimport {
|
|
1
|
+
{"version":3,"file":"ParticlesWrapper.js","sources":["../../../src/Particles/Wrappers/ParticlesWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport type { TColor } from '@Anarchy/Engine/Color';\nimport type { TWithMaterial } from '@Anarchy/Engine/Material';\nimport { isPointsMaterial, withMaterial } from '@Anarchy/Engine/Material';\nimport { withObject3d } from '@Anarchy/Engine/Mixins';\nimport { particlesEntityToConfig } from '@Anarchy/Engine/Particles/Adapters';\nimport type { TParticlesConfig, TParticlesParams, TParticlesServiceDependencies, TParticlesTransformDrive, TParticlesWrapper } from '@Anarchy/Engine/Particles/Models';\nimport { ParticlesTransformDrive } from '@Anarchy/Engine/Particles/TransformDrive';\nimport type { TBufferGeometry, TPoints } from '@Anarchy/Engine/ThreeLib';\nimport type { TDriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { DriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { applyObject3dParams } from '@Anarchy/Engine/Utils';\nimport type { TWriteable } from '@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
1
|
import { TPhysicsBody, TPhysicsBodyConfig, TPhysicsWorldConfig } from '../Models';
|
|
2
2
|
import { World } from '@dimforge/rapier3d';
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function physicsBodyEntityToConfig(entity: TPhysicsBody): TPhysicsBodyConfig;
|
|
4
4
|
export declare function physicWorldToConfig(world: World): TPhysicsWorldConfig;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{Euler,Quaternion}from"three";import{vector3ToXyz,eulerToXyz}from"../../Utils/TransformUtils.js";function
|
|
1
|
+
import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{Euler,Quaternion}from"three";import{vector3ToXyz,eulerToXyz}from"../../Utils/TransformUtils.js";function physicsBodyEntityToConfig(entity){const rigidBody=entity.getRigidBody(),collider=rigidBody?.collider(0);let rigidBodySettings={};isDefined(rigidBody)&&(rigidBodySettings={position:rigidBody.translation(),rotation:rigidBody.rotation(),linearVelocity:rigidBody.linvel(),angularVelocity:rigidBody.angvel(),type:entity.getPhysicsBodyType(),mass:rigidBody.mass(),gravityScale:rigidBody.gravityScale(),isSleep:rigidBody.isSleeping(),ccdEnabled:rigidBody.isCcdEnabled(),dominanceGroup:rigidBody.dominanceGroup()});let colliderSettings={};isDefined(collider)&&(colliderSettings={restitution:collider.restitution(),friction:collider.friction(),collisionGroups:collider.collisionGroups(),isSensor:collider.isSensor(),shapeParams:entity.getShapeParams()});const body=entity.getRigidBody()??entity.getCollider();let position={x:0,y:0,z:0},rotation={x:0,y:0,z:0};if(isDefined(body)){position=vector3ToXyz(body.translation());const bodyRotation=body.rotation();rotation=eulerToXyz((new Euler).setFromQuaternion(new Quaternion(bodyRotation.x,bodyRotation.y,bodyRotation.z,bodyRotation.w)))}return filterOutEmptyFields({collisionShape:entity.getPhysicsBodyShape(),...rigidBodySettings,...colliderSettings,name:entity.name,type:entity.getPhysicsBodyType(),shapeParams:entity.getShapeParams(),position:position,rotation:rotation})}function physicWorldToConfig(world){return{gravity:world.gravity,integrationParameters:{dt:world.integrationParameters.dt,lengthUnit:world.integrationParameters.lengthUnit,normalizedAllowedLinearError:world.integrationParameters.normalizedAllowedLinearError,normalizedPredictionDistance:world.integrationParameters.normalizedPredictionDistance,numSolverIterations:world.integrationParameters.numSolverIterations,numInternalPgsIterations:world.integrationParameters.numInternalPgsIterations,minIslandSize:world.integrationParameters.minIslandSize,maxCcdSubsteps:world.integrationParameters.maxCcdSubsteps}}}export{physicWorldToConfig,physicsBodyEntityToConfig};
|
|
2
2
|
//# sourceMappingURL=EntityToConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Physics/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TPhysicsBody, TPhysicsBodyConfig, TPhysicsWorldConfig } from '@Anarchy/Engine/Physics/Models';\nimport type { TEulerLike } from '@Anarchy/Engine/ThreeLib';\nimport { eulerToXyz, vector3ToXyz } from '@Anarchy/Engine/Utils';\nimport { filterOutEmptyFields, isDefined } from '@Anarchy/Shared/Utils';\nimport type { Collider, RigidBody, Rotation, World } from '@dimforge/rapier3d';\nimport type { Vector3Like } from 'three';\nimport { Euler, Quaternion } from 'three';\n\nexport function
|
|
1
|
+
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Physics/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TPhysicsBody, TPhysicsBodyConfig, TPhysicsWorldConfig } from '@Anarchy/Engine/Physics/Models';\nimport type { TEulerLike } from '@Anarchy/Engine/ThreeLib';\nimport { eulerToXyz, vector3ToXyz } from '@Anarchy/Engine/Utils';\nimport { filterOutEmptyFields, isDefined } from '@Anarchy/Shared/Utils';\nimport type { Collider, RigidBody, Rotation, World } from '@dimforge/rapier3d';\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
1
|
import { TPhysicsBodyConfig, TPhysicsBodyParams } from '../Models';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function physicsBodyConfigToParams(config: TPhysicsBodyConfig): TPhysicsBodyParams | never;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{Quaternion,Euler}from"three";import{Vector3}from"three/src/math/Vector3";import{isPhysicsBodyParamsComplete}from"../Utils/ParamsUtils.js";function
|
|
1
|
+
import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{Quaternion,Euler}from"three";import{Vector3}from"three/src/math/Vector3";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 '@Anarchy/Engine/Physics/Models';\nimport { isPhysicsBodyParamsComplete } from '@Anarchy/Engine/Physics/Utils';\nimport type { TOptional } from '@Anarchy/Shared/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport { Euler, Quaternion } from 'three';\nimport { Vector3 } from 'three/src/math/Vector3';\n\nexport function
|
|
1
|
+
{"version":3,"file":"PhysicsBodyConfigToParams.js","sources":["../../../src/Physics/Adapters/PhysicsBodyConfigToParams.ts"],"sourcesContent":["import type { TPhysicsBodyConfig, TPhysicsBodyParams } from '@Anarchy/Engine/Physics/Models';\nimport { isPhysicsBodyParamsComplete } from '@Anarchy/Engine/Physics/Utils';\nimport type { TOptional } from '@Anarchy/Shared/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport { Euler, Quaternion } from 'three';\nimport { Vector3 } from 'three/src/math/Vector3';\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":"8NAOO,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,2 +1,2 @@
|
|
|
1
1
|
import { TPhysicsWorldConfig, TPhysicsWorldParams } from '../Models';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function physicsWorldConfigToParams(config: TPhysicsWorldConfig): TPhysicsWorldParams | never;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function
|
|
1
|
+
function physicsWorldConfigToParams(config){return config}export{physicsWorldConfigToParams};
|
|
2
2
|
//# sourceMappingURL=PhysicsWorldConfigToParams.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsWorldConfigToParams.js","sources":["../../../src/Physics/Adapters/PhysicsWorldConfigToParams.ts"],"sourcesContent":["import type { TPhysicsWorldConfig, TPhysicsWorldParams } from '@Anarchy/Engine/Physics/Models';\n\nexport function
|
|
1
|
+
{"version":3,"file":"PhysicsWorldConfigToParams.js","sources":["../../../src/Physics/Adapters/PhysicsWorldConfigToParams.ts"],"sourcesContent":["import type { TPhysicsWorldConfig, TPhysicsWorldParams } from '@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{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{createPhysicsBodyEntities}from"./PhysicsBodyUtils.js";import{AbstractEntity}from"../../Abstract/Entities/AbstractEntity.js";import{EntityType}from"../../Abstract/Constants/EntityType.js";import{withPhysicsBodyEntities}from"../Mixins/WithPhysicsBodyEntities.js";import{
|
|
1
|
+
import{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{createPhysicsBodyEntities}from"./PhysicsBodyUtils.js";import{AbstractEntity}from"../../Abstract/Entities/AbstractEntity.js";import{EntityType}from"../../Abstract/Constants/EntityType.js";import{withPhysicsBodyEntities}from"../Mixins/WithPhysicsBodyEntities.js";import{physicsBodyEntityToConfig}from"../Adapters/EntityToConfig.js";import{RigidBodyTypesMap}from"../Constants/RigidBodyTypesMap.js";function PhysicsBody(params,{physicsWorldService:physicsWorldService}){const world=physicsWorldService.getWorld(),entities=createPhysicsBodyEntities(params,world),{isSleep:isSleep=!1}=params;isSleep&&entities.rigidBody?.sleep();const abstract=AbstractEntity(withPhysicsBodyEntities(entities),EntityType.PhysicsBody,params),destroySub$=abstract.destroy$.subscribe(()=>{isDefined(entities.rigidBody)&&world.removeRigidBody(entities.rigidBody),entities.rigidBody=null,isDefined(entities.collider)&&world.removeCollider(entities.collider,!0),entities.collider=null,destroySub$.unsubscribe()}),result=Object.assign(abstract,{setPhysicsBodyType:(type,wakeUp)=>{abstract.getRigidBody()?.setBodyType(RigidBodyTypesMap[type],wakeUp)},getPhysicsBodyType:()=>{const bodyType=abstract.getRigidBody()?.bodyType();if(isNotDefined(bodyType))return params.type;const match=Object.entries(RigidBodyTypesMap).find(([,value])=>value===bodyType),result2=match?.[0];if(isNotDefined(result2))throw new Error(`PhysicsBody: RigidBody type is not defined for object with name "${params.name}"`);return result2},getPhysicsBodyShape:()=>params.collisionShape,getShapeParams:()=>params.shapeParams,serialize:()=>physicsBodyEntityToConfig(result)});return result}export{PhysicsBody};
|
|
2
2
|
//# sourceMappingURL=PhysicsBody.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsBody.js","sources":["../../../src/Physics/Entities/PhysicsBody.ts"],"sourcesContent":["import { AbstractEntity, EntityType } from '@Anarchy/Engine/Abstract';\nimport {
|
|
1
|
+
{"version":3,"file":"PhysicsBody.js","sources":["../../../src/Physics/Entities/PhysicsBody.ts"],"sourcesContent":["import { AbstractEntity, EntityType } from '@Anarchy/Engine/Abstract';\nimport { physicsBodyEntityToConfig } from '@Anarchy/Engine/Physics/Adapters';\nimport type { CollisionShape, RigidBodyTypesNames } from '@Anarchy/Engine/Physics/Constants';\nimport { RigidBodyTypesMap } from '@Anarchy/Engine/Physics/Constants';\nimport { withPhysicsBodyEntities } from '@Anarchy/Engine/Physics/Mixins';\nimport type { TPhysicsBody, TPhysicsBodyConfig, TPhysicsBodyEntities, TPhysicsBodyParams, TPhysicsDependencies, TPhysicsShapeParams } from '@Anarchy/Engine/Physics/Models';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { RigidBodyType, World } from '@dimforge/rapier3d';\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,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{physicsBodyConfigToParams}from"../Adapters/PhysicsBodyConfigToParams.js";import{PhysicsBody}from"../Entities/PhysicsBody.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function PhysicsBodyFactory(){const factory=ReactiveFactory(FactoryType.PhysicsBody,PhysicsBody);return Object.assign(factory,{configToParams:physicsBodyConfigToParams})}export{PhysicsBodyFactory};
|
|
2
2
|
//# sourceMappingURL=PhysicsBodyFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsBodyFactory.js","sources":["../../../src/Physics/Factories/PhysicsBodyFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport {
|
|
1
|
+
{"version":3,"file":"PhysicsBodyFactory.js","sources":["../../../src/Physics/Factories/PhysicsBodyFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { physicsBodyConfigToParams } from '@Anarchy/Engine/Physics/Adapters';\nimport { PhysicsBody } from '@Anarchy/Engine/Physics/Entities';\nimport type { TPhysicsBody, TPhysicsBodyFactory, TPhysicsBodyParams, TPhysicsDependencies } from '@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,2 +1,2 @@
|
|
|
1
1
|
import { TRendererConfig, TRendererParams, TRendererServiceDependencies } from '../Models';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function rendererConfigToParams(config: TRendererConfig, { container }: TRendererServiceDependencies): TRendererParams | never;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";function
|
|
1
|
+
import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";function rendererConfigToParams(config,{container:container}){const{...rest}=config,canvas=container.canvas$.value;if(isNotDefined(canvas))throw new Error("Renderer: cannot convert config to params \u2013 canvas is not defined");return{...rest,canvas:canvas}}export{rendererConfigToParams};
|
|
2
2
|
//# sourceMappingURL=ConfigToParams.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Renderer/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TRendererConfig, TRendererParams, TRendererServiceDependencies } from '@Anarchy/Engine/Renderer/Models';\nimport type { TSpaceCanvas } from '@Anarchy/Engine/Space';\nimport { isNotDefined } from '@Anarchy/Shared/Utils';\n\nexport function
|
|
1
|
+
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Renderer/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TRendererConfig, TRendererParams, TRendererServiceDependencies } from '@Anarchy/Engine/Renderer/Models';\nimport type { TSpaceCanvas } from '@Anarchy/Engine/Space';\nimport { isNotDefined } from '@Anarchy/Shared/Utils';\n\nexport function rendererConfigToParams(config: TRendererConfig, { container }: TRendererServiceDependencies): TRendererParams | never {\n const { ...rest } = config;\n\n const canvas: TSpaceCanvas | undefined = container.canvas$.value;\n if (isNotDefined(canvas)) throw new Error('Renderer: cannot convert config to params – canvas is not defined');\n\n return {\n ...rest,\n canvas\n };\n}\n"],"names":["rendererConfigToParams","config","container","rest","canvas","canvas$","value","isNotDefined","Error"],"mappings":"gFAIO,SAASA,uBAAuBC,QAAyBC,UAAEA,YAChE,SAAWC,MAASF,OAEdG,OAAmCF,UAAUG,QAAQC,MAC3D,GAAIC,aAAaH,QAAS,MAAM,IAAII,MAAM,0EAE1C,MAAO,IACFL,KACHC,cAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TRendererConfig, TRendererWrapper } from '../Models';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function rendererEntityToConfig(entity: TRendererWrapper): TRendererConfig;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function
|
|
1
|
+
import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function rendererEntityToConfig(entity){const params=entity.getParams();return filterOutEmptyFields({precision:params.precision,alpha:params.alpha,premultipliedAlpha:params.premultipliedAlpha,antialias:params.antialias,stencil:params.stencil,preserveDrawingBuffer:params.preserveDrawingBuffer,powerPreference:params.powerPreference,depth:params.depth,logarithmicDepthBuffer:params.logarithmicDepthBuffer,failIfMajorPerformanceCaveat:params.failIfMajorPerformanceCaveat,mode:params.mode,isShadowMapEnabled:entity.isShadowMapEnabled(),maxPixelRatio:entity.entity.getPixelRatio(),isActive:entity.isActive(),...extractSerializableRegistrableFields(entity)})}export{rendererEntityToConfig};
|
|
2
2
|
//# sourceMappingURL=EntityToConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Renderer/Adapters/EntityToConfig.ts"],"sourcesContent":["import { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TRendererConfig, TRendererParams, TRendererWrapper } from '@Anarchy/Engine/Renderer/Models';\nimport { filterOutEmptyFields } from '@Anarchy/Shared/Utils';\n\nexport function
|
|
1
|
+
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Renderer/Adapters/EntityToConfig.ts"],"sourcesContent":["import { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TRendererConfig, TRendererParams, TRendererWrapper } from '@Anarchy/Engine/Renderer/Models';\nimport { filterOutEmptyFields } from '@Anarchy/Shared/Utils';\n\nexport function rendererEntityToConfig(entity: TRendererWrapper): TRendererConfig {\n const params: TRendererParams = entity.getParams();\n\n return filterOutEmptyFields({\n precision: params.precision,\n alpha: params.alpha,\n premultipliedAlpha: params.premultipliedAlpha,\n antialias: params.antialias,\n stencil: params.stencil,\n preserveDrawingBuffer: params.preserveDrawingBuffer,\n powerPreference: params.powerPreference,\n depth: params.depth,\n logarithmicDepthBuffer: params.logarithmicDepthBuffer,\n failIfMajorPerformanceCaveat: params.failIfMajorPerformanceCaveat,\n mode: params.mode,\n isShadowMapEnabled: entity.isShadowMapEnabled(),\n maxPixelRatio: entity.entity.getPixelRatio(),\n isActive: entity.isActive(),\n ...extractSerializableRegistrableFields(entity)\n });\n}\n"],"names":["rendererEntityToConfig","entity","params","getParams","filterOutEmptyFields","precision","alpha","premultipliedAlpha","antialias","stencil","preserveDrawingBuffer","powerPreference","depth","logarithmicDepthBuffer","failIfMajorPerformanceCaveat","mode","isShadowMapEnabled","maxPixelRatio","getPixelRatio","isActive","extractSerializableRegistrableFields"],"mappings":"yMAIO,SAASA,uBAAuBC,QACrC,MAAMC,OAA0BD,OAAOE,YAEvC,OAAOC,qBAAqB,CAC1BC,UAAWH,OAAOG,UAClBC,MAAOJ,OAAOI,MACdC,mBAAoBL,OAAOK,mBAC3BC,UAAWN,OAAOM,UAClBC,QAASP,OAAOO,QAChBC,sBAAuBR,OAAOQ,sBAC9BC,gBAAiBT,OAAOS,gBACxBC,MAAOV,OAAOU,MACdC,uBAAwBX,OAAOW,uBAC/BC,6BAA8BZ,OAAOY,6BACrCC,KAAMb,OAAOa,KACbC,mBAAoBf,OAAOe,qBAC3BC,cAAehB,OAAOA,OAAOiB,gBAC7BC,SAAUlB,OAAOkB,cACdC,qCAAqCnB,SAE5C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{rendererConfigToParams}from"../Adapters/ConfigToParams.js";import{RendererWrapper}from"../Wrappers/RendererWrapper.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function RendererFactory(){const factory=ReactiveFactory(FactoryType.Renderer,RendererWrapper);return Object.assign(factory,{configToParams:rendererConfigToParams})}export{RendererFactory};
|
|
2
2
|
//# sourceMappingURL=RendererFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RendererFactory.js","sources":["../../../src/Renderer/Factories/RendererFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport {
|
|
1
|
+
{"version":3,"file":"RendererFactory.js","sources":["../../../src/Renderer/Factories/RendererFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { rendererConfigToParams } from '@Anarchy/Engine/Renderer/Adapters';\nimport type { TRendererFactory, TRendererParams, TRendererWrapper, TRendererWrapperDependencies } from '@Anarchy/Engine/Renderer/Models';\nimport { RendererWrapper } from '@Anarchy/Engine/Renderer/Wrappers';\n\nexport function RendererFactory(): TRendererFactory {\n const factory: TReactiveFactory<TRendererWrapper, TRendererParams, TRendererWrapperDependencies> = ReactiveFactory(FactoryType.Renderer, RendererWrapper);\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: rendererConfigToParams });\n}\n"],"names":["RendererFactory","factory","ReactiveFactory","FactoryType","Renderer","RendererWrapper","Object","assign","configToParams","rendererConfigToParams"],"mappings":"wQAMO,SAASA,kBACd,MAAMC,QAA6FC,gBAAgBC,YAAYC,SAAUC,iBAGzI,OAAOC,OAAOC,OAAON,QAAS,CAAEO,eAAgBC,wBAClD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{isWebGLAvailable,isWebGL2Available}from"../../packages/anarchy-shared/src/Utils/WebGlUtils.js";import{WebGLRenderer,PCFShadowMap}from"three";import{getAccessors}from"./Accessors.js";import{BehaviorSubject}from"../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js";import{RendererModes}from"../Constants/RendererModes.js";import{distinctUntilChanged}from"../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js";import{
|
|
1
|
+
import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{isWebGLAvailable,isWebGL2Available}from"../../packages/anarchy-shared/src/Utils/WebGlUtils.js";import{WebGLRenderer,PCFShadowMap}from"three";import{getAccessors}from"./Accessors.js";import{BehaviorSubject}from"../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js";import{RendererModes}from"../Constants/RendererModes.js";import{distinctUntilChanged}from"../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js";import{rendererEntityToConfig}from"../Adapters/EntityToConfig.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";import{mergeAll}from"../../Utils/ObjectUtils.js";import{withActiveMixin}from"../../Mixins/Generics/WithActiveMixin.js";function RendererWrapper(params,{container:container,renderLoop:renderLoop}){const isRendererReady$=new BehaviorSubject(!1),maxPixelRatio=params.maxPixelRatio??2;if(isNotDefined(params.canvas))throw new Error("Canvas is not defined");if(!isWebGLAvailable())throw new Error("WebGL is not supported by this device");const isWebGL2=params.mode===RendererModes.WebGL2;if(isWebGL2&&!isWebGL2Available())throw new Error("WebGL2 is not supported by this device");let options={canvas:params.canvas,alpha:params.alpha??!1,antialias:params.antialias??!0,stencil:params.stencil??!1,depth:params.depth??!0};if(isWebGL2){const context=options.canvas.getContext(RendererModes.WebGL2,options);if(isNotDefined(context))throw new Error(`WebGL2 context is not defined, however mode is set to ${RendererModes.WebGL2}`);options={...options,context:context}}let entity=new WebGLRenderer(options);const accessors=getAccessors(entity);accessors.setShadowMapEnabled(params.isShadowMapEnabled??!0),accessors.setShadowMapType(PCFShadowMap);const rendererLoopSub$=renderLoop.tick$.subscribe(()=>{const isRendererReady=entity.info.render.frame>0;isRendererReady$.value!==isRendererReady&&isRendererReady$.next(isRendererReady)}),screenSizeSub$=container.viewportRect$.pipe(distinctUntilChanged((prev,curr)=>prev?.width===curr?.width&&prev?.height===curr?.height)).subscribe(rect=>{isNotDefined(rect)||function(entity2,{width:width,height:height},ratio){isNotDefined(entity2)||(accessors.setSize(width,height),accessors.setPixelRatio(ratio,maxPixelRatio))}(entity,rect,container.getRatio())}),wrapper=AbstractWrapper(entity,WrapperType.Renderer,params),destroySub$=wrapper.destroy$.subscribe(()=>{entity.dispose(),entity.forceContextLoss(),entity=null,destroySub$.unsubscribe(),screenSizeSub$.unsubscribe(),rendererLoopSub$.unsubscribe()}),result=mergeAll(wrapper,accessors,withActiveMixin(),{getParams:()=>params,serialize:()=>rendererEntityToConfig(result),isRendererReady$:isRendererReady$});return result._setActive(params.isActive,!0),result}export{RendererWrapper};
|
|
2
2
|
//# sourceMappingURL=RendererWrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RendererWrapper.js","sources":["../../../src/Renderer/Wrappers/RendererWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport { withActiveMixin } from '@Anarchy/Engine/Mixins';\nimport {
|
|
1
|
+
{"version":3,"file":"RendererWrapper.js","sources":["../../../src/Renderer/Wrappers/RendererWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport { withActiveMixin } from '@Anarchy/Engine/Mixins';\nimport { rendererEntityToConfig } from '@Anarchy/Engine/Renderer/Adapters';\nimport { RendererModes } from '@Anarchy/Engine/Renderer/Constants';\nimport type { TRendererAccessors, TRendererConfig, TRendererParams, TRendererWrapper, TRendererWrapperDependencies } from '@Anarchy/Engine/Renderer/Models';\nimport { mergeAll } from '@Anarchy/Engine/Utils';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { isNotDefined, isWebGL2Available, isWebGLAvailable } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { BehaviorSubject, distinctUntilChanged } from 'rxjs';\nimport type { WebGLRendererParameters } from 'three';\nimport { PCFShadowMap, WebGLRenderer } from 'three';\n\nimport { getAccessors } from './Accessors';\n\nexport function RendererWrapper(params: TRendererParams, { container, renderLoop }: TRendererWrapperDependencies): TRendererWrapper {\n const isRendererReady$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n const maxPixelRatio: number = params.maxPixelRatio ?? 2;\n if (isNotDefined(params.canvas)) throw new Error(`Canvas is not defined`);\n if (!isWebGLAvailable()) throw new Error('WebGL is not supported by this device');\n const isWebGL2: boolean = params.mode === RendererModes.WebGL2;\n if (isWebGL2 && !isWebGL2Available()) throw new Error('WebGL2 is not supported by this device');\n\n let options: WebGLRendererParameters = {\n canvas: params.canvas,\n alpha: params.alpha ?? false, //until we have a reason to use it (off for a better performance)\n antialias: params.antialias ?? true,\n stencil: params.stencil ?? false, //until we have a reason to use it (off for a better performance)\n depth: params.depth ?? true\n };\n\n if (isWebGL2) {\n const context: WebGL2RenderingContext | null = (options.canvas as HTMLCanvasElement).getContext(RendererModes.WebGL2, options) as WebGL2RenderingContext | null;\n if (isNotDefined(context)) throw new Error(`WebGL2 context is not defined, however mode is set to ${RendererModes.WebGL2}`);\n\n options = { ...options, context };\n }\n\n let entity: WebGLRenderer = new WebGLRenderer(options);\n const accessors: TRendererAccessors = getAccessors(entity);\n\n accessors.setShadowMapEnabled(params.isShadowMapEnabled ?? true);\n accessors.setShadowMapType(PCFShadowMap);\n\n //When \"isRendererReady\" is true, you can assume that the scene is loaded and ready.\n // if (isRendererReady$.value !== entity.info.render.frame > 0) isRendererReady$.next(entity.info.render.frame > 0);\n\n const rendererLoopSub$: Subscription = renderLoop.tick$.subscribe((): void => {\n const isRendererReady: boolean = entity.info.render.frame > 0;\n if (isRendererReady$.value === isRendererReady) return;\n isRendererReady$.next(isRendererReady);\n });\n\n function setValues(entity: TWriteable<WebGLRenderer>, { width, height }: DOMRect, ratio: number): void {\n if (isNotDefined(entity)) return;\n accessors.setSize(width, height);\n accessors.setPixelRatio(ratio, maxPixelRatio);\n }\n\n // TODO 9.2.0 ACTIVE: This could be done only in active$ renderer and applied in onActive hook\n const screenSizeSub$: Subscription = container.viewportRect$\n .pipe(distinctUntilChanged((prev: DOMRect, curr: DOMRect): boolean => prev?.width === curr?.width && prev?.height === curr?.height))\n .subscribe((rect: DOMRect): void => {\n if (isNotDefined(rect)) return;\n setValues(entity, rect, container.getRatio());\n });\n\n const wrapper: TAbstractWrapper<WebGLRenderer> = AbstractWrapper(entity, WrapperType.Renderer, params);\n\n const destroySub$: Subscription = wrapper.destroy$.subscribe((): void => {\n entity.dispose();\n entity.forceContextLoss();\n entity = null as any;\n\n destroySub$.unsubscribe();\n screenSizeSub$.unsubscribe();\n rendererLoopSub$.unsubscribe();\n });\n\n const result = mergeAll(wrapper, accessors, withActiveMixin(), {\n getParams: (): TRendererParams => params,\n serialize: (): TRendererConfig => rendererEntityToConfig(result),\n isRendererReady$\n });\n\n result._setActive(params.isActive, true);\n\n return result;\n}\n"],"names":["RendererWrapper","params","container","renderLoop","isRendererReady$","BehaviorSubject","maxPixelRatio","isNotDefined","canvas","Error","isWebGLAvailable","isWebGL2","mode","RendererModes","WebGL2","isWebGL2Available","options","alpha","antialias","stencil","depth","context","getContext","entity","WebGLRenderer","accessors","getAccessors","setShadowMapEnabled","isShadowMapEnabled","setShadowMapType","PCFShadowMap","rendererLoopSub$","tick$","subscribe","isRendererReady","info","render","frame","value","next","screenSizeSub$","viewportRect$","pipe","distinctUntilChanged","prev","curr","width","height","rect","ratio","setSize","setPixelRatio","setValues","getRatio","wrapper","AbstractWrapper","WrapperType","Renderer","destroySub$","destroy$","dispose","forceContextLoss","unsubscribe","result","mergeAll","withActiveMixin","getParams","serialize","rendererEntityToConfig","_setActive","isActive"],"mappings":"k1BAgBO,SAASA,gBAAgBC,QAAyBC,UAAEA,UAAAC,WAAWA,aACpE,MAAMC,iBAA6C,IAAIC,iBAAgB,GAEjEC,cAAwBL,OAAOK,eAAiB,EACtD,GAAIC,aAAaN,OAAOO,QAAS,MAAM,IAAIC,MAAM,yBACjD,IAAKC,mBAAoB,MAAM,IAAID,MAAM,yCACzC,MAAME,SAAoBV,OAAOW,OAASC,cAAcC,OACxD,GAAIH,WAAaI,oBAAqB,MAAM,IAAIN,MAAM,0CAEtD,IAAIO,QAAmC,CACrCR,OAAQP,OAAOO,OACfS,MAAOhB,OAAOgB,QAAS,EACvBC,UAAWjB,OAAOiB,YAAa,EAC/BC,QAASlB,OAAOkB,UAAW,EAC3BC,MAAOnB,OAAOmB,QAAS,GAGzB,GAAIT,SAAU,CACZ,MAAMU,QAA0CL,QAAQR,OAA6Bc,WAAWT,cAAcC,OAAQE,SACtH,GAAIT,aAAac,SAAU,MAAM,IAAIZ,MAAM,yDAAyDI,cAAcC,UAElHE,QAAU,IAAKA,QAASK,gBAC1B,CAEA,IAAIE,OAAwB,IAAIC,cAAcR,SAC9C,MAAMS,UAAgCC,aAAaH,QAEnDE,UAAUE,oBAAoB1B,OAAO2B,qBAAsB,GAC3DH,UAAUI,iBAAiBC,cAK3B,MAAMC,iBAAiC5B,WAAW6B,MAAMC,UAAU,KAChE,MAAMC,gBAA2BX,OAAOY,KAAKC,OAAOC,MAAQ,EACxDjC,iBAAiBkC,QAAUJ,iBAC/B9B,iBAAiBmC,KAAKL,mBAUlBM,eAA+BtC,UAAUuC,cAC5CC,KAAKC,qBAAqB,CAACC,KAAeC,OAA2BD,MAAME,QAAUD,MAAMC,OAASF,MAAMG,SAAWF,MAAME,SAC3Hd,UAAWe,OACNzC,aAAayC,OAVrB,SAAmBzB,SAAmCuB,MAAEA,MAAAC,OAAOA,QAAmBE,OAC5E1C,aAAagB,WACjBE,UAAUyB,QAAQJ,MAAOC,QACzBtB,UAAU0B,cAAcF,MAAO3C,eACjC,CAOI8C,CAAU7B,OAAQyB,KAAM9C,UAAUmD,cAGhCC,QAA2CC,gBAAgBhC,OAAQiC,YAAYC,SAAUxD,QAEzFyD,YAA4BJ,QAAQK,SAAS1B,UAAU,KAC3DV,OAAOqC,UACPrC,OAAOsC,mBACPtC,OAAS,KAETmC,YAAYI,cACZtB,eAAesB,cACf/B,iBAAiB+B,gBAGbC,OAASC,SAASV,QAAS7B,UAAWwC,kBAAmB,CAC7DC,UAAW,IAAuBjE,OAClCkE,UAAW,IAAuBC,uBAAuBL,QACzD3D,oCAKF,OAFA2D,OAAOM,WAAWpE,OAAOqE,UAAU,GAE5BP,MACT"}
|
package/dist/Renderer/index.d.ts
CHANGED