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/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
- getposition: () => THREE.Vector3;
42
- loadVehicleModel: (params: {
43
- url: string;
44
- position: THREE.Vector3;
45
- scale?: number;
46
- animations: {
47
- openDoorAnim?: string;
48
- wheelsTurnAnim?: string;
49
- turnLeftAnim?: string;
50
- turnRightAnim?: string;
51
- };
52
- }) => Promise<void>;
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 };