diff --git a/src/components/SceneDesigner/AssetSelector.vue b/src/components/SceneDesigner/AssetSelector.vue index 00f6934..9fc101a 100644 --- a/src/components/SceneDesigner/AssetSelector.vue +++ b/src/components/SceneDesigner/AssetSelector.vue @@ -1,18 +1,26 @@ - - - - - - {{ v.name }} - mdi-{{ $p.objectTypes.find(t=>t.value == v.type).icon }} - - - - - + + + + + + + {{ v.name }} + mdi-{{ + $p.objectTypes.find(t=>t.value == v.type).icon }} + + + + + + + + + diff --git a/src/components/SceneDesigner/GameObject.vue b/src/components/SceneDesigner/GameObject.vue index ed47b38..23ac942 100644 --- a/src/components/SceneDesigner/GameObject.vue +++ b/src/components/SceneDesigner/GameObject.vue @@ -1,16 +1,19 @@ - + - + - + Choose game object + + + @@ -39,8 +42,7 @@ export default { parent: Object }, steps: [['x1', 'y1']], - icon: 'mdi-vector-line', - name: 'svg-game-object', + name: 'game-object', modifiers: ['x1', 'y1'], methods:{ intersect(v){ diff --git a/src/components/SceneDesigner/Scene.vue b/src/components/SceneDesigner/Scene.vue index 46b1242..cf0176f 100644 --- a/src/components/SceneDesigner/Scene.vue +++ b/src/components/SceneDesigner/Scene.vue @@ -1,20 +1,20 @@ - + - - - - - + Choose environment + + + + @@ -44,8 +44,7 @@ export default { parent: Object }, steps: [['x1', 'y1']], - icon: 'mdi-vector-line', - name: 'svg-scene', + name: 'scene', modifiers: ['x1', 'y1'], methods:{ intersect(v){ diff --git a/src/components/SceneDesigner/SceneDesigner.vue b/src/components/SceneDesigner/SceneDesigner.vue index 4f16941..e43b6ce 100644 --- a/src/components/SceneDesigner/SceneDesigner.vue +++ b/src/components/SceneDesigner/SceneDesigner.vue @@ -23,7 +23,73 @@ - + + + + + + + + + + + + + + + + + + + + + + {{ item.data.title }} + + + + + + + + + + + + {{ go.data.title }} + + + + + + + + + + {{ task.data.title }} + + + + + + + { + this.items?.forEach((i, ii)=>{ i.__type = 'Scene'; - fi.push(i); - i.data?.gameObjects?.forEach(go=>{ - fi.push(go); + i.__path = `scene-${ii.toString().padStart(4, '0')}`; + i.__level = 1; + i.data?.gameObjects?.forEach((go, igo)=>{ go.__parent = i; go.__type = 'GameObject'; + go.__path = `${i.__path}.go-${igo.toString().padStart(4, '0')}` + go.__level = 2; + go.data.tasks?.forEach((t, it)=>{ + fi.push(t); + t.__parent = go; + t.__type = 'Task'; + t.__path = `${go.__path}.task-${it.toString().padStart(4, '0')}` + t.__level = 3; + }) + fi.push(go); }) + fi.push(i); }) - return fi.reverse(); + return fi; } }, methods:{ @@ -241,19 +319,22 @@ export default { do { id = `${this.components[this.mode].name}-${nid++}` }while (this.flatItems.find(i=>i.id == id)); - let targetArray = this.items; + + let targetContainer = this.selectedItem[0]?.data; //this.items; if (this.mode == 'GameObject'){ - if (this.selectedItem[0].data && !this.selectedItem[0].data.gameObjects){ - this.selectedItem[0].data.gameObjects = []; - } - targetArray = this.selectedItem[0].data.gameObjects; + targetContainer.gameObjects = targetContainer.gameObjects || []; + targetContainer = targetContainer.gameObjects; + }else if(this.mode == 'Task'){ + targetContainer.tasks = targetContainer.tasks || []; + targetContainer = targetContainer.tasks; + }else{ + targetContainer = this.items } - targetArray.push({ + targetContainer.push({ //__type: this.mode, vd: this.target.target, - data: {}, - visible: true, - id, title: id + data: { title: id }, + visible: true }) } } @@ -305,9 +386,6 @@ export default { this.viewBox.h = r.clientHeight; //this.zoom = Math.min(r.clientWidth / this.viewBox.w, r.clientHeight / this.viewBox.h); }, - assetSelected(e, v){ - console.log(e, v) - } } } @@ -324,7 +402,7 @@ export default { clip-path: circle(50% at 50% 50%); } circle { - stroke: rgb(var(--v-theme-primary)); + stroke: rgba(var(--v-theme-primary), .7); fill:rgba(255,255,255,.5); stroke-width: 2px; } @@ -344,12 +422,13 @@ export default { } } overflow: hidden; + width: 100%; max-width: 100vw; - max-height: 95vh; + height: 95vh; &.pan { cursor: grab; } - &.Scene, &.GameObject { + &.Scene, &.GameObject, &.Task { cursor: grabbing; } } diff --git a/src/components/SceneDesigner/Task.vue b/src/components/SceneDesigner/Task.vue new file mode 100644 index 0000000..6897ac1 --- /dev/null +++ b/src/components/SceneDesigner/Task.vue @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/pages/scenarios/[[id]].vue b/src/pages/scenarios/[[id]].vue index f9b7744..a6735ab 100644 --- a/src/pages/scenarios/[[id]].vue +++ b/src/pages/scenarios/[[id]].vue @@ -1,23 +1,26 @@ - - - - - {{ $l.save }} - - - - - - - - + + + + + + + + + + + + + + + + + + Save +