@mml-io/3d-web-client-core 0.24.2 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/build/camera/CameraManager.d.ts +47 -11
  2. package/build/camera/CameraManager.d.ts.map +1 -0
  3. package/build/character/AnimationMixer.d.ts +74 -0
  4. package/build/character/AnimationMixer.d.ts.map +1 -0
  5. package/build/character/CharacterManager.d.ts +30 -43
  6. package/build/character/CharacterManager.d.ts.map +1 -0
  7. package/build/character/CharacterState.d.ts +1 -0
  8. package/build/character/CharacterState.d.ts.map +1 -0
  9. package/build/character/LocalController.d.ts +12 -8
  10. package/build/character/LocalController.d.ts.map +1 -0
  11. package/build/character/RemoteController.d.ts +14 -10
  12. package/build/character/RemoteController.d.ts.map +1 -0
  13. package/build/character/Spawning.d.ts +1 -0
  14. package/build/character/Spawning.d.ts.map +1 -0
  15. package/build/character/types.d.ts +8 -0
  16. package/build/character/types.d.ts.map +1 -0
  17. package/build/character/url-position.d.ts +9 -3
  18. package/build/character/url-position.d.ts.map +1 -0
  19. package/build/collisions/CollisionsManager.d.ts +24 -15
  20. package/build/collisions/CollisionsManager.d.ts.map +1 -0
  21. package/build/collisions/getRelativePositionAndRotationRelativeToObject.d.ts +3 -2
  22. package/build/collisions/getRelativePositionAndRotationRelativeToObject.d.ts.map +1 -0
  23. package/build/error-screen/ErrorScreen.d.ts +1 -0
  24. package/build/error-screen/ErrorScreen.d.ts.map +1 -0
  25. package/build/helpers/math-helpers.d.ts +3 -2
  26. package/build/helpers/math-helpers.d.ts.map +1 -0
  27. package/build/index.d.ts +8 -11
  28. package/build/index.d.ts.map +1 -0
  29. package/build/index.js +2460 -11917
  30. package/build/index.js.map +4 -4
  31. package/build/input/EventHandlerCollection.d.ts +1 -0
  32. package/build/input/EventHandlerCollection.d.ts.map +1 -0
  33. package/build/input/KeyInputManager.d.ts +1 -0
  34. package/build/input/KeyInputManager.d.ts.map +1 -0
  35. package/build/input/VirtualJoystick.d.ts +1 -0
  36. package/build/input/VirtualJoystick.d.ts.map +1 -0
  37. package/build/loading-screen/LoadingScreen.d.ts +1 -0
  38. package/build/loading-screen/LoadingScreen.d.ts.map +1 -0
  39. package/build/math/Box.d.ts +2 -1
  40. package/build/math/Box.d.ts.map +1 -0
  41. package/build/math/EulXYZ.d.ts +7 -1
  42. package/build/math/EulXYZ.d.ts.map +1 -0
  43. package/build/math/Line.d.ts +1 -0
  44. package/build/math/Line.d.ts.map +1 -0
  45. package/build/math/Matr4.d.ts +24 -3
  46. package/build/math/Matr4.d.ts.map +1 -0
  47. package/build/math/Quat.d.ts +8 -1
  48. package/build/math/Quat.d.ts.map +1 -0
  49. package/build/math/Ray.d.ts +1 -0
  50. package/build/math/Ray.d.ts.map +1 -0
  51. package/build/math/Vect3.d.ts +4 -3
  52. package/build/math/Vect3.d.ts.map +1 -0
  53. package/build/math/index.d.ts +1 -0
  54. package/build/math/index.d.ts.map +1 -0
  55. package/build/math/radToDeg.d.ts +1 -0
  56. package/build/math/radToDeg.d.ts.map +1 -0
  57. package/build/rendering/IRenderer.d.ts +141 -0
  58. package/build/rendering/IRenderer.d.ts.map +1 -0
  59. package/build/tweakpane/TweakPane.d.ts +11 -28
  60. package/build/tweakpane/TweakPane.d.ts.map +1 -0
  61. package/build/tweakpane/blades/cameraFolder.d.ts +5 -49
  62. package/build/tweakpane/blades/cameraFolder.d.ts.map +1 -0
  63. package/build/tweakpane/blades/characterControlsFolder.d.ts +5 -59
  64. package/build/tweakpane/blades/characterControlsFolder.d.ts.map +1 -0
  65. package/build/tweakpane/tweakPaneActivity.d.ts +1 -0
  66. package/build/tweakpane/tweakPaneActivity.d.ts.map +1 -0
  67. package/build/tweakpane/tweakPaneStyle.d.ts +1 -0
  68. package/build/tweakpane/tweakPaneStyle.d.ts.map +1 -0
  69. package/package.json +4 -14
  70. package/build/character/CanvasText.d.ts +0 -34
  71. package/build/character/Character.d.ts +0 -71
  72. package/build/character/CharacterMaterial.d.ts +0 -19
  73. package/build/character/CharacterModel.d.ts +0 -44
  74. package/build/character/CharacterTooltip.d.ts +0 -32
  75. package/build/character/LowPolyModel.d.ts +0 -1
  76. package/build/character/instancing/CharacterColourSamplingUtils.d.ts +0 -14
  77. package/build/character/instancing/CharacterInstances.d.ts +0 -92
  78. package/build/character/instancing/CharacterInstancingAnimationUtils.d.ts +0 -7
  79. package/build/character/instancing/CharacterInstancingUtils.d.ts +0 -3
  80. package/build/character/instancing/vendor/core/InstancedEntity.d.ts +0 -191
  81. package/build/character/instancing/vendor/core/InstancedMesh2.d.ts +0 -361
  82. package/build/character/instancing/vendor/core/InstancedMeshBVH.d.ts +0 -145
  83. package/build/character/instancing/vendor/core/feature/Capacity.d.ts +0 -13
  84. package/build/character/instancing/vendor/core/feature/FrustumCulling.d.ts +0 -37
  85. package/build/character/instancing/vendor/core/feature/Instances.d.ts +0 -49
  86. package/build/character/instancing/vendor/core/feature/LOD.d.ts +0 -89
  87. package/build/character/instancing/vendor/core/feature/Morph.d.ts +0 -18
  88. package/build/character/instancing/vendor/core/feature/Raycasting.d.ts +0 -7
  89. package/build/character/instancing/vendor/core/feature/Skeleton.d.ts +0 -19
  90. package/build/character/instancing/vendor/core/feature/Uniforms.d.ts +0 -42
  91. package/build/character/instancing/vendor/core/utils/GLInstancedBufferAttribute.d.ts +0 -42
  92. package/build/character/instancing/vendor/core/utils/InstancedRenderList.d.ts +0 -25
  93. package/build/character/instancing/vendor/core/utils/SquareDataTexture.d.ts +0 -156
  94. package/build/character/instancing/vendor/index.d.ts +0 -25
  95. package/build/character/instancing/vendor/shaders/ShaderChunk.d.ts +0 -1
  96. package/build/character/instancing/vendor/shaders/chunks/instanced_color_pars_vertex.d.ts +0 -1
  97. package/build/character/instancing/vendor/shaders/chunks/instanced_color_vertex.d.ts +0 -1
  98. package/build/character/instancing/vendor/shaders/chunks/instanced_material_color_pars_vertex.d.ts +0 -1
  99. package/build/character/instancing/vendor/shaders/chunks/instanced_material_color_vertex.d.ts +0 -1
  100. package/build/character/instancing/vendor/shaders/chunks/instanced_pars_vertex.d.ts +0 -1
  101. package/build/character/instancing/vendor/shaders/chunks/instanced_skinning_pars_vertex.d.ts +0 -1
  102. package/build/character/instancing/vendor/shaders/chunks/instanced_vertex.d.ts +0 -1
  103. package/build/character/instancing/vendor/utils/CreateFrom.d.ts +0 -9
  104. package/build/character/instancing/vendor/utils/SortingUtils.d.ts +0 -16
  105. package/build/character/loading/CharacterModelLoader.d.ts +0 -11
  106. package/build/character/loading/GLTFLoadingWorker.worker.d.ts +0 -2
  107. package/build/character/loading/GLTFLoadingWorkerBrowserCache.d.ts +0 -8
  108. package/build/character/loading/GLTFLoadingWorkerPool.d.ts +0 -22
  109. package/build/character/loading/GLTFLoadingWorkerTypes.d.ts +0 -18
  110. package/build/ground-plane/GroundPlane.d.ts +0 -9
  111. package/build/mml/MMLCompositionScene.d.ts +0 -29
  112. package/build/rendering/PostProcessingManager.d.ts +0 -92
  113. package/build/rendering/composer.d.ts +0 -104
  114. package/build/rendering/post-effects/bright-contrast-sat.d.ts +0 -2
  115. package/build/rendering/post-effects/gauss-grain.d.ts +0 -2
  116. package/build/rendering/post-effects/n8-ssao/BlueNoise.d.ts +0 -1
  117. package/build/rendering/post-effects/n8-ssao/DepthDownSample.d.ts +0 -17
  118. package/build/rendering/post-effects/n8-ssao/EffectCompositer.d.ts +0 -39
  119. package/build/rendering/post-effects/n8-ssao/EffectShader.d.ts +0 -31
  120. package/build/rendering/post-effects/n8-ssao/FullScreenTriangle.d.ts +0 -11
  121. package/build/rendering/post-effects/n8-ssao/N8SSAOPass.d.ts +0 -65
  122. package/build/rendering/post-effects/n8-ssao/PoissionBlur.d.ts +0 -30
  123. package/build/rendering/shaders/bayer-dither.d.ts +0 -1
  124. package/build/rendering/shaders/shader-helpers.d.ts +0 -4
  125. package/build/rendering/shaders/vertex-shader.d.ts +0 -1
  126. package/build/sun/Sun.d.ts +0 -18
  127. package/build/time/TimeManager.d.ts +0 -20
  128. package/build/tweakpane/blades/characterFolder.d.ts +0 -20
  129. package/build/tweakpane/blades/effects/bcsFolder.d.ts +0 -12
  130. package/build/tweakpane/blades/effects/bloomAndGrain.d.ts +0 -12
  131. package/build/tweakpane/blades/effects/ssaoFolder.d.ts +0 -49
  132. package/build/tweakpane/blades/effects/toneMappingFolder.d.ts +0 -18
  133. package/build/tweakpane/blades/environmentFolder.d.ts +0 -53
  134. package/build/tweakpane/blades/postProcessingFolder.d.ts +0 -31
  135. package/build/tweakpane/blades/rendererFolder.d.ts +0 -13
  136. package/build/tweakpane/blades/rendererStatsFolder.d.ts +0 -10
@@ -1,13 +1,14 @@
1
- import { PerspectiveCamera } from "three";
2
1
  import { CollisionsManager } from "../collisions/CollisionsManager";
3
- import { Vect3 } from "../math";
4
- import { TweakPane } from "../tweakpane/TweakPane";
2
+ import { Quat, Vect3 } from "../math";
3
+ export type CameraState = {
4
+ position: Vect3;
5
+ rotation: Quat;
6
+ fov: number;
7
+ aspect: number;
8
+ };
5
9
  export declare class CameraManager {
6
10
  private targetElement;
7
11
  private collisionsManager;
8
- readonly camera: PerspectiveCamera;
9
- private flyCamera;
10
- private orbitControls;
11
12
  private isMainCameraActive;
12
13
  initialDistance: number;
13
14
  minDistance: number;
@@ -40,12 +41,40 @@ export declare class CameraManager {
40
41
  private lerpTarget;
41
42
  private lerpFactor;
42
43
  private lerpDuration;
44
+ private tempMatr4;
43
45
  private activePointers;
46
+ private cameraState;
47
+ private flyCameraState;
48
+ private aspect;
49
+ private flyCameraLookAt;
50
+ private flyCameraYaw;
51
+ private flyCameraPitch;
52
+ private flyCameraDistance;
53
+ private flyCameraMouseDown;
54
+ private flyCameraIsPanning;
55
+ private flyCameraLastMouseX;
56
+ private flyCameraLastMouseY;
57
+ private flyCameraEventHandlerCollection;
58
+ private orbitControlsRotateSensitivity;
59
+ private orbitControlsPanSensitivity;
60
+ private orbitControlsZoomSensitivity;
61
+ private orbitControlsMinPolarAngle;
62
+ private orbitControlsMaxPolarAngle;
63
+ private tempPanRight;
64
+ private tempPanUp;
65
+ private tempPanForward;
44
66
  constructor(targetElement: HTMLElement, collisionsManager: CollisionsManager, initialPhi?: number, initialTheta?: number);
45
67
  private createEventHandlers;
46
68
  private disposeEventHandlers;
69
+ private createFlyCameraEventHandlers;
70
+ private disposeFlyCameraEventHandlers;
71
+ private onFlyCameraBlur;
72
+ private onFlyCameraMouseDown;
73
+ private onFlyCameraMouseUp;
74
+ private onFlyCameraMouseMove;
75
+ private panFlyCameraLookAt;
76
+ private onFlyCameraWheel;
47
77
  private preventDefaultAndStopPropagation;
48
- setupTweakPane(tweakPane: TweakPane): void;
49
78
  private onPointerDown;
50
79
  private onPointerUp;
51
80
  private getAveragePointerPositionAndSpread;
@@ -55,15 +84,22 @@ export declare class CameraManager {
55
84
  private onContextMenu;
56
85
  setTarget(target: Vect3): void;
57
86
  setLerpedTarget(target: Vect3, targetDistance: number): void;
58
- reverseUpdateFromPositions(): void;
59
- adjustCameraPosition(): void;
87
+ reverseUpdateFromPositions(position: Vect3, rotation: Quat): void;
88
+ adjustCameraPosition(position: Vect3, rotation: Quat): void;
89
+ private updateFlyCameraOrbitControls;
60
90
  dispose(): void;
61
91
  private easeOutExpo;
62
92
  updateAspect(aspect: number): void;
63
93
  recomputeFoV(immediately?: boolean): void;
64
94
  isFlyCameraOn(): boolean;
65
95
  toggleFlyCamera(): void;
66
- get activeCamera(): PerspectiveCamera;
67
- update(): void;
96
+ getCameraState(): CameraState;
97
+ getMainCameraState(): CameraState;
98
+ getFlyCameraState(): CameraState;
99
+ getCameraPosition(): Vect3;
100
+ getCameraRotation(): Quat;
101
+ getCameraFOV(): number;
102
+ update(onFlyCameraUpdate?: (state: CameraState) => void): void;
68
103
  hasActiveInput(): boolean;
69
104
  }
105
+ //# sourceMappingURL=CameraManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CameraManager.d.ts","sourceRoot":"","sources":["../../src/camera/CameraManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { AnimationState } from "./CharacterState";
2
+ export { AnimationState };
3
+ /**
4
+ * Animation weights for rendering. Each animation can have a weight between 0 and 1.
5
+ * When transitioning between animations, multiple animations can have non-zero weights.
6
+ */
7
+ export type AnimationWeights = {
8
+ [AnimationState.idle]: number;
9
+ [AnimationState.walking]: number;
10
+ [AnimationState.running]: number;
11
+ [AnimationState.jumpToAir]: number;
12
+ [AnimationState.air]: number;
13
+ [AnimationState.airToGround]: number;
14
+ [AnimationState.doubleJump]: number;
15
+ };
16
+ /**
17
+ * Animation times for rendering. Each animation has its own time value in seconds.
18
+ * When an animation starts playing, its time is reset to 0.
19
+ */
20
+ export type AnimationTimes = {
21
+ [AnimationState.idle]: number;
22
+ [AnimationState.walking]: number;
23
+ [AnimationState.running]: number;
24
+ [AnimationState.jumpToAir]: number;
25
+ [AnimationState.air]: number;
26
+ [AnimationState.airToGround]: number;
27
+ [AnimationState.doubleJump]: number;
28
+ };
29
+ /**
30
+ * Manages smooth transitions between animation states.
31
+ * Calculates animation weights for blending during transitions.
32
+ */
33
+ export declare class AnimationMixer {
34
+ private currentState;
35
+ private targetState;
36
+ private transitionProgress;
37
+ private transitionDuration;
38
+ private weights;
39
+ private animationTimes;
40
+ constructor(initialState?: AnimationState);
41
+ /**
42
+ * Set the target animation state. If different from current, begins a transition.
43
+ */
44
+ setTargetState(state: AnimationState): void;
45
+ /**
46
+ * Update the animation mixer, progressing any active transitions.
47
+ */
48
+ update(deltaTime: number): void;
49
+ /**
50
+ * Get the current animation weights for rendering.
51
+ */
52
+ getWeights(): AnimationWeights;
53
+ /**
54
+ * Get the animation times for each animation state.
55
+ */
56
+ getAnimationTimes(): AnimationTimes;
57
+ /**
58
+ * Get the primary animation state (the target we're transitioning to, or current if no transition).
59
+ */
60
+ getPrimaryState(): AnimationState;
61
+ /**
62
+ * Returns true if currently transitioning between animations.
63
+ */
64
+ isTransitioning(): boolean;
65
+ /**
66
+ * Immediately snap to a state without transitioning.
67
+ */
68
+ snapToState(state: AnimationState): void;
69
+ private updateWeights;
70
+ private createZeroWeights;
71
+ private createZeroTimes;
72
+ private easeInOut;
73
+ }
74
+ //# sourceMappingURL=AnimationMixer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationMixer.d.ts","sourceRoot":"","sources":["../../src/character/AnimationMixer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,cAAc,CAAiB;gBAE3B,YAAY,GAAE,cAAoC;IAQ9D;;OAEG;IACI,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAoBlD;;OAEG;IACI,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IA8BtC;;OAEG;IACI,UAAU,IAAI,gBAAgB;IAIrC;;OAEG;IACI,iBAAiB,IAAI,cAAc;IAI1C;;OAEG;IACI,eAAe,IAAI,cAAc;IAIxC;;OAEG;IACI,eAAe,IAAI,OAAO;IAIjC;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAS/C,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,SAAS;CAIlB"}
@@ -1,18 +1,15 @@
1
1
  import { PositionAndRotation } from "@mml-io/mml-web";
2
- import { Group } from "three";
3
2
  import { CameraManager } from "../camera/CameraManager";
4
3
  import { CollisionsManager } from "../collisions/CollisionsManager";
5
4
  import { KeyInputManager } from "../input/KeyInputManager";
6
5
  import { VirtualJoystick } from "../input/VirtualJoystick";
7
6
  import { EulXYZ } from "../math/EulXYZ";
8
7
  import { Vect3 } from "../math/Vect3";
9
- import { Composer } from "../rendering/composer";
10
- import { TimeManager } from "../time/TimeManager";
8
+ import { CharacterRenderState, CharacterDescription } from "../rendering/IRenderer";
9
+ import { CharacterControllerValues } from "../tweakpane/blades/characterControlsFolder";
11
10
  import { TweakPane } from "../tweakpane/TweakPane";
12
- import { Character, CharacterDescription, LoadedAnimations } from "./Character";
11
+ import { AnimationMixer } from "./AnimationMixer";
13
12
  import { CharacterState } from "./CharacterState";
14
- import { CharacterInstances } from "./instancing/CharacterInstances";
15
- import { CharacterModelLoader } from "./loading/CharacterModelLoader";
16
13
  import { LocalController } from "./LocalController";
17
14
  import { RemoteController } from "./RemoteController";
18
15
  type SpawnPosition = {
@@ -48,18 +45,15 @@ export type SpawnConfigurationState = {
48
45
  enableRespawnButton: boolean;
49
46
  };
50
47
  export type CharacterManagerConfig = {
51
- composer: Composer;
52
- characterModelLoader: CharacterModelLoader;
53
48
  collisionsManager: CollisionsManager;
54
49
  cameraManager: CameraManager;
55
- timeManager: TimeManager;
56
50
  keyInputManager: KeyInputManager;
57
51
  virtualJoystick?: VirtualJoystick;
58
52
  remoteUserStates: Map<number, CharacterState>;
59
53
  sendUpdate: (update: CharacterState) => void;
60
54
  sendLocalCharacterColors: (colors: Array<[number, number, number]>) => void;
61
- animationsPromise: Promise<LoadedAnimations>;
62
55
  spawnConfiguration: SpawnConfigurationState;
56
+ characterControllerValues: CharacterControllerValues;
63
57
  characterResolve: (clientId: number) => {
64
58
  username: string | null;
65
59
  characterDescription: CharacterDescription | null;
@@ -67,53 +61,46 @@ export type CharacterManagerConfig = {
67
61
  };
68
62
  updateURLLocation?: boolean;
69
63
  };
70
- type LoadedCharacterState = {
71
- character: Character;
72
- remoteController: RemoteController;
73
- characterLoaded: boolean;
74
- };
75
64
  type RemoteCharacterState = {
76
65
  id: number;
77
- loadedCharacterState: LoadedCharacterState | null;
78
- lastPosition: {
79
- x: number;
80
- y: number;
81
- z: number;
82
- };
83
- distanceSquared: number;
84
- lastLODChange: number;
85
- abortController?: AbortController;
66
+ controller: RemoteController;
67
+ animationMixer: AnimationMixer;
68
+ lastUsername: string;
69
+ lastCharacterDescription: CharacterDescription | null;
70
+ lastColors: Array<[number, number, number]> | null;
71
+ renderState: CharacterRenderState;
86
72
  };
87
73
  export declare class CharacterManager {
88
74
  private config;
89
75
  static readonly headTargetOffset: Vect3;
90
76
  private localClientId;
91
77
  remoteCharacters: Map<number, RemoteCharacterState>;
92
- localController: LocalController;
93
- localCharacter: Character | null;
94
- characterInstances: CharacterInstances | null;
95
- readonly group: Group;
78
+ localController: LocalController | null;
79
+ private localRenderState;
80
+ private localAnimationMixer;
96
81
  private lastUpdateSentTime;
97
- private readonly MAX_REAL_REMOTE_CHARACTERS;
98
- private readonly LOD_CHANGE_COOLDOWN_MS;
99
- private readonly MAX_SCENE_ADDITIONS_PER_FRAME;
100
- private pendingSpawns;
101
- private loadingCharacters;
102
- private charactersReadyForScene;
82
+ private tempCameraTarget;
83
+ private cachedCharacterStates;
84
+ private pendingDescriptionUpdates;
85
+ private pendingRemovals;
103
86
  constructor(config: CharacterManagerConfig);
104
- spawnLocalCharacter(id: number, username: string, characterDescription: CharacterDescription | null, spawnPosition?: Vect3, spawnRotation?: EulXYZ): void;
105
- private calculateDistanceSquared;
106
- private evaluateLOD;
107
- private promoteToReal;
108
- private demoteToInstance;
87
+ /**
88
+ * Sets the local client ID early to prevent the local character from being
89
+ * spawned as a remote character when network updates arrive before spawnLocalCharacter is called.
90
+ */
91
+ setLocalClientId(id: number): void;
92
+ spawnLocalCharacter(id: number, spawnPosition?: Vect3, spawnRotation?: EulXYZ): void;
109
93
  setupTweakPane(tweakPane: TweakPane): void;
110
- private initializeCharacterInstances;
111
94
  getLocalCharacterPositionAndRotation(): PositionAndRotation;
112
95
  clear(): void;
113
96
  dispose(): void;
114
- addSelfChatBubble(message: string): void;
115
- addChatBubble(id: number, message: string): void;
116
97
  networkCharacterInfoUpdated(id: number): void;
117
- update(): void;
98
+ update(deltaTime: number, frameCounter: number): {
99
+ updatedCharacterDescriptions: number[];
100
+ removedUserIds: number[];
101
+ };
102
+ getAllCharacterStates(): Map<number, CharacterRenderState>;
103
+ getLocalClientId(): number;
118
104
  }
119
105
  export {};
106
+ //# sourceMappingURL=CharacterManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CharacterManager.d.ts","sourceRoot":"","sources":["../../src/character/CharacterManager.ts"],"names":[],"mappings":"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"}
@@ -19,3 +19,4 @@ export type CharacterState = {
19
19
  };
20
20
  state: AnimationState;
21
21
  };
22
+ //# sourceMappingURL=CharacterState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CharacterState.d.ts","sourceRoot":"","sources":["../../src/character/CharacterState.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACxB,MAAM,IAAI;IACV,SAAS,IAAI;IACb,SAAS,IAAI;IACb,WAAW,IAAI;IACf,KAAK,IAAI;IACT,aAAa,IAAI;IACjB,YAAY,IAAI;CACjB;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE;QACR,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE,cAAc,CAAC;CACvB,CAAC"}
@@ -5,22 +5,21 @@ import { VirtualJoystick } from "../input/VirtualJoystick";
5
5
  import { Line } from "../math/Line";
6
6
  import { Quat } from "../math/Quat";
7
7
  import { IVect3, Vect3 } from "../math/Vect3";
8
- import { TimeManager } from "../time/TimeManager";
9
- import { Character } from "./Character";
8
+ import { CharacterControllerValues } from "../tweakpane/blades/characterControlsFolder";
10
9
  import { SpawnConfigurationState } from "./CharacterManager";
11
- import { CharacterState } from "./CharacterState";
10
+ import { AnimationState, CharacterState } from "./CharacterState";
12
11
  export type LocalControllerConfig = {
13
12
  id: number;
14
- character: Character;
13
+ position: Vect3;
14
+ quaternion: Quat;
15
15
  collisionsManager: CollisionsManager;
16
16
  keyInputManager: KeyInputManager;
17
17
  virtualJoystick?: VirtualJoystick;
18
18
  cameraManager: CameraManager;
19
- timeManager: TimeManager;
20
19
  spawnConfiguration: SpawnConfigurationState;
20
+ characterControllerValues: CharacterControllerValues;
21
21
  };
22
22
  export declare class LocalController {
23
- private config;
24
23
  capsuleInfo: {
25
24
  radius: number;
26
25
  segment: Line;
@@ -61,6 +60,8 @@ export declare class LocalController {
61
60
  private tempVector2;
62
61
  private tempVect3;
63
62
  private tempRay;
63
+ private tempCameraPos;
64
+ private tempPositionCopy;
64
65
  private surfaceTempQuat;
65
66
  private surfaceTempQuat2;
66
67
  private surfaceTempVector1;
@@ -69,9 +70,11 @@ export declare class LocalController {
69
70
  private surfaceTempVector4;
70
71
  private surfaceTempVector5;
71
72
  private surfaceTempRay;
73
+ private lastMatrixTemp;
72
74
  private lastFrameSurfaceState;
73
75
  jumpReleased: boolean;
74
76
  networkState: CharacterState;
77
+ config: LocalControllerConfig;
75
78
  private controlState;
76
79
  private minimumX;
77
80
  private maximumX;
@@ -81,8 +84,8 @@ export declare class LocalController {
81
84
  private maximumZ;
82
85
  constructor(config: LocalControllerConfig);
83
86
  updateSpawnConfig(spawnConfig: SpawnConfigurationState): void;
84
- update(): void;
85
- private getTargetAnimation;
87
+ update(deltaTime: number): void;
88
+ getTargetAnimation(): AnimationState;
86
89
  private updateRotationOffset;
87
90
  private updateAzimuthalAngle;
88
91
  private computeAngularDifference;
@@ -97,3 +100,4 @@ export declare class LocalController {
97
100
  private updateNetworkState;
98
101
  resetPosition(): void;
99
102
  }
103
+ //# sourceMappingURL=LocalController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalController.d.ts","sourceRoot":"","sources":["../../src/character/LocalController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAsB,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAExF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlE,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,KAAK,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,kBAAkB,EAAE,uBAAuB,CAAC;IAC5C,yBAAyB,EAAE,yBAAyB,CAAC;CACtD,CAAC;AAEF,qBAAa,eAAe;IACnB,WAAW;;;MAGhB;IAEK,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAQ;IACxB,aAAa,EAAE,OAAO,CAAQ;IAC9B,YAAY,UAAS;IACrB,cAAc,EAAE,OAAO,CAAS;IAChC,WAAW,EAAE,MAAM,CAAK;IAExB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAE5B,cAAc,EAAE,KAAK,CAAe;IACpC,iBAAiB,EAAE,OAAO,CAAS;IACnC,UAAU,EAAE,OAAO,CAAS;IAEnC,OAAO,CAAC,uBAAuB,CAAM;IAErC,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,sBAAsB,CAAa;IAC3C,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,mBAAmB,CAAe;IAE1C,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAA8B;IAEhD,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAa;IAEnC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,gBAAgB,CAAe;IAEvC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,qBAAqB,CAOb;IAET,YAAY,EAAE,OAAO,CAAQ;IAE7B,YAAY,EAAE,cAAc,CAAC;IAC7B,MAAM,EAAE,qBAAqB,CAAC;IACrC,OAAO,CAAC,YAAY,CACb;IAEP,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,qBAAqB;IAkElC,iBAAiB,CAAC,WAAW,EAAE,uBAAuB,GAAG,IAAI;IAU7D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAqC/B,kBAAkB,IAAI,cAAc;IAmB3C,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,WAAW;IAmDnB,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,cAAc;IAoFf,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;kBACtC,IAAI;kBAAY,KAAK;;IAyFrD,OAAO,CAAC,kBAAkB;IAenB,aAAa,IAAI,IAAI;CAoB7B"}
@@ -1,14 +1,18 @@
1
- import { Character } from "./Character";
2
- import { CharacterState } from "./CharacterState";
3
- export type RemoteControllerConfig = {
4
- character: Character;
5
- };
1
+ import { EulXYZ, Quat, Vect3 } from "../math";
2
+ import { AnimationState, CharacterState } from "./CharacterState";
3
+ /**
4
+ * RemoteController handles interpolation of remote character state.
5
+ * It's renderer-agnostic and only calculates interpolated positions/rotations.
6
+ */
6
7
  export declare class RemoteController {
7
- private character;
8
- networkState: CharacterState;
8
+ position: Vect3;
9
+ rotation: Quat;
10
+ animationState: AnimationState;
9
11
  private hasReceivedInitialUpdate;
10
12
  private interpolationRate;
11
- constructor(character: Character);
12
- update(clientUpdate: CharacterState, time: number, deltaTime: number): void;
13
- private updateFromNetwork;
13
+ private cachedTargetPos;
14
+ constructor(initialPosition: Vect3, initialRotation: EulXYZ, initialAnimation: AnimationState);
15
+ update(networkUpdate: CharacterState, deltaTime: number): void;
16
+ getRotationEuler(): EulXYZ;
14
17
  }
18
+ //# sourceMappingURL=RemoteController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteController.d.ts","sourceRoot":"","sources":["../../src/character/RemoteController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlE;;;GAGG;AACH,qBAAa,gBAAgB;IAEpB,QAAQ,EAAE,KAAK,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,cAAc,EAAE,cAAc,CAAC;IAEtC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,iBAAiB,CAAO;IAChC,OAAO,CAAC,eAAe,CAAe;gBAE1B,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc;IAMtF,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAkC9D,gBAAgB,IAAI,MAAM;CAGlC"}
@@ -6,3 +6,4 @@ export declare function getSpawnData(config: SpawnConfigurationState, useLocatio
6
6
  spawnRotation: EulXYZ;
7
7
  cameraPosition: Vect3;
8
8
  };
9
+ //# sourceMappingURL=Spawning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spawning.d.ts","sourceRoot":"","sources":["../../src/character/Spawning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAoB,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAS/E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,uBAAuB,EAC/B,eAAe,UAAQ,GACtB;IACD,aAAa,EAAE,KAAK,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,KAAK,CAAC;CACvB,CA0BA"}
@@ -0,0 +1,8 @@
1
+ export type AnimationConfig = {
2
+ idleAnimationFileUrl: string;
3
+ jogAnimationFileUrl: string;
4
+ sprintAnimationFileUrl: string;
5
+ airAnimationFileUrl: string;
6
+ doubleJumpAnimationFileUrl: string;
7
+ };
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/character/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;CACpC,CAAC"}
@@ -1,7 +1,11 @@
1
- import { Object3D } from "three";
1
+ import { IEulXYZ } from "../math/EulXYZ";
2
2
  import { Quat } from "../math/Quat";
3
- import { Vect3 } from "../math/Vect3";
4
- export declare function encodeCharacterAndCamera(character: Object3D, camera: Object3D): string;
3
+ import { IVect3, Vect3 } from "../math/Vect3";
4
+ type PositionAndRotation = {
5
+ position: IVect3;
6
+ rotation: IEulXYZ;
7
+ };
8
+ export declare function encodeCharacterAndCamera(character: PositionAndRotation, camera: PositionAndRotation): string;
5
9
  export declare function decodeCharacterAndCamera(hash: string): {
6
10
  character: {
7
11
  position: Vect3;
@@ -12,3 +16,5 @@ export declare function decodeCharacterAndCamera(hash: string): {
12
16
  quaternion: Quat;
13
17
  };
14
18
  };
19
+ export {};
20
+ //# sourceMappingURL=url-position.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-position.d.ts","sourceRoot":"","sources":["../../src/character/url-position.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAI9C,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,mBAAmB,GAC1B,MAAM,CAOR;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG;IACtD,SAAS,EAAE;QAAE,QAAQ,EAAE,KAAK,CAAC;QAAC,UAAU,EAAE,IAAI,CAAA;KAAE,CAAC;IACjD,MAAM,EAAE;QAAE,QAAQ,EAAE,KAAK,CAAC;QAAC,UAAU,EAAE,IAAI,CAAA;KAAE,CAAC;CAC/C,CAYA"}
@@ -1,41 +1,50 @@
1
1
  import { MElement } from "@mml-io/mml-web";
2
- import { Group, Scene } from "three";
3
- import { MeshBVH } from "three-mesh-bvh";
2
+ import type { MeshBVH } from "three-mesh-bvh";
4
3
  import { Line } from "../math/Line";
5
4
  import { Matr4 } from "../math/Matr4";
6
5
  import { Ray } from "../math/Ray";
7
- import { Vect3 } from "../math/Vect3";
6
+ import { IVect3, Vect3 } from "../math/Vect3";
7
+ type CollisionSourceRef = unknown;
8
8
  export type CollisionMeshState = {
9
9
  matrix: Matr4;
10
- source: Group;
10
+ localScale: IVect3;
11
+ source: CollisionSourceRef;
11
12
  meshBVH: MeshBVH;
12
- debugGroup?: Group;
13
13
  trackCollisions: boolean;
14
14
  };
15
+ export type CollisionMesh = {
16
+ meshBVH: MeshBVH;
17
+ matrix: Matr4;
18
+ localScale: IVect3;
19
+ };
15
20
  export declare class CollisionsManager {
16
- private debug;
17
- private scene;
18
21
  private tempVector;
19
22
  private tempVector2;
20
23
  private tempVect3;
21
24
  private tempQuat;
22
25
  private tempRay;
23
26
  private tempMatrix;
24
- private tempMatrixThree;
25
- private tempMatrix2Three;
26
27
  private tempBox;
27
28
  private tempEulXYZ;
28
29
  private tempSegment;
29
30
  private tempSegment2;
30
- collisionMeshState: Map<Group, CollisionMeshState>;
31
+ private tempCollisionPosition;
32
+ private tempMinimalNormal;
33
+ private tempMinimalPoint;
34
+ collisionMeshState: Map<CollisionSourceRef, CollisionMeshState>;
31
35
  private collisionTrigger;
32
36
  private previouslyCollidingElements;
33
- constructor(scene: Scene);
37
+ private debugEnabled;
38
+ onDebugChange?: (enabled: boolean) => void;
39
+ constructor();
40
+ isDebugEnabled(): boolean;
41
+ toggleDebug(enabled: boolean): void;
34
42
  raycastFirst(ray: Ray, maximumDistance?: number | null): [number, Vect3, CollisionMeshState, Vect3] | null;
35
- private createCollisionMeshState;
36
- addMeshesGroup(group: Group, mElement?: MElement): void;
37
- updateMeshesGroup(group: Group): void;
38
- removeMeshesGroup(group: Group): void;
43
+ addMeshesGroup(group: CollisionSourceRef, creationResult: CollisionMesh, mElement?: MElement): void;
44
+ updateMeshesGroup(group: CollisionSourceRef, matrix: Matr4, localScale: IVect3): void;
45
+ removeMeshesGroup(group: CollisionSourceRef): void;
39
46
  private applyCollider;
40
47
  applyColliders(tempSegment: Line, radius: number): void;
41
48
  }
49
+ export {};
50
+ //# sourceMappingURL=CollisionsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollisionsManager.d.ts","sourceRoot":"","sources":["../../src/collisions/CollisionsManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAI9C,KAAK,kBAAkB,GAAG,OAAO,CAAC;AAElC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,KAAK,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,qBAAqB,CAAe;IAC5C,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,gBAAgB,CAAe;IAEhC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAa;IACnF,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,2BAA2B,CAGjC;IAEF,OAAO,CAAC,YAAY,CAAkB;IAC/B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;;IAO3C,cAAc,IAAI,OAAO;IAIzB,WAAW,CAAC,OAAO,EAAE,OAAO;IAO5B,YAAY,CACjB,GAAG,EAAE,GAAG,EACR,eAAe,GAAE,MAAM,GAAG,IAAW,GACpC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,GAAG,IAAI;IAwC7C,cAAc,CACnB,KAAK,EAAE,kBAAkB,EACzB,cAAc,EAAE,aAAa,EAC7B,QAAQ,CAAC,EAAE,QAAQ,GAClB,IAAI;IAgBA,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAUrF,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAQzD,OAAO,CAAC,aAAa;IAuGd,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;CA8CxD"}
@@ -1,3 +1,4 @@
1
1
  import { PositionAndRotation } from "@mml-io/mml-web";
2
- import { Object3D } from "three";
3
- export declare function getRelativePositionAndRotationRelativeToObject(positionAndRotation: PositionAndRotation, container: Object3D): PositionAndRotation;
2
+ import { IVect3, Matr4 } from "../math";
3
+ export declare function getRelativePositionAndRotationRelativeToObject(positionAndRotation: PositionAndRotation, matrix: Matr4, localScale: IVect3): PositionAndRotation;
4
+ //# sourceMappingURL=getRelativePositionAndRotationRelativeToObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRelativePositionAndRotationRelativeToObject.d.ts","sourceRoot":"","sources":["../../src/collisions/getRelativePositionAndRotationRelativeToObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAU,MAAM,EAAE,KAAK,EAAe,MAAM,SAAS,CAAC;AAS7D,wBAAgB,8CAA8C,CAC5D,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,KAAK,EACb,UAAU,EAAE,MAAM,GACjB,mBAAmB,CA+BrB"}
@@ -5,3 +5,4 @@ export declare class ErrorScreen {
5
5
  constructor(title: string, message: string);
6
6
  dispose(): void;
7
7
  }
8
+ //# sourceMappingURL=ErrorScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorScreen.d.ts","sourceRoot":"","sources":["../../src/error-screen/ErrorScreen.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IACtB,SAAgB,OAAO,EAAE,cAAc,CAAC;IAExC,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,WAAW,CAAiB;gBAExB,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IA8BnC,OAAO;CAGf"}
@@ -1,8 +1,9 @@
1
- import { Quat, Vect3 } from "../math";
1
+ import { IQuat, IVect3, Vect3 } from "../math";
2
2
  export declare const roundToDecimalPlaces: (value: number, decimalPlaces: number) => number;
3
- export declare const toArray: (origin: Vect3 | Quat, precision?: number) => number[];
3
+ export declare const toArray: (origin: IVect3 | IQuat, precision?: number) => number[];
4
4
  export declare const getSpawnPositionInsideCircle: (radius: number, positions: number, id: number, yPos?: number) => Vect3;
5
5
  export declare const round: (n: number, digits: number) => number;
6
6
  export declare const ease: (target: number, n: number, factor: number) => number;
7
7
  export declare function clamp(value: number, min: number, max: number): number;
8
8
  export declare const remap: (value: number, minValue: number, maxValue: number, minScaledValue: number, maxScaledValue: number) => number;
9
+ //# sourceMappingURL=math-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math-helpers.d.ts","sourceRoot":"","sources":["../../src/helpers/math-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAQ,KAAK,EAAE,MAAM,SAAS,CAAC;AAErD,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,EAAE,eAAe,MAAM,KAAG,MAG3E,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,GAAG,KAAK,EAAE,YAAW,MAAU,KAAG,MAAM,EAS7E,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,IAAI,MAAM,EACV,OAAM,MAAU,KACf,KASF,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,EAAE,QAAQ,MAAM,KAAG,MAEjD,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,EAAE,GAAG,MAAM,EAAE,QAAQ,MAAM,KAAG,MAEhE,CAAC;AAEF,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,eAAO,MAAM,KAAK,GAChB,OAAO,MAAM,EACb,UAAU,MAAM,EAChB,UAAU,MAAM,EAChB,gBAAgB,MAAM,EACtB,gBAAgB,MAAM,KACrB,MAKF,CAAC"}
package/build/index.d.ts CHANGED
@@ -1,22 +1,19 @@
1
1
  export { CameraManager } from "./camera/CameraManager";
2
- export { CharacterDescription, AnimationConfig, LoadedAnimations, Character, } from "./character/Character";
3
2
  export { CharacterManager, SpawnConfiguration, SpawnConfigurationState, } from "./character/CharacterManager";
4
3
  export * from "./character/Spawning";
5
4
  export * from "./character/url-position";
5
+ export * from "./character/types";
6
6
  export * from "./helpers/math-helpers";
7
- export { CharacterModelLoader } from "./character/loading/CharacterModelLoader";
8
- export { TextureWorkerPool } from "./character/loading/GLTFLoadingWorkerPool";
7
+ export * from "./rendering/IRenderer";
9
8
  export { CharacterState, AnimationState } from "./character/CharacterState";
9
+ export { AnimationMixer, AnimationWeights, AnimationTimes } from "./character/AnimationMixer";
10
10
  export { Key, KeyInputManager } from "./input/KeyInputManager";
11
11
  export { VirtualJoystick } from "./input/VirtualJoystick";
12
- export { MMLCompositionScene } from "./mml/MMLCompositionScene";
13
- export { TweakPane } from "./tweakpane/TweakPane";
14
- export { Composer } from "./rendering/composer";
15
- export { TimeManager } from "./time/TimeManager";
16
- export { CollisionsManager } from "./collisions/CollisionsManager";
17
- export { Sun } from "./sun/Sun";
18
- export { GroundPlane } from "./ground-plane/GroundPlane";
12
+ export { CollisionsManager, CollisionMesh } from "./collisions/CollisionsManager";
19
13
  export { LoadingScreenConfig, LoadingScreen } from "./loading-screen/LoadingScreen";
20
14
  export { ErrorScreen } from "./error-screen/ErrorScreen";
21
- export { EnvironmentConfiguration } from "./rendering/composer";
15
+ export { TweakPane } from "./tweakpane/TweakPane";
16
+ export { CharacterControllerValues, createDefaultCharacterControllerValues, } from "./tweakpane/blades/characterControlsFolder";
17
+ export { CameraValues, createDefaultCameraValues } from "./tweakpane/blades/cameraFolder";
22
18
  export * from "./math";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,yBAAyB,EACzB,sCAAsC,GACvC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,cAAc,QAAQ,CAAC"}