305 lines
7.8 KiB
Markdown
305 lines
7.8 KiB
Markdown
---
|
||
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`
|
||
|