@mml-io/3d-web-client-core 0.0.0-experimental-751c031-20230804
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/build/camera/CameraManager.d.ts +37 -0
- package/build/character/Character.d.ts +33 -0
- package/build/character/CharacterManager.d.ts +31 -0
- package/build/character/CharacterMaterial.d.ts +12 -0
- package/build/character/CharacterModel.d.ts +23 -0
- package/build/character/CharacterState.d.ts +21 -0
- package/build/character/LocalController.d.ts +64 -0
- package/build/character/ModelLoader.d.ts +14 -0
- package/build/character/RemoteController.d.ts +18 -0
- package/build/collisions/CollisionsManager.d.ts +25 -0
- package/build/helpers/math-helpers.d.ts +6 -0
- package/build/index.d.ts +9 -0
- package/build/index.js +2544 -0
- package/build/index.js.map +7 -0
- package/build/input/KeyInputManager.d.ts +18 -0
- package/build/mml/MMLCompositionScene.d.ts +18 -0
- package/build/rendering/composer.d.ts +35 -0
- package/build/rendering/post-effects/bright-contrast-sat.d.ts +2 -0
- package/build/rendering/post-effects/gauss-grain.d.ts +2 -0
- package/build/rendering/shaders/bayer-dither.d.ts +1 -0
- package/build/rendering/shaders/shader-helpers.d.ts +4 -0
- package/build/rendering/shaders/vertex-shader.d.ts +1 -0
- package/build/time/TimeManager.d.ts +18 -0
- package/build/tweakpane/TweakPane.d.ts +30 -0
- package/build/tweakpane/characterSettings.d.ts +89 -0
- package/build/tweakpane/composerSettings.d.ts +234 -0
- package/build/tweakpane/tweakPaneActivity.d.ts +2 -0
- package/package.json +28 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
import { PerspectiveCamera, Vector3 } from "three";
|
2
|
+
import { CollisionsManager } from "../collisions/CollisionsManager";
|
3
|
+
export declare class CameraManager {
|
4
|
+
private collisionsManager;
|
5
|
+
readonly camera: PerspectiveCamera;
|
6
|
+
initialDistance: number;
|
7
|
+
private minDistance;
|
8
|
+
private maxDistance;
|
9
|
+
private initialFOV;
|
10
|
+
private fov;
|
11
|
+
private minFOV;
|
12
|
+
private maxFOV;
|
13
|
+
private targetFOV;
|
14
|
+
private minPolarAngle;
|
15
|
+
private maxPolarAngle;
|
16
|
+
private dampingFactor;
|
17
|
+
targetDistance: number;
|
18
|
+
private distance;
|
19
|
+
private targetPhi;
|
20
|
+
private phi;
|
21
|
+
private targetTheta;
|
22
|
+
private theta;
|
23
|
+
private dragging;
|
24
|
+
private target;
|
25
|
+
private hadTarget;
|
26
|
+
private rayCaster;
|
27
|
+
constructor(collisionsManager: CollisionsManager);
|
28
|
+
private onResize;
|
29
|
+
private onMouseDown;
|
30
|
+
private onMouseUp;
|
31
|
+
private onMouseMove;
|
32
|
+
private onMouseWheel;
|
33
|
+
setTarget(target: Vector3): void;
|
34
|
+
private reverseUpdateFromPositions;
|
35
|
+
adjustCameraPosition(): void;
|
36
|
+
update(): void;
|
37
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { Color, Vector3 } from "three";
|
2
|
+
import { CameraManager } from "../camera/CameraManager";
|
3
|
+
import { CollisionsManager } from "../collisions/CollisionsManager";
|
4
|
+
import { KeyInputManager } from "../input/KeyInputManager";
|
5
|
+
import { TimeManager } from "../time/TimeManager";
|
6
|
+
import { CharacterModel } from "./CharacterModel";
|
7
|
+
import { LocalController } from "./LocalController";
|
8
|
+
export type CharacterDescription = {
|
9
|
+
meshFileUrl: string;
|
10
|
+
idleAnimationFileUrl: string;
|
11
|
+
jogAnimationFileUrl: string;
|
12
|
+
sprintAnimationFileUrl: string;
|
13
|
+
airAnimationFileUrl: string;
|
14
|
+
modelScale: number;
|
15
|
+
};
|
16
|
+
export declare class Character {
|
17
|
+
private readonly characterDescription;
|
18
|
+
private readonly id;
|
19
|
+
private readonly isLocal;
|
20
|
+
private readonly modelLoadedCallback;
|
21
|
+
private readonly collisionsManager;
|
22
|
+
private readonly keyInputManager;
|
23
|
+
private readonly cameraManager;
|
24
|
+
private readonly timeManager;
|
25
|
+
controller: LocalController | null;
|
26
|
+
name: string | null;
|
27
|
+
model: CharacterModel | null;
|
28
|
+
color: Color;
|
29
|
+
position: Vector3;
|
30
|
+
constructor(characterDescription: CharacterDescription, id: number, isLocal: boolean, modelLoadedCallback: () => void, collisionsManager: CollisionsManager, keyInputManager: KeyInputManager, cameraManager: CameraManager, timeManager: TimeManager);
|
31
|
+
private load;
|
32
|
+
update(time: number): void;
|
33
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { PositionAndRotation } from "mml-web";
|
2
|
+
import { Group, Vector3 } from "three";
|
3
|
+
import { CameraManager } from "../camera/CameraManager";
|
4
|
+
import { CollisionsManager } from "../collisions/CollisionsManager";
|
5
|
+
import { KeyInputManager } from "../input/KeyInputManager";
|
6
|
+
import { TimeManager } from "../time/TimeManager";
|
7
|
+
import { Character, CharacterDescription } from "./Character";
|
8
|
+
import { CharacterState } from "./CharacterState";
|
9
|
+
import { RemoteController } from "./RemoteController";
|
10
|
+
export declare class CharacterManager {
|
11
|
+
private readonly collisionsManager;
|
12
|
+
private readonly cameraManager;
|
13
|
+
private readonly timeManager;
|
14
|
+
private readonly inputManager;
|
15
|
+
private readonly clientStates;
|
16
|
+
private readonly sendUpdate;
|
17
|
+
private updateLocationHash;
|
18
|
+
loadingCharacters: Map<number, Promise<Character>>;
|
19
|
+
remoteCharacters: Map<number, Character>;
|
20
|
+
remoteCharacterControllers: Map<number, RemoteController>;
|
21
|
+
private characterDescription;
|
22
|
+
character: Character | null;
|
23
|
+
private cameraOffsetTarget;
|
24
|
+
private cameraOffset;
|
25
|
+
readonly group: Group;
|
26
|
+
constructor(collisionsManager: CollisionsManager, cameraManager: CameraManager, timeManager: TimeManager, inputManager: KeyInputManager, clientStates: Map<number, CharacterState>, sendUpdate: (update: CharacterState) => void);
|
27
|
+
spawnCharacter(characterDescription: CharacterDescription, id: number, isLocal?: boolean, spawnPosition?: Vector3): Promise<Character>;
|
28
|
+
getLocalCharacterPositionAndRotation(): PositionAndRotation;
|
29
|
+
clear(): void;
|
30
|
+
update(): void;
|
31
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { Color, MeshPhysicalMaterial } from "three";
|
2
|
+
type TUniform<TValue = any> = {
|
3
|
+
value: TValue;
|
4
|
+
};
|
5
|
+
export declare class CharacterMaterial extends MeshPhysicalMaterial {
|
6
|
+
uniforms: Record<string, TUniform>;
|
7
|
+
colorsCube216: Color[];
|
8
|
+
constructor();
|
9
|
+
private generateColorCube;
|
10
|
+
update(): void;
|
11
|
+
}
|
12
|
+
export {};
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { AnimationAction, AnimationMixer, Object3D } from "three";
|
2
|
+
import { CharacterDescription } from "./Character";
|
3
|
+
import { CharacterMaterial } from "./CharacterMaterial";
|
4
|
+
import { AnimationState } from "./CharacterState";
|
5
|
+
export declare class CharacterModel {
|
6
|
+
private readonly characterDescription;
|
7
|
+
private modelLoader;
|
8
|
+
mesh: Object3D | null;
|
9
|
+
material: CharacterMaterial;
|
10
|
+
animations: Record<string, AnimationAction>;
|
11
|
+
animationMixer: AnimationMixer | null;
|
12
|
+
currentAnimation: AnimationState;
|
13
|
+
constructor(characterDescription: CharacterDescription);
|
14
|
+
init(): Promise<void>;
|
15
|
+
updateAnimation(targetAnimation: AnimationState, deltaTime: number): void;
|
16
|
+
hideMaterialByMeshName(meshName: any): void;
|
17
|
+
private setShadows;
|
18
|
+
private applyMaterialToAllSkinnedMeshes;
|
19
|
+
private initAnimationMixer;
|
20
|
+
private loadMainMesh;
|
21
|
+
private setAnimationFromFile;
|
22
|
+
private transitionToAnimation;
|
23
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
export declare enum AnimationState {
|
2
|
+
"idle" = 0,
|
3
|
+
"walking" = 1,
|
4
|
+
"running" = 2,
|
5
|
+
"jumpToAir" = 3,
|
6
|
+
"air" = 4,
|
7
|
+
"airToGround" = 5
|
8
|
+
}
|
9
|
+
export type CharacterState = {
|
10
|
+
id: number;
|
11
|
+
position: {
|
12
|
+
x: number;
|
13
|
+
y: number;
|
14
|
+
z: number;
|
15
|
+
};
|
16
|
+
rotation: {
|
17
|
+
quaternionY: number;
|
18
|
+
quaternionW: number;
|
19
|
+
};
|
20
|
+
state: AnimationState;
|
21
|
+
};
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import { Line3 } from "three";
|
2
|
+
import { CameraManager } from "../camera/CameraManager";
|
3
|
+
import { CollisionsManager } from "../collisions/CollisionsManager";
|
4
|
+
import { KeyInputManager } from "../input/KeyInputManager";
|
5
|
+
import { TimeManager } from "../time/TimeManager";
|
6
|
+
import { CharacterModel } from "./CharacterModel";
|
7
|
+
import { CharacterState } from "./CharacterState";
|
8
|
+
export declare class LocalController {
|
9
|
+
private readonly model;
|
10
|
+
private readonly id;
|
11
|
+
private readonly collisionsManager;
|
12
|
+
private readonly keyInputManager;
|
13
|
+
private readonly cameraManager;
|
14
|
+
private readonly timeManager;
|
15
|
+
private collisionDetectionSteps;
|
16
|
+
capsuleInfo: {
|
17
|
+
radius: number;
|
18
|
+
segment: Line3;
|
19
|
+
};
|
20
|
+
private maxWalkSpeed;
|
21
|
+
private maxRunSpeed;
|
22
|
+
private gravity;
|
23
|
+
private jumpForce;
|
24
|
+
private coyoteTimeThreshold;
|
25
|
+
private coyoteTime;
|
26
|
+
private canJump;
|
27
|
+
private characterOnGround;
|
28
|
+
private characterWasOnGround;
|
29
|
+
private characterAirborneSince;
|
30
|
+
private currentHeight;
|
31
|
+
private characterVelocity;
|
32
|
+
private vectorUp;
|
33
|
+
private vectorDown;
|
34
|
+
private rotationOffset;
|
35
|
+
private azimuthalAngle;
|
36
|
+
private tempBox;
|
37
|
+
private tempMatrix;
|
38
|
+
private tempSegment;
|
39
|
+
private tempVector;
|
40
|
+
private tempVector2;
|
41
|
+
private rayCaster;
|
42
|
+
private forward;
|
43
|
+
private backward;
|
44
|
+
private left;
|
45
|
+
private right;
|
46
|
+
private run;
|
47
|
+
private jump;
|
48
|
+
private anyDirection;
|
49
|
+
private conflictingDirections;
|
50
|
+
private thirdPersonCamera;
|
51
|
+
private speed;
|
52
|
+
private targetSpeed;
|
53
|
+
networkState: CharacterState;
|
54
|
+
constructor(model: CharacterModel, id: number, collisionsManager: CollisionsManager, keyInputManager: KeyInputManager, cameraManager: CameraManager, timeManager: TimeManager);
|
55
|
+
update(): void;
|
56
|
+
private getTargetAnimation;
|
57
|
+
private updateRotationOffset;
|
58
|
+
private updateAzimuthalAngle;
|
59
|
+
private updateRotation;
|
60
|
+
private addScaledVectorToCharacter;
|
61
|
+
private updatePosition;
|
62
|
+
private updateNetworkState;
|
63
|
+
private resetPosition;
|
64
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { AnimationClip, Object3D } from "three";
|
2
|
+
export declare class ModelLoader {
|
3
|
+
private static instance;
|
4
|
+
private readonly loadingManager;
|
5
|
+
private readonly gltfLoader;
|
6
|
+
private modelCache;
|
7
|
+
private ongoingLoads;
|
8
|
+
constructor(maxCacheSize?: number);
|
9
|
+
static getInstance(): ModelLoader;
|
10
|
+
load(fileUrl: string, fileType: "model" | "animation"): Promise<Object3D | AnimationClip | undefined>;
|
11
|
+
private loadFromUrl;
|
12
|
+
}
|
13
|
+
declare const MODEL_LOADER: ModelLoader;
|
14
|
+
export default MODEL_LOADER;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { Object3D } from "three";
|
2
|
+
import { Character } from "./Character";
|
3
|
+
import { AnimationState, CharacterState } from "./CharacterState";
|
4
|
+
export declare class RemoteController {
|
5
|
+
readonly character: Character;
|
6
|
+
readonly id: number;
|
7
|
+
private modelLoader;
|
8
|
+
characterModel: Object3D | null;
|
9
|
+
private animationMixer;
|
10
|
+
private animations;
|
11
|
+
currentAnimation: AnimationState;
|
12
|
+
networkState: CharacterState;
|
13
|
+
constructor(character: Character, id: number);
|
14
|
+
update(clientUpdate: CharacterState, time: number, deltaTime: number): void;
|
15
|
+
setAnimationFromFile(animationType: AnimationState, fileName: string): Promise<void>;
|
16
|
+
private transitionToAnimation;
|
17
|
+
private updateFromNetwork;
|
18
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import { MElement } from "mml-web";
|
2
|
+
import { Box3, Group, Line3, Ray, Scene } from "three";
|
3
|
+
import { MeshBVH, MeshBVHVisualizer } from "three-mesh-bvh";
|
4
|
+
type CollisionMeshState = {
|
5
|
+
source: Group;
|
6
|
+
meshBVH: MeshBVH;
|
7
|
+
visualizer: MeshBVHVisualizer | null;
|
8
|
+
};
|
9
|
+
export declare class CollisionsManager {
|
10
|
+
private debug;
|
11
|
+
private scene;
|
12
|
+
private tempVector;
|
13
|
+
private tempVector2;
|
14
|
+
collisionMeshState: Map<Group, CollisionMeshState>;
|
15
|
+
private collisionTrigger;
|
16
|
+
constructor(scene: Scene);
|
17
|
+
raycastFirstDistance(ray: Ray): number | null;
|
18
|
+
private createCollisionMeshState;
|
19
|
+
addMeshesGroup(group: Group, mElement?: MElement): void;
|
20
|
+
updateMeshesGroup(group: Group): void;
|
21
|
+
removeMeshesGroup(group: Group): void;
|
22
|
+
private applyCollider;
|
23
|
+
applyColliders(tempSegment: Line3, radius: number, boundingBox: Box3): void;
|
24
|
+
}
|
25
|
+
export {};
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { Vector3 } from "three";
|
2
|
+
export declare const getSpawnPositionInsideCircle: (radius: number, positions: number, id: number, yPos?: number) => Vector3;
|
3
|
+
export declare const round: (n: number, digits: number) => number;
|
4
|
+
export declare const ease: (target: number, n: number, factor: number) => number;
|
5
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
6
|
+
export declare const remap: (value: number, minValue: number, maxValue: number, minScaledValue: number, maxScaledValue: number) => number;
|
package/build/index.d.ts
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
export { CameraManager } from "./camera/CameraManager";
|
2
|
+
export { CharacterDescription } from "./character/Character";
|
3
|
+
export { CharacterManager } from "./character/CharacterManager";
|
4
|
+
export { CharacterState, AnimationState } from "./character/CharacterState";
|
5
|
+
export { KeyInputManager } from "./input/KeyInputManager";
|
6
|
+
export { MMLCompositionScene } from "./mml/MMLCompositionScene";
|
7
|
+
export { Composer } from "./rendering/composer";
|
8
|
+
export { TimeManager } from "./time/TimeManager";
|
9
|
+
export { CollisionsManager } from "./collisions/CollisionsManager";
|