three-player-controller 0.3.3 → 0.3.5
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/README.md +233 -58
- package/dist/index.d.mts +124 -13
- package/dist/index.d.ts +124 -13
- package/dist/index.js +1964 -381
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1964 -381
- package/dist/index.mjs.map +1 -1
- package/package.json +17 -8
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,65 @@
|
|
|
1
|
+
import { RigidBody } from '@dimforge/rapier3d-compat';
|
|
1
2
|
import * as THREE from 'three';
|
|
2
3
|
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
|
3
4
|
|
|
5
|
+
/**
|
|
6
|
+
* 障碍物检测接口
|
|
7
|
+
*/
|
|
8
|
+
interface ObstacleChecker {
|
|
9
|
+
/**
|
|
10
|
+
* 检查两点之间的线段是否被障碍物阻挡
|
|
11
|
+
*/
|
|
12
|
+
isBlocked(start: THREE.Vector3, end: THREE.Vector3): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 获取障碍物周围的导航节点
|
|
15
|
+
*/
|
|
16
|
+
getNavigationNodes(start: THREE.Vector3, goal: THREE.Vector3): THREE.Vector3[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 路径规划器配置
|
|
20
|
+
*/
|
|
21
|
+
interface PathPlannerConfig {
|
|
22
|
+
debugEnabled?: boolean;
|
|
23
|
+
scene?: THREE.Scene;
|
|
24
|
+
scale?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A*路径规划器
|
|
28
|
+
*/
|
|
29
|
+
declare class PathPlanner {
|
|
30
|
+
private obstacleChecker;
|
|
31
|
+
private config;
|
|
32
|
+
private debugLines;
|
|
33
|
+
private debugPoints;
|
|
34
|
+
constructor(obstacleChecker: ObstacleChecker, config?: PathPlannerConfig);
|
|
35
|
+
private heuristic;
|
|
36
|
+
findPath(start: THREE.Vector3, goal: THREE.Vector3): THREE.Vector3[];
|
|
37
|
+
/**
|
|
38
|
+
* 重建路径
|
|
39
|
+
*/
|
|
40
|
+
private reconstructPath;
|
|
41
|
+
/**
|
|
42
|
+
* 路径平滑
|
|
43
|
+
*/
|
|
44
|
+
private smoothPath;
|
|
45
|
+
/**
|
|
46
|
+
* 可视化路径
|
|
47
|
+
*/
|
|
48
|
+
private visualizePath;
|
|
49
|
+
/**
|
|
50
|
+
* 清除路径可视化
|
|
51
|
+
*/
|
|
52
|
+
clearVisualization(): void;
|
|
53
|
+
/**
|
|
54
|
+
* 更新配置
|
|
55
|
+
*/
|
|
56
|
+
updateConfig(config: Partial<PathPlannerConfig>): void;
|
|
57
|
+
/**
|
|
58
|
+
* 销毁
|
|
59
|
+
*/
|
|
60
|
+
dispose(): void;
|
|
61
|
+
}
|
|
62
|
+
|
|
4
63
|
type PlayerControllerOptions = {
|
|
5
64
|
scene: THREE.Scene;
|
|
6
65
|
camera: THREE.PerspectiveCamera;
|
|
@@ -16,11 +75,16 @@ type PlayerControllerOptions = {
|
|
|
16
75
|
backwardAnim?: string;
|
|
17
76
|
flyAnim?: string;
|
|
18
77
|
flyIdleAnim?: string;
|
|
78
|
+
enterCarAnim?: string;
|
|
79
|
+
exitCarAnim?: string;
|
|
19
80
|
scale: number;
|
|
20
81
|
gravity?: number;
|
|
21
82
|
jumpHeight?: number;
|
|
22
83
|
speed?: number;
|
|
84
|
+
playerFlySpeed?: number;
|
|
23
85
|
rotateY?: number;
|
|
86
|
+
headObjName?: string;
|
|
87
|
+
flyEnabled?: boolean;
|
|
24
88
|
};
|
|
25
89
|
initPos?: THREE.Vector3;
|
|
26
90
|
mouseSensity?: number;
|
|
@@ -30,28 +94,75 @@ type PlayerControllerOptions = {
|
|
|
30
94
|
isShowMobileControls?: boolean;
|
|
31
95
|
thirdMouseMode?: 0 | 1 | 2 | 3;
|
|
32
96
|
enableZoom?: boolean;
|
|
97
|
+
enableOverShoulderView?: boolean;
|
|
98
|
+
};
|
|
99
|
+
type VehicleOptions = {
|
|
100
|
+
url: string;
|
|
101
|
+
position: THREE.Vector3;
|
|
102
|
+
wheelsNames: string[];
|
|
103
|
+
scale?: number;
|
|
104
|
+
animations: {
|
|
105
|
+
openDoorAnim?: string;
|
|
106
|
+
};
|
|
107
|
+
boardingPoint: THREE.Vector3;
|
|
108
|
+
seatOffset?: THREE.Vector3;
|
|
109
|
+
chassisRatio?: number;
|
|
110
|
+
suspensionRestLengthRatio?: number;
|
|
111
|
+
followVehicleDirection?: boolean;
|
|
112
|
+
speedMultiplier?: number;
|
|
113
|
+
};
|
|
114
|
+
type VehicleInstance = {
|
|
115
|
+
vehicleGroup: THREE.Group;
|
|
116
|
+
chassisBody: RigidBody;
|
|
117
|
+
vehicleController: any;
|
|
118
|
+
updateWheelVisuals: () => void;
|
|
119
|
+
vehicleMixer?: THREE.AnimationMixer;
|
|
120
|
+
vehicleActions?: Map<string, THREE.AnimationAction>;
|
|
121
|
+
vehiclIsOpenDoor: boolean;
|
|
122
|
+
vehicleBBox: THREE.Box3;
|
|
123
|
+
pathPlanner: PathPlanner;
|
|
124
|
+
scale: number;
|
|
125
|
+
boardingPoint: THREE.Vector3;
|
|
126
|
+
seatOffset: THREE.Vector3;
|
|
127
|
+
enterVehicleTime: number;
|
|
128
|
+
chassisRatio: number;
|
|
129
|
+
suspensionRestLengthRatio: number;
|
|
130
|
+
size: {
|
|
131
|
+
l: number;
|
|
132
|
+
w: number;
|
|
133
|
+
h: number;
|
|
134
|
+
};
|
|
135
|
+
speedMultiplier: number;
|
|
33
136
|
};
|
|
34
137
|
declare function playerController(): {
|
|
35
138
|
init: (opts: PlayerControllerOptions, callback?: () => void) => Promise<void>;
|
|
139
|
+
loadVehicleModel: (params: VehicleOptions) => Promise<void>;
|
|
36
140
|
changeView: () => void;
|
|
37
141
|
reset: (pos?: THREE.Vector3) => void;
|
|
38
142
|
update: (dt?: number) => Promise<void>;
|
|
39
143
|
destroy: () => void;
|
|
40
144
|
setInput: (i: any) => void;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
145
|
+
getPosition: () => THREE.Vector3;
|
|
146
|
+
getCenterScreenRaycastHit: () => THREE.Intersection<THREE.Object3D<THREE.Object3DEventMap>>;
|
|
147
|
+
getPerson: () => THREE.Object3D<THREE.Object3DEventMap>;
|
|
148
|
+
getActiveVehicle: () => VehicleInstance;
|
|
149
|
+
getAllVehicles: () => VehicleInstance[];
|
|
150
|
+
switchPlayerModel: (model: PlayerControllerOptions["playerModel"]) => Promise<void>;
|
|
151
|
+
setMouseSensitivity: (mouseSensity: number) => void;
|
|
152
|
+
setGravity: (gravity: number) => void;
|
|
153
|
+
setJumpHeight: (jumpHeight: number) => void;
|
|
154
|
+
setPlayerSpeed: (playerSpeed: number) => void;
|
|
155
|
+
setPlayerFlySpeed: (playerFlySpeed: number) => void;
|
|
156
|
+
setMinCamDistance: (minCamDistance: number) => void;
|
|
157
|
+
setMaxCamDistance: (maxCamDistance: number) => void;
|
|
158
|
+
setThirdMouseMode: (thirdMouseMode: 0 | 1 | 2 | 3) => void;
|
|
159
|
+
setEnableZoom: (enableZoom: boolean) => void;
|
|
160
|
+
setDebug: (debug: boolean) => void;
|
|
161
|
+
setOverShoulderView: (enable: boolean) => void;
|
|
162
|
+
setPlayerScale: (scale: number) => void;
|
|
53
163
|
};
|
|
164
|
+
type playerController = ReturnType<typeof playerController>;
|
|
54
165
|
declare function onAllEvent(): void;
|
|
55
166
|
declare function offAllEvent(): void;
|
|
56
167
|
|
|
57
|
-
export { type PlayerControllerOptions, offAllEvent, onAllEvent, playerController };
|
|
168
|
+
export { type PlayerControllerOptions, type VehicleInstance, type VehicleOptions, offAllEvent, onAllEvent, playerController };
|