# ESFireWall（火焰墙）

> 分类：**多点对象** | 引擎：Cesium | 基类：否
> 继承链：`Destroyable -> ESSceneObject -> ESVisualObject -> ESGeoVector -> ESFireWall`

ESFireWall 是用于创建环形火焰墙效果的对象。

## JSON 示例

```json
{
            "id": "firewall_xxx",
            "type": "ESFireWall",
            "name": "火焰墙",
            "points": [[116.39, 39.9, 0], [116.40, 39.9, 0], [116.40, 39.91, 0]],
            "fireHeight": 10
        }
```

## 属性

| 属性 | 类型 | 默认值 | 说明 | 来源 |
| --- | --- | --- | --- | --- |
| `allowPicking` | boolean | false | 是否允许拾取 默认false | ESVisualObject |
| `collision` | boolean | true | 是否开启碰撞监测 默认true ,主要是UE使用 | ESVisualObject |
| `devTags` | string[] \| undefined | undefined | 对象类型名称相关的开发标签数组，使用 reactArrayWithUndefined 进行响应式处理，默认为 undefined。 | ESSceneObject |
| `execOnceFuncStr` | string \| undefined | undefined | 一次性执行函数的字符串表示，默认为 undefined。 | ESSceneObject |
| `extras` | JsonValue | undefined | 扩展属性 JSON，必须整体赋值，使用 reactJson 进行响应式处理，默认为 undefined。 | ESSceneObject |
| `filled` | boolean | false | 面样式是否启用，默认false | ESGeoVector |
| `fillStyle` | ESJFillStyle | {             color: [1, 1, 1, 1],             material: '',             materialParams: {},             ground: false         } | 面样式 | ESGeoVector |
| `fireHeight` | number | 10.0 | 火焰高度 | ESFireWall |
| `fireIntensity` | number | 1.0 | 火焰强度（影响噪声振幅、颜色亮度） | ESFireWall |
| `fireWidth` | number | 5.0 | 火焰宽度（墙体厚度） | ESFireWall |
| `flyInParam` | ESJFlyInParam \| undefined | undefined | 飞入参数 | ESVisualObject |
| `flyToParam` | ESJFlyToParam \| undefined | undefined | 飞向参数 | ESVisualObject |
| `interpolationCount` | number | 1 | - | ESFireWall |
| `name` | string | "未命名场景对象" | 对象名称，默认为 '未命名场景对象'。 | ESSceneObject |
| `pointed` | boolean | false | 点样式是否启用，默认false | ESGeoVector |
| `points` | ESJVector3DArray | [] | 点坐标数组 [number, number, number][] 默认undefined | ESGeoVector |
| `pointStyle` | ESJPointStyle | {             size: 10,             sizeType: 'screen',             color: [1, 1, 1, 1],             material: '',             materialParams: {},             outlineColor: [1, 0, 0, 1],             outlineWidth: 2,         } | 点样式 | ESGeoVector |
| `ref` | string \| undefined | undefined | 对象引用，设置后可通过对象管理器 objm.$refs.xxx 快速获取到对象，默认为 undefined。 | ESSceneObject |
| `scale` | ESJVector3D | [1, 1, 1] | 缩放 [x,y,z] | ESFireWall |
| `show` | boolean | true | 是否显示 默认true | ESVisualObject |
| `smokeShow` | boolean | false | 显示烟雾 | ESFireWall |
| `stepCount` | number | 64 | RayMarching步进次数（quality=自定义时使用） | ESFireWall |
| `stroked` | boolean | false | 线样式是否启用，默认false | ESGeoVector |
| `strokeStyle` | ESJStrokeStyle | {             width: 1,             widthType: 'screen',             color: [1, 1, 1, 1],             material: '',             materialParams: {},             ground: false         } | 线样式 | ESGeoVector |
| `toDestroyFuncStr` | string \| undefined | undefined | 销毁函数的字符串表示，默认为 undefined。 | ESSceneObject |
| `updateFuncStr` | string \| undefined | undefined | 更新函数的字符串表示，默认为 undefined。 | ESSceneObject |
| `useFireParticleSystem` | boolean | true | - | ESFireWall |

## 方法

| 方法 | 参数 | 返回 | 说明 | 来源 |
| --- | --- | --- | --- | --- |
| `addToViewer(viewer: ESViewer)` | viewer: ESViewer | - | 将对象添加到指定视口中。<br>**参数**：viewer - 要添加对象的视口。 | ESSceneObject |
| `calcFlyInParam()` | - | - | 触发计算飞入参数事件 | ESVisualObject |
| `calcFlyToParam()` | - | - | 触发计算飞向参数事件 | ESVisualObject |
| `clear()` | - | - | - | ESFireWall |
| `createAttachedObject(createViewerPropSceneObject: (viewer: ESViewer) => Destroyable | undefined)` | createViewerPropSceneObject: (viewer: ESViewer) => Destroyable \| undefined | - | 创建与视口关联的对象，并返回一个销毁函数，用于手动销毁关联对象。<br>**参数**：createViewerPropSceneObject - 一个函数，用于创建与视口关联的对象。<br>**返回**：一个销毁函数，调用该函数可以销毁所有关联对象。 | ESSceneObject |
| `createFires()` | - | - | - | ESFireWall |
| `emptyFlyInParam()` | - | - | 清空飞入参数 | ESVisualObject |
| `emptyFlyToParam()` | - | - | 清空飞向参数 | ESVisualObject |
| `flush()` | - | - | 刷新对象，触发刷新事件。 | ESSceneObject |
| `flyIn(duration: number = 1)` | duration: number = 1 | - | 触发飞入事件<br>**参数**：duration - 飞入持续时间，默认为 1 | ESVisualObject |
| `flyTo(duration: number = 1)` | duration: number = 1 | - | 触发飞向事件<br>**参数**：duration - 飞向持续时间，默认为 1 | ESVisualObject |
| `geoPolygonOverlap(position: ESJVector3DArray)` | position: ESJVector3DArray | - | 计算一个多边形是否在另一个多边形内部<br>**参数**：position - 另一个多边形的位置数组<br>**返回**：如果在内部返回 true，不在内部返回 false，不满足条件返回 undefined | ESGeoVector |
| `getArea()` | - | - | 计算地理矢量的面积<br>**返回**：地理矢量的面积，如果点数不足 3 则返回 undefined | ESGeoVector |
| `getBoundSphere(viewer: ESViewer)` | viewer: ESViewer | - | 获取对象的边界球<br>**参数**：viewer - 视图器对象<br>**返回**：包含边界球信息的 Promise | ESVisualObject |
| `getBuffer(radius: number = 500, units?: string)` | radius: number = 500, units?: string | - | 计算地理矢量的缓冲区<br>**参数**：radius - 缓冲区半径，默认为 500；units - 单位，可选<br>**返回**：缓冲区的位置数组，如果不满足条件则返回 undefined | ESGeoVector |
| `getDifference(position: [number, number, number][])` | position: [number, number, number][] | - | 裁切当前地理矢量<br>**参数**：position - 用来裁切多边形的多边形的位置数组<br>**返回**：裁切结果，包含状态和位置数组 | ESGeoVector |
| `getDistance()` | - | - | 计算地理矢量中两点之间的距离<br>**返回**：两点之间的距离，如果点数不足 2 则返回 undefined | ESGeoVector |
| `getESProperties()` | - | - | 获取 ES 属性，在父类属性基础上添加火焰特效相关属性面板定义 | ESFireWall |
| `getIntersect(position: ESJVector3DArray)` | position: ESJVector3DArray | - | 计算当前地理矢量与另一个地理矢量的交集<br>**参数**：position - 另一个地理矢量的位置数组<br>**返回**：交集的位置数组，如果不满足条件则返回 undefined | ESGeoVector |
| `getPerimeter()` | - | - | 计算地理矢量的周长<br>**返回**：地理矢量的周长，如果点数不足 3 则返回 undefined | ESGeoVector |
| `getUnion(position: ESJVector3DArray)` | position: ESJVector3DArray | - | 计算当前地理矢量与另一个地理矢量的并集<br>**参数**：position - 另一个地理矢量的位置数组<br>**返回**：并集的位置数组，如果不满足条件则返回 undefined | ESGeoVector |
| `interpolationPoints(points: [number, number, number][])` | points: [number, number, number][] | - | 对多边形边界点进行插值，每两个相邻点之间插入中点，用于细化火焰墙粒子布置。 将输入点集视为环形多边形（首尾相连），对每个点与其下一个相邻点计算中点， 返回 `[原位置, 中点]` 交替排列的数组，使点数翻倍。<br>**参数**：points - 三维坐标点数组 `[经度, 纬度, 高度]`，表示环形多边形的顶点<br>**返回**：插值后的点数组，长度是输入的两倍，每对 `[原位置, 中点]` 交替排列 | ESFireWall |
| `registerAttachedObject(createViewerPropSceneObject: (viewer: ESViewer) => Destroyable | undefined)` | createViewerPropSceneObject: (viewer: ESViewer) => Destroyable \| undefined | - | 注册与视口关联的对象，当对象被添加到视口或从视口移除时，会自动创建或销毁关联对象。<br>**参数**：createViewerPropSceneObject - 一个函数，用于创建与视口关联的对象。 | ESSceneObject |
| `registerAttachedObjectForContainer(createContainerPropSceneObject: (viewer: ESViewer, container: HTMLDivElement) => Destroyable | undefined)` | createContainerPropSceneObject: (viewer: ESViewer, container: HTMLDivElement) => Destroyable \| undefined | - | 注册与视口容器关联的对象，当对象被添加到视口或从视口移除时，会自动创建或销毁关联对象。<br>**参数**：createContainerPropSceneObject - 一个函数，用于创建与视口容器关联的对象。 | ESSceneObject |
| `reload()` | - | - | - | ESSceneObject |
| `removefromViewer(viewer: ESViewer)` | viewer: ESViewer | - | 将对象从指定视口中移除。<br>**参数**：viewer - 要移除对象的视口。 | ESSceneObject |
| `supportEditingModes()` | - | - | 获取当前对象支持的编辑模式<br>**返回**：支持的编辑模式数组 | ESVisualObject |
| `updateEditing()` | - | void | 更新编辑状态，根据编辑绑定模式启动相应的编辑模式 | ESGeoVector |

## 事件

| 事件 | 说明 | 来源 |
| --- | --- | --- |
| `activeViewerChanged` | - | ESSceneObject |
| `areaChanged` | 获取面积变化的事件 | ESGeoVector |
| `calcFlyInParamEvent` | 获取计算飞入参数事件 | ESVisualObject |
| `calcFlyToParamEvent` | 获取计算飞向参数事件 | ESVisualObject |
| `createdEvent` | 获取对象创建事件。 | ESSceneObject |
| `editingChanged` | 获取编辑状态改变事件 | ESVisualObject |
| `fillColorChanged` | 获取填充颜色变化的事件 | ESGeoVector |
| `fillGroundChanged` | 获取面贴地状态变化的事件 | ESGeoVector |
| `fillMaterialChanged` | 获取面材质变化的事件 | ESGeoVector |
| `fillMaterialParamsChanged` | 获取面材质参数变化的事件 | ESGeoVector |
| `flushEvent` | 获取刷新对象事件。 | ESSceneObject |
| `flyInEvent` | 获取飞入事件 | ESVisualObject |
| `flyOverEvent` | 获取飞行结束事件 | ESVisualObject |
| `flyToDistanceChanged` | 获取飞向距离改变事件 | ESVisualObject |
| `flyToEvent` | 获取飞向事件 | ESVisualObject |
| `flyToFlyDurationChanged` | 获取飞向持续时间改变事件 | ESVisualObject |
| `flyToHDeltaChanged` | 获取飞向水平偏移量改变事件 | ESVisualObject |
| `flyToHeadingChanged` | 获取飞向航向改变事件 | ESVisualObject |
| `flyToPDeltaChanged` | 获取飞向垂直偏移量改变事件 | ESVisualObject |
| `flyToPitchChanged` | 获取飞向俯仰角改变事件 | ESVisualObject |
| `perimeterChanged` | 获取周长变化的事件 | ESGeoVector |
| `pickedEvent` | 获取拾取事件 | ESVisualObject |
| `pointColorChanged` | 获取点颜色变化的事件 | ESGeoVector |
| `pointMaterialChanged` | 获取点材质变化的事件 | ESGeoVector |
| `pointMaterialParamsChanged` | 获取点材质参数变化的事件 | ESGeoVector |
| `pointOutlineColorChanged` | 获取点轮廓颜色变化的事件 | ESGeoVector |
| `pointOutlineWidthChanged` | 获取点轮廓宽度变化的事件 | ESGeoVector |
| `pointSizeChanged` | 获取点大小变化的事件 | ESGeoVector |
| `pointSizeTypeChanged` | 获取点大小类型变化的事件 | ESGeoVector |
| `readyEvent` | - | ESSceneObject |
| `reloadEvent` | - | ESSceneObject |
| `strokeColorChanged` | 获取线颜色变化的事件 | ESGeoVector |
| `strokeGroundChanged` | 获取线贴地状态变化的事件 | ESGeoVector |
| `strokeMaterialChanged` | 获取线材质变化的事件 | ESGeoVector |
| `strokeMaterialParamsChanged` | 获取线材质参数变化的事件 | ESGeoVector |
| `strokeWidthChanged` | 获取线宽度变化的事件 | ESGeoVector |
| `strokeWidthTypeChanged` | 获取线宽度类型变化的事件 | ESGeoVector |
| `toDestroyFuncChanged` | 获取销毁函数改变事件。 | ESSceneObject |
| `updateFuncChanged` | 获取更新函数改变事件。 | ESSceneObject |

---
> 本文由 `generate-docs.mjs` 从源码自动生成，请勿手改。修改对象属性/方法后重跑脚本刷新。
