You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
1.9 KiB
84 lines
1.9 KiB
import { renderIcon } from '@/utils/webutils.ts'
|
|
import { defineComponent, markRaw } from 'vue'
|
|
import Viewport from '@/designer/Viewport.ts'
|
|
|
|
export default defineComponent({
|
|
name: 'Model2DEditor',
|
|
data() {
|
|
const viewport = new Viewport(worldModel)
|
|
|
|
return {
|
|
isReady: false,
|
|
viewport: viewport,
|
|
currentFloor: '',
|
|
searchKeyword: ''
|
|
}
|
|
},
|
|
mounted() {
|
|
window['editor'] = this
|
|
},
|
|
beforeMount() {
|
|
this.initByFloor('')
|
|
delete window['editor']
|
|
},
|
|
methods: {
|
|
renderIcon,
|
|
initByFloor(floor) {
|
|
this.isReady = false
|
|
const viewportOrigin = this.viewport
|
|
if (viewportOrigin && viewportOrigin.state.isReady) {
|
|
viewportOrigin.destroy()
|
|
}
|
|
|
|
delete window['editor']
|
|
delete window['viewport']
|
|
delete window['scene']
|
|
delete window['renderer']
|
|
delete window['camera']
|
|
delete window['renderer']
|
|
delete window['controls']
|
|
|
|
if (!floor) {
|
|
return
|
|
}
|
|
|
|
const viewerDom = this.$refs.canvasContainer
|
|
const viewport = markRaw(new Viewport(worldModel))
|
|
this.viewport = viewport
|
|
|
|
viewport.initThree(viewerDom, floor)
|
|
|
|
window['viewport'] = viewport
|
|
window['scene'] = viewport.scene
|
|
window['renderer'] = viewport.renderer
|
|
window['camera'] = viewport.camera
|
|
window['renderer'] = viewport.renderer
|
|
window['controls'] = viewport.controls
|
|
|
|
viewerDom.focus()
|
|
this.isReady = true
|
|
}
|
|
},
|
|
watch: {
|
|
currentFloor: {
|
|
handler(newVal, oldVal) {
|
|
const floor = newVal
|
|
this.$nextTick(() => {
|
|
console.log('floor changed', floor)
|
|
this.initByFloor(newVal)
|
|
})
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
/**
|
|
* @returns {ViewportState|{}}
|
|
*/
|
|
state() {
|
|
return this.viewport.state
|
|
},
|
|
allLevels() {
|
|
return worldModel.allLevels
|
|
}
|
|
}
|
|
})
|
|
|