This commit is contained in:
2025-03-21 11:57:18 +02:00
parent 14f97924d3
commit 43895ea0fc
7 changed files with 23 additions and 10 deletions
+1 -1
View File
@@ -64,7 +64,7 @@ class GamesManager{
this.list = async function(query){ this.list = async function(query){
return await db.list(collection, { return await db.list(collection, {
query, query,
project: { name:1, id:1, sceneThumb: '$scenes.data.environment'} project: { name:1, id:1, thumb: 1}
}); });
} }
+3 -3
View File
@@ -7,9 +7,9 @@
<v-btn icon="mdi-plus" variant="text" v-bind="props"></v-btn> <v-btn icon="mdi-plus" variant="text" v-bind="props"></v-btn>
</template> </template>
<v-list> <v-list>
<v-list-item to="/game-objects/add">Нов игрови обект</v-list-item> <v-list-item to="/game-objects/add">{{ l.createGameObject }}</v-list-item>
<v-list-item to="/scenarios/add">Нов сценарий</v-list-item> <v-list-item to="/scenarios/add">{{ l.createScenario }}</v-list-item>
<v-list-item to="/games/add">Нова игра</v-list-item> <v-list-item to="/games/add">{{ l.createGame }}</v-list-item>
</v-list> </v-list>
</v-menu> </v-menu>
</v-app-bar> </v-app-bar>
@@ -1,6 +1,9 @@
<template> <template>
<div v-show="forRendering"> <div v-show="forRendering">
<div class="position-relative">
<div ref="target"></div> <div ref="target"></div>
<div class="renderer-gizmo"></div>
</div>
<v-slide-group show-arrows> <v-slide-group show-arrows>
<v-slide-group-item v-for="(a, i) in animations" :key="i" v-slot="{ isSelected }"> <v-slide-group-item v-for="(a, i) in animations" :key="i" v-slot="{ isSelected }">
<v-btn :color="isSelected ? 'primary' : undefined" class="ma-2" <v-btn :color="isSelected ? 'primary' : undefined" class="ma-2"
@@ -79,8 +82,8 @@ export default{
}); });
//console.log(bb) //console.log(bb)
gameEngine.camera.position.set(bb.max.x, bb.max.y, bb.max.z); gameEngine.camera.position.set(bb.max.x, bb.max.y, bb.max.z);
gameEngine.controls.target.set((bb.max.x + bb.min.x) / 2, (bb.max.y + bb.min.y) / 2, (bb.max.z + bb.min.z) / 2) gameEngine.orbitControls.target.set((bb.max.x + bb.min.x) / 2, (bb.max.y + bb.min.y) / 2, (bb.max.z + bb.min.z) / 2)
gameEngine.controls.update(); gameEngine.orbitControls.update();
gameEngine.scene.add(gltf.scene); gameEngine.scene.add(gltf.scene);
//gameEngine.scene.add(gameEngine.light); //gameEngine.scene.add(gameEngine.light);
} }
@@ -104,6 +104,8 @@ export default {
currentObject(n){ currentObject(n){
gameEngine.transformControls.attach(n.__o); gameEngine.transformControls.attach(n.__o);
gameEngine.gizmo.target = n.__o.position; gameEngine.gizmo.target = n.__o.position;
//gameEngine.camera.lookAt(n.__o.position)
gameEngine.camera.updateProjectionMatrix()
}, },
renderType(v){ renderType(v){
gameEngine.renderType = v; gameEngine.renderType = v;
+1 -1
View File
@@ -150,7 +150,7 @@ class GameEngine {
} }
stop(){ stop(){
this.renderer.setAnimationLoop(null); this.renderer?.setAnimationLoop(null);
} }
getMouseVector(mouseEvent, domElement){ getMouseVector(mouseEvent, domElement){
+9 -1
View File
@@ -46,6 +46,13 @@ export default {
} }
this.scenarios = (await this.$api.scenario.search()).data.data; this.scenarios = (await this.$api.scenario.search()).data.data;
}, },
watch:{
'object.scenario'(v){
if (v){
this.object.thumb = this.scenarios?.find(s=>s.id == v)?.sceneThumb?.[0];
}
}
},
computed: { computed: {
id() { id() {
return this.$route.params?.id; return this.$route.params?.id;
@@ -56,7 +63,8 @@ export default {
this.loading = true; this.loading = true;
try { try {
let result = await this.$api.game.save(this.object); let result = await this.$api.game.save(this.object);
Object.assign(this.object, result.data.object); //Object.assign(this.object, result.data.object);
this.object.id = result.data.object.id;
if (this.id == 'add') { if (this.id == 'add') {
this.$router.replace({ params: { id: this.object.id } }); this.$router.replace({ params: { id: this.object.id } });
} }
+1 -1
View File
@@ -3,7 +3,7 @@
<v-row> <v-row>
<v-col v-for="(v, i) in items" :key="i" cols="12" xs="6" sm="4" md="3" xl="2" class="position-relative"> <v-col v-for="(v, i) in items" :key="i" cols="12" xs="6" sm="4" md="3" xl="2" class="position-relative">
<router-link :to="`/games/${v.id}`"> <router-link :to="`/games/${v.id}`">
<v-img :src="`/asset/thumb/${v.thumb?.[0]}.webp`"></v-img> <v-img :src="`/asset/thumb/${v.thumb}.webp`"></v-img>
</router-link> </router-link>
<div class="d-flex"> <div class="d-flex">
<span class="flex-grow-1">{{ v.name }}</span> <span class="flex-grow-1">{{ v.name }}</span>