@mml-io/3d-web-client-core 0.6.1 → 0.8.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.
@@ -16,6 +16,7 @@ export declare class CameraManager {
16
16
  private dampingFactor;
17
17
  targetDistance: number;
18
18
  private distance;
19
+ private desiredDistance;
19
20
  private targetPhi;
20
21
  private phi;
21
22
  private targetTheta;
@@ -1,4 +1,4 @@
1
- import * as THREE from "three";
1
+ import { Texture, MeshBasicMaterial } from "three";
2
2
  type RGBA = {
3
3
  r: number;
4
4
  g: number;
@@ -20,12 +20,12 @@ type CanvasTextOptions = {
20
20
  };
21
21
  export declare function CanvasText(message: string, options: CanvasTextOptions): HTMLCanvasElement;
22
22
  export declare function THREECanvasTextTexture(text: string, options: CanvasTextOptions): {
23
- texture: THREE.Texture;
23
+ texture: Texture;
24
24
  width: number;
25
25
  height: number;
26
26
  };
27
27
  export declare function THREECanvasTextMaterial(text: string, options: CanvasTextOptions): {
28
- material: THREE.MeshBasicMaterial;
28
+ material: MeshBasicMaterial;
29
29
  width: number;
30
30
  height: number;
31
31
  };
@@ -2,8 +2,10 @@ import { Color, Vector3 } from "three";
2
2
  import { CameraManager } from "../camera/CameraManager";
3
3
  import { CollisionsManager } from "../collisions/CollisionsManager";
4
4
  import { KeyInputManager } from "../input/KeyInputManager";
5
+ import { Composer } from "../rendering/composer";
5
6
  import { TimeManager } from "../time/TimeManager";
6
7
  import { CharacterModel } from "./CharacterModel";
8
+ import { CharacterSpeakingIndicator } from "./CharacterSpeakingIndicator";
7
9
  import { CharacterTooltip } from "./CharacterTooltip";
8
10
  import { LocalController } from "./LocalController";
9
11
  export type CharacterDescription = {
@@ -23,13 +25,15 @@ export declare class Character {
23
25
  private readonly keyInputManager;
24
26
  private readonly cameraManager;
25
27
  private readonly timeManager;
28
+ private readonly composer;
26
29
  controller: LocalController | null;
27
30
  name: string | null;
28
31
  model: CharacterModel | null;
29
32
  color: Color;
30
33
  position: Vector3;
31
34
  tooltip: CharacterTooltip | null;
32
- constructor(characterDescription: CharacterDescription, id: number, isLocal: boolean, modelLoadedCallback: () => void, collisionsManager: CollisionsManager, keyInputManager: KeyInputManager, cameraManager: CameraManager, timeManager: TimeManager);
35
+ speakingIndicator: CharacterSpeakingIndicator | null;
36
+ constructor(characterDescription: CharacterDescription, id: number, isLocal: boolean, modelLoadedCallback: () => void, collisionsManager: CollisionsManager, keyInputManager: KeyInputManager, cameraManager: CameraManager, timeManager: TimeManager, composer: Composer);
33
37
  private load;
34
38
  update(time: number): void;
35
39
  }
@@ -3,11 +3,13 @@ import { Group, Vector3 } from "three";
3
3
  import { CameraManager } from "../camera/CameraManager";
4
4
  import { CollisionsManager } from "../collisions/CollisionsManager";
5
5
  import { KeyInputManager } from "../input/KeyInputManager";
6
+ import { Composer } from "../rendering/composer";
6
7
  import { TimeManager } from "../time/TimeManager";
7
8
  import { Character, CharacterDescription } from "./Character";
8
9
  import { CharacterState } from "./CharacterState";
9
10
  import { RemoteController } from "./RemoteController";
10
11
  export declare class CharacterManager {
12
+ private readonly composer;
11
13
  private readonly collisionsManager;
12
14
  private readonly cameraManager;
13
15
  private readonly timeManager;
@@ -15,6 +17,7 @@ export declare class CharacterManager {
15
17
  private readonly clientStates;
16
18
  private readonly sendUpdate;
17
19
  private updateLocationHash;
20
+ private id;
18
21
  loadingCharacters: Map<number, Promise<Character>>;
19
22
  remoteCharacters: Map<number, Character>;
20
23
  remoteCharacterControllers: Map<number, RemoteController>;
@@ -22,10 +25,12 @@ export declare class CharacterManager {
22
25
  character: Character | null;
23
26
  private cameraOffsetTarget;
24
27
  private cameraOffset;
28
+ private speakingCharacters;
25
29
  readonly group: Group;
26
- constructor(collisionsManager: CollisionsManager, cameraManager: CameraManager, timeManager: TimeManager, inputManager: KeyInputManager, clientStates: Map<number, CharacterState>, sendUpdate: (update: CharacterState) => void);
30
+ constructor(composer: Composer, collisionsManager: CollisionsManager, cameraManager: CameraManager, timeManager: TimeManager, inputManager: KeyInputManager, clientStates: Map<number, CharacterState>, sendUpdate: (update: CharacterState) => void);
27
31
  spawnCharacter(characterDescription: CharacterDescription, id: number, isLocal?: boolean, spawnPosition?: Vector3): Promise<Character>;
28
32
  getLocalCharacterPositionAndRotation(): PositionAndRotation;
29
33
  clear(): void;
34
+ setSpeakingCharacter(id: number, value: boolean): void;
30
35
  update(): void;
31
36
  }
@@ -1,4 +1,4 @@
1
- import { AnimationAction, AnimationMixer, Object3D } from "three";
1
+ import { AnimationAction, AnimationMixer, Bone, Object3D } from "three";
2
2
  import { CharacterDescription } from "./Character";
3
3
  import { CharacterMaterial } from "./CharacterMaterial";
4
4
  import { AnimationState } from "./CharacterState";
@@ -7,6 +7,7 @@ export declare class CharacterModel {
7
7
  private modelLoader;
8
8
  mesh: Object3D | null;
9
9
  material: CharacterMaterial;
10
+ headBone: Bone | null;
10
11
  animations: Record<string, AnimationAction>;
11
12
  animationMixer: AnimationMixer | null;
12
13
  currentAnimation: AnimationState;
@@ -0,0 +1,17 @@
1
+ import { Camera, Object3D, Scene, Vector3 } from "three";
2
+ export declare class CharacterSpeakingIndicator {
3
+ private scene;
4
+ private vertexShader;
5
+ private fragmentShader;
6
+ private uniforms;
7
+ private geometry;
8
+ private material;
9
+ private mesh;
10
+ private currentAlpha;
11
+ private targetAlpha;
12
+ constructor(scene: Scene | Object3D);
13
+ setBillboarding(position: Vector3, camera: Camera): void;
14
+ setTime(value: number): void;
15
+ setSpeaking(value: boolean): void;
16
+ dispose(): void;
17
+ }
@@ -33,7 +33,6 @@ export declare class LocalController {
33
33
  private vectorDown;
34
34
  private rotationOffset;
35
35
  private azimuthalAngle;
36
- private tempBox;
37
36
  private tempMatrix;
38
37
  private tempSegment;
39
38
  private tempVector;
@@ -1,16 +1,26 @@
1
1
  import { MElement } from "mml-web";
2
- import { Box3, Group, Line3, Ray, Scene } from "three";
3
- import { MeshBVH, MeshBVHVisualizer } from "three-mesh-bvh";
2
+ import { Group, Line3, Matrix4, Ray, Scene } from "three";
3
+ import { MeshBVH } from "three-mesh-bvh";
4
4
  type CollisionMeshState = {
5
+ matrix: Matrix4;
5
6
  source: Group;
6
7
  meshBVH: MeshBVH;
7
- visualizer: MeshBVHVisualizer | null;
8
+ debugGroup?: Group;
9
+ trackCollisions: boolean;
8
10
  };
9
11
  export declare class CollisionsManager {
10
12
  private debug;
11
13
  private scene;
12
14
  private tempVector;
13
15
  private tempVector2;
16
+ private tempVector3;
17
+ private tempRay;
18
+ private tempMatrix;
19
+ private tempMatrix2;
20
+ private tempBox;
21
+ private tempEuler;
22
+ private tempSegment;
23
+ private tempSegment2;
14
24
  collisionMeshState: Map<Group, CollisionMeshState>;
15
25
  private collisionTrigger;
16
26
  constructor(scene: Scene);
@@ -20,6 +30,6 @@ export declare class CollisionsManager {
20
30
  updateMeshesGroup(group: Group): void;
21
31
  removeMeshesGroup(group: Group): void;
22
32
  private applyCollider;
23
- applyColliders(tempSegment: Line3, radius: number, boundingBox: Box3): void;
33
+ applyColliders(tempSegment: Line3, radius: number): void;
24
34
  }
25
35
  export {};
@@ -1,4 +1,6 @@
1
- import { Vector3 } from "three";
1
+ import { Quaternion, Vector3, Vector4 } from "three";
2
+ export declare const roundToDecimalPlaces: (value: number, decimalPlaces: number) => number;
3
+ export declare const toArray: (origin: Vector3 | Vector4 | Quaternion, precision?: number) => number[];
2
4
  export declare const getSpawnPositionInsideCircle: (radius: number, positions: number, id: number, yPos?: number) => Vector3;
3
5
  export declare const round: (n: number, digits: number) => number;
4
6
  export declare const ease: (target: number, n: number, factor: number) => number;