diff --git a/src/editor/Model2DEditor.vue b/src/editor/Model2DEditor.vue index 2409868..cd10a4f 100644 --- a/src/editor/Model2DEditor.vue +++ b/src/editor/Model2DEditor.vue @@ -306,6 +306,19 @@ export default defineComponent({ taskManager.runTask() }, addAmrMap(file) { + if (!this.viewport) { + system.showErrorDialog('请先加载地图') + return + } + if (!worldModel.state.isOpened) { + system.showErrorDialog('请先打开地图') + return + } + if (worldModel.state.runState.isRunning) { + system.showErrorDialog('请先停止地图运行') + return + } + if (!file) return file = file.raw if (!file) { @@ -327,7 +340,25 @@ export default defineComponent({ system.showErrorDialog('无效的AMR地图文件') return } - AmrMapConvert(this.viewport, jsonData) + const items = AmrMapConvert(jsonData) + if (!items || items.length === 0) { + system.showErrorDialog('AMR地图文件中没有有效的地图数据') + return + } + const viewport = this.viewport + // 清除当前地图 + viewport.stateManager.update(({ deleteEntity }) => { + _.forEach(viewport.entityManager.getAllEntityForGrid(), item => { + deleteEntity(item.id) + }) + }) + // 添加新地图 + viewport.stateManager.update(({ addEntity }) => { + items.forEach(item => { + addEntity(item) + }) + }) + system.showInfoDialog('AMR地图加载完毕') } catch (error) { diff --git a/src/editor/widgets/server/EnvSelectConnect.vue b/src/editor/widgets/server/EnvSelectConnect.vue index 5dfda8c..4483d35 100644 --- a/src/editor/widgets/server/EnvSelectConnect.vue +++ b/src/editor/widgets/server/EnvSelectConnect.vue @@ -3,7 +3,8 @@ :disabled="worldModelState.runState.currentEnvId && worldModelState.runState.isRunning" :model-value="worldModelState.runState.currentEnvId" @change="setEnvId"> - +