跳到主要内容

VoxelEditorController

VoxelEditorController 持有可变体素文档和局部 Chunk 更新队列,必须与一个稳定的 VoxelViewerController 配对。构造后将它传给同一个 VoxelViewereditor 参数;不传 editor 时,Viewer 保持纯预览路径。

new VoxelEditorController(
viewer: VoxelViewerController,
options: VoxelEditorOptions = new VoxelEditorOptions()
)

会话与状态

方法返回值说明
enterEdit()Promise<void>恢复 JSON 或 VFP 权威体素、准备局部编辑 Chunk 和放置动画资源。未加载模型、VFP hash 校验失败或 URI 失效时 reject。
exitEdit()void退出编辑、清除视觉选区和待处理局部重建;不卸载当前预览。
isActive()boolean编辑模式是否已就绪。
isUpdating()boolean正在准备、局部更新或保存时为 true
canSaveToSource()boolean当前输入是否保留可写 Picker URI。
getState()VoxelEditorState当前状态的快照;详见 编辑器类型与保存 API

enterEdit() 重复调用是幂等的:已进入或正准备时直接返回。重新导入模型后应重新进入编辑。

模式与颜色

方法签名约束
切换模式setMode(mode: VoxelEditMode): void切换时会清空当前选区。
选择已有符号setSelectedSymbol(symbol: string): voidsymbol 必须属于当前调色板,否则抛出错误。
选择自由颜色setSelectedColor(hex: string): void支持 #RGB / #RRGGBB;未进入编辑时抛错。
X 对称setSymmetryX(enabled: boolean): void影响单点 ADD / DELETE / REPLACE,不改变已有选区。

模式的点击/拖动交互见 编辑器概览与接入

选择

方法签名返回/行为
清空clearSelection(): void不修改模型。
取副本getSelectionVoxels(): Array<VoxelSelection>返回源坐标与面方向的副本。
数量getSelectionSize(): number返回当前选区大小。
边界getSelectionBounds(): VoxelSelectionBounds | undefined返回包含式边界;空选区为 undefined
全选selectAll(): number选择全部非空体素。
按色selectByColor(color?: string, append?: boolean): number接受符号或十六进制颜色;未找到颜色时抛错。
三维盒selectByBox(min, max, append?: boolean): number两端点会取整、钳制并视为包含式边界。

append=true 只适用于按色和三维盒选择,表示保留现有选区后合并新命中。屏幕框选由 VoxelEditMode.BOX_SELECTVoxelViewer 手势驱动,不需要也不应调用内部射线方法。

批量修改与变换

方法签名返回值
删除选区deleteSelection(): number实际删除数量。
已有色换色setSelectionSymbol(symbol: string): number实际换色数量。
自由色换色setSelectionColor(hex: string): number实际换色数量。
移动moveSelectionBy(dx?: number, dy?: number, dz?: number): number变换后选区数量。
复制duplicateSelection(offset?: VoxelCoordinate): number复制品数量;复制品成为当前选区。
镜像mirrorSelection(axis?: VoxelAxis): number变换后选区数量。
旋转rotateSelection(axis?: VoxelAxis, quarterTurns?: number): number以 90° 整数倍旋转后的选区数量。
对齐alignSelection(mode?: VoxelSelectionAlign): number压到目标边界平面后的选区数量。

选区变换遇到网格外目标或未选中实心体素冲突时取消整次操作并返回 0;具体文本在 getState().message。所有成功修改均可撤销。

历史与导出

方法返回值说明
undo()void无历史或正在更新时无操作。
redo()void无重做历史或正在更新时无操作。
exportJsonText()string返回当前 JSON;未进入编辑时抛错。
save(options?)Promise<VoxelEditorSaveResult>覆写可写来源 URI。
saveToUri(uri, options?)Promise<VoxelEditorSaveResult>写入宿主已获取权限的 URI。
saveAs(context, options?)Promise<VoxelEditorSaveResult | undefined>拉起系统保存器;用户取消时返回 undefined

保存和 VFP 区段策略见 保存与性能

不属于公开业务 API 的成员

attachScene()handleRay()handleScreenRectangleSelection()previewScreenRectangleSelection() 是 Viewer 与 Editor 的内部桥接成员。不要从业务代码调用、保存或基于它们编写兼容逻辑;请通过 VoxelViewer({ editor }) 和上述公开方法完成交互。