separate scene and panorama

This commit is contained in:
2025-11-04 08:15:59 +02:00
parent 96012fda27
commit 429ab07db5
3 changed files with 21 additions and 8 deletions
+12 -3
View File
@@ -9,9 +9,15 @@
</g> </g>
</teleport> </teleport>
<v-card :title="modelValue.title" v-if="selected" class="mx-2" variant="text"> <v-card :title="modelValue.title" v-if="selected" class="mx-2" variant="text">
<asset-selector @select="assignEnvironment" :type="['Scene']"> <asset-selector @select="assignEnvironment" :type="['Panorama']">
<template v-slot:activator="props"> <template v-slot:activator="props">
<v-btn v-bind="props" prepend-icon="mdi-panorama-outline" block color="success" class="py-4">Choose environment</v-btn> <v-btn v-bind="props" prepend-icon="mdi-panorama-sphere-outline" block color="light-blue-darken-4">Choose environment</v-btn>
</template>
</asset-selector>
<asset-selector @select="assignScene" :type="['Scene']">
<template v-slot:activator="props">
<v-btn v-bind="props" prepend-icon="mdi-panorama-outline" block color="orange-darken-3" class="my-4">Choose scene</v-btn>
</template> </template>
</asset-selector> </asset-selector>
@@ -63,10 +69,13 @@ export default {
}, },
assignEnvironment(e){ assignEnvironment(e){
this.modelValue.environment = e.id; this.modelValue.environment = e.id;
},
assignScene(e){
this.modelValue.scene = e.id;
if (this.modelValue.id == this.modelValue.title){ if (this.modelValue.id == this.modelValue.title){
this.modelValue.title = e.name this.modelValue.title = e.name
} }
} },
} }
} }
</script> </script>
+8 -4
View File
@@ -97,7 +97,10 @@ export default {
async expandScenarioData(scene){ async expandScenarioData(scene){
const promises = []; const promises = [];
promises.push(this.$api.gameObject.load(scene.data.environment).then(r=>scene.data.$environment = r.data)) ['environment', 'scene'].filter(e=>scene.data[e]).forEach(e=>{
promises.push(this.$api.gameObject.load(scene.data[e]).then(r=>scene.data['$'+e] = r.data))
})
for (let i of scene.data.items || []) { for (let i of scene.data.items || []) {
if (i.data.io){ if (i.data.io){
if (i.data.io.go){ if (i.data.io.go){
@@ -121,10 +124,11 @@ export default {
await this.expandScenarioData(scene); await this.expandScenarioData(scene);
target.objects = target.objects || {}; target.objects = target.objects || {};
let l = target.objects; let l = target.objects;
if (this.scene.data.$environment.type == 'panorama2d'){ if (this.scene.data.$environment){
await gameEngine.loadPanorama(`/asset/default/${this.scene.data.$environment.asset.name}`); await gameEngine.loadPanorama(`/asset/default/${this.scene.data.$environment.asset.name}`);
}else{ }
let env = await gameEngine.load(`/asset/default/${this.scene.data.$environment.asset.name}`); if (this.scene.data.$scene){
let env = await gameEngine.load(`/asset/default/${this.scene.data.$scene.asset.name}`);
this.setObjectAttributes(l, this.scene.data, env, 100); this.setObjectAttributes(l, this.scene.data, env, 100);
gameEngine.activeObjects.add(env.scene); gameEngine.activeObjects.add(env.scene);
} }
+1 -1
View File
@@ -5,7 +5,7 @@ export default {
value: 'panorama2d', value: 'panorama2d',
icon: 'panorama-variant-outline', icon: 'panorama-variant-outline',
render: true, render: true,
type: 'Scene', type: 'Panorama',
color: 'light-blue-darken-4' color: 'light-blue-darken-4'
}, { }, {
value: 'environment3d', value: 'environment3d',