deep-engine-demo/packages/docs/api/effect/SeismicWave.md
2026-04-19 18:46:28 +08:00

305 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
outline: [2, 3]
---
# SeismicWave
- 源文件:`packages/sdk/src/effect/SeismicWave.ts`
- 文档位置:`packages/docs/api/effect/SeismicWave.md`
## 接口:`SeismicWaveOptions`
- 作用SeismicWaveOptions 的结构定义。
### 字段
| 字段名 | 类型 | 必填 | 作用 |
| --- | --- | --- | --- |
| `emitterPositions` | `THREE.Vector3[]` | 否 | 用于保存 `emitterPositions` 的集合数据。 |
| `minRadius` | `number` | 否 | 用于保存 `minRadius` 对应的数据。 |
| `maxRadius` | `number` | 否 | 用于保存 `maxRadius` 对应的数据。 |
| `waveDuration` | `number` | 否 | 用于保存 `waveDuration` 对应的数据。 |
| `spawnInterval` | `number` | 否 | 用于保存 `spawnInterval` 对应的数据。 |
| `opacity` | `number` | 否 | 控制对象或材质的透明度。 |
| `color` | `THREE.Color` | 否 | 颜色配置。 |
| `autoStart` | `boolean` | 否 | 用于标记 `autoStart` 的启用状态。 |
| `startDelay` | `number` | 否 | 用于保存 `startDelay` 对应的数据。 |
| `shape` | `'sphere' \| 'hemisphere'` | 否 | 用于保存 `shape` 对应的数据。 |
| `useRangeCulling` | `boolean` | 否 | 用于标记 `useRangeCulling` 的启用状态。 |
## 类:`SeismicWave`
- 作用SeismicWave 类。
### 构造函数
#### `new SeismicWave(options?: SeismicWaveOptions)`
- 作用:创建 SeismicWave 实例。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `options` | `SeismicWaveOptions` | 否 | 当前功能对应的配置项。 |
- 出参:`SeismicWave`
- 返回说明:返回当前类实例。
#### `new SeismicWave(position: THREE.Vector3, startDelay?: number)`
- 作用:创建 SeismicWave 实例。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `position` | `THREE.Vector3` | 是 | 位置参数。 |
| `startDelay` | `number` | 否 | 参数 `startDelay`,类型为 `number`。 |
- 出参:`SeismicWave`
- 返回说明:返回当前类实例。
#### `new SeismicWave(positions: THREE.Vector3[], startDelay?: number)`
- 作用:创建 SeismicWave 实例。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `positions` | `THREE.Vector3[]` | 是 | 参数 `positions`,类型为 `THREE.Vector3[]`。 |
| `startDelay` | `number` | 否 | 参数 `startDelay`,类型为 `number`。 |
- 出参:`SeismicWave`
- 返回说明:返回当前类实例。
#### `new SeismicWave(optionsOrPosition?: SeismicWaveOptions | THREE.Vector3 | THREE.Vector3[], startDelay?: number)`
- 作用:创建 SeismicWave 实例。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `optionsOrPosition` | `SeismicWaveOptions \| THREE.Vector3 \| THREE.Vector3[]` | 否 | 参数 `optionsOrPosition`,类型为 `SeismicWaveOptions \| THREE.Vector3 \| THREE.Vector3[]`。 |
| `startDelay` | `number` | 否 | 参数 `startDelay`,类型为 `number`。 |
- 出参:`SeismicWave`
- 返回说明:返回当前类实例。
### 属性
| 属性名 | 可见性 | 类型 | 作用 |
| --- | --- | --- | --- |
| `options` | `public` | `Required<SeismicWaveOptions>` | 用于保存 `options` 对应的数据。 |
| `emitters` | `public` | `SeismicEmitter[]` | 用于保存 `emitters` 的集合数据。 |
| `waves` | `public` | `SeismicWaveInstance[]` | 用于保存 `waves` 的集合数据。 |
| `geometry` | `public` | `THREE.SphereGeometry \| null` | 用于保存 `geometry` 对应的数据。 |
| `active` | `public` | `boolean` | 用于标记 `active` 的启用状态。 |
| `startTime` | `public` | `number \| null` | 用于保存 `startTime` 对应的数据。 |
| `delayTimer` | `public` | `number \| null` | 用于保存 `delayTimer` 对应的数据。 |
| `boundingBox` | `public` | `ParametricBox \| null` | 用于保存 `boundingBox` 对应的数据。 |
### 方法
#### `init(): void`
- 作用:执行 init 初始化逻辑。
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `start(): void`
- 作用:执行 start 相关逻辑。
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `startWithDelay(delay: number): void`
- 作用:执行 start With Delay 相关逻辑。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `delay` | `number` | 是 | 参数 `delay`,类型为 `number`。 |
- 出参:`void`
- 返回说明:无返回值。
#### `stop(): void`
- 作用:执行 stop 相关逻辑。
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `clearWaves(): void`
- 作用:清理 Waves。
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `spawnWave(position: THREE.Vector3): void`
- 作用:执行 spawn Wave 相关逻辑。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `position` | `THREE.Vector3` | 是 | 位置参数。 |
- 出参:`void`
- 返回说明:无返回值。
#### `update(data: RenderEventData): void`
- 作用:更新 update。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `data` | `RenderEventData` | 是 | 输入数据。 |
- 出参:`void`
- 返回说明:无返回值。
#### `removeFromScene(scene: THREE.Scene): void`
- 作用:移除 From Scene。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `scene` | `THREE.Scene` | 是 | 目标场景实例。 |
- 出参:`void`
- 返回说明:无返回值。
#### `setOpacity(opacity: number): void`
- 作用:设置 Opacity。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `opacity` | `number` | 是 | 参数 `opacity`,类型为 `number`。 |
- 出参:`void`
- 返回说明:无返回值。
#### `setColor(color: number): void`
- 作用:设置 Color。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `color` | `number` | 是 | 颜色参数。 |
- 出参:`void`
- 返回说明:无返回值。
#### `updateEmitterPositions(positions: THREE.Vector3[]): void`
- 作用:更新 Emitter Positions。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `positions` | `THREE.Vector3[]` | 是 | 参数 `positions`,类型为 `THREE.Vector3[]`。 |
- 出参:`void`
- 返回说明:无返回值。
#### `dispose(): void`
- 作用:释放资源并销毁当前实例。
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `createDefaultEmitters(): THREE.Vector3[]`
- 作用:创建 Default Emitters。
- 入参:无
- 出参:`THREE.Vector3[]`
- 返回说明:返回数组结果,元素类型为 `THREE.Vector3`
## 构造示例
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/MineSeismicPanel.vue`
```ts
const section = bus.getSection();
faultSlip = new FaultSlip(section, {autoStart: true});
faultSlipSeismicWave = new SeismicWave({
emitterPositions: [new THREE.Vector3(0, 0, 0)],
shape: 'sphere',
autoStart: true
});
hasFaultSlip.value = true;
};
```
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/MineSeismicPanel.vue`
```ts
const createRockBurst = () => {
rockBurstSeismicWave = new SeismicWave({
emitterPositions: [new THREE.Vector3(1.5, 1.5, 1.5)],
shape: 'sphere',
autoStart: true
});
hasRockBurst.value = true;
};
```
## 函数示例
### `SeismicWave.dispose`
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/MineSeismicPanel.vue`
```ts
if (faultSlipSeismicWave) {
faultSlipSeismicWave.dispose();
faultSlipSeismicWave = null;
}
hasFaultSlip.value = false;
};
```
## Demo 参考
### `SeismicWave`
以下示例文件中可以看到该 API 的实际调用方式:
- `packages/demo/src/disasterFormationPanel/GoldMineScene/MineSeismicPanel.vue`
- `packages/demo/src/disasterFormationPanel/OilGasScene/OilGasMineSeismicPanel.vue`
- `packages/demo/src/panels/TunnelScene/DisturbanceLoadingPanel.vue`