电子围栏
电子围栏用来在3D场景中表示区域,比如作业区域、危险区域等。
电子围栏管理器组件
一个3D场景中可能有多个电子围栏,因此需要一个管理器来管理这些电子围栏。 FenceMgr 组件是一个管理器组件,需要挂载到场景层级上,用于管理场景层级下的多个电子围栏。
typescript
fenceMgr = app.levelMgr.current.addComponent(GLOW.FenceMgr);//添加电子围栏管理器组件绘制电子围栏
绘制电子围栏分3步走。 [绘制电子围栏示例]

开启电子围栏绘制
通过调用 startEdit 方法来开启电子围栏绘制功能。开启后,鼠标指针变成画笔,在场景中点击左键可以绘制电子围栏。
typescript
fenceMgr.startEdit(); //开启电子围栏绘制结束电子围栏绘制
可以手动调用 endEdit 方法来结束电子围栏绘制。另外,在绘制过程中,点击鼠标右键,会自动调用 endEdit 方法来结束电子围栏绘制。
typescript
fenceMgr.endEdit(); //手动结束电子围栏绘制获取电子围栏数据
在 endEdit 方法调用后,获取电子围栏数据。 FenceMgr 组件有一个 onEndEdit 属性,是在 endEdit 方法被调用后的回调函数,可以在该回调函数中获取电子围栏数据,需要预先设置该回调函数。
typescript
fenceMgr.onEndEdit = (fence: GLOW.Fence) => {//设置结束编辑回调函数
let json: any = fence.toJson();//序列化成JSON对象
let data: string = JSON.stringify(json);//序列化成JSON字符串
//将该JSON字符串保存起来方便后面使用
console.log('模拟保存:', data);
};加载电子围栏数据
手动调用 addOne 方法来添加一个电子围栏。 电子围栏添加完毕后,需要调用 build 方法来创建电子围栏模型。
typescript
//添加电子围栏
for (let json of dataList) {
let fence: GLOW.Fence = fenceMgr.addOne(json);//添加电子围栏
//可以对电子围栏实体设置业务操作
}
//构建电子围栏模型
fenceMgr.build();
文档中心