GameDesigner object rotation in degrees

This commit is contained in:
2026-04-13 19:14:25 +03:00
parent 613170178b
commit 8c9c02b4c1
+18 -6
View File
@@ -14,16 +14,16 @@
<v-btn value="perspective" icon="mdi-cone"></v-btn> <v-btn value="perspective" icon="mdi-cone"></v-btn>
<v-btn value="orthographic" icon="mdi-cone-off"></v-btn> <v-btn value="orthographic" icon="mdi-cone-off"></v-btn>
</v-btn-toggle> </v-btn-toggle>
<div v-if="currentObject" :version="version"> <div v-if="currentObject">
<v-card subtitle="Position" class="ma-1" color="light-blue-darken-4"> <v-card subtitle="Position" class="ma-1" color="light-blue-darken-4">
<v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="x" v-model="currentObject.position.x" :step="0.1"></v-number-input> <v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="x" v-model="currentObject.position.x" :step="0.1"></v-number-input>
<v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="y" v-model="currentObject.position.y" :step="0.1"></v-number-input> <v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="y" v-model="currentObject.position.y" :step="0.1"></v-number-input>
<v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="z" v-model="currentObject.position.z" :step="0.1"></v-number-input> <v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="z" v-model="currentObject.position.z" :step="0.1"></v-number-input>
</v-card> </v-card>
<v-card subtitle="Rotation" class="ma-1" color="green-darken-4"> <v-card subtitle="Rotation" class="ma-1" color="green-darken-4">
<v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="x" v-model="currentObject.rotation.x" :step="0.1"></v-number-input> <v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="x" v-model="rotation.x" :step="0.1"></v-number-input>
<v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="y" v-model="currentObject.rotation.y" :step="0.1"></v-number-input> <v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="y" v-model="rotation.y" :step="0.1"></v-number-input>
<v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="z" v-model="currentObject.rotation.z" :step="0.1"></v-number-input> <v-number-input :precision="null" controlVariant="stacked" hide-details density="compact" label="z" v-model="rotation.z" :step="0.1"></v-number-input>
</v-card> </v-card>
<v-card subtitle="Scale" class="ma-1" color="pink-darken-4"> <v-card subtitle="Scale" class="ma-1" color="pink-darken-4">
<template v-slot:append> <template v-slot:append>
@@ -77,7 +77,8 @@
<script> <script>
import { GameEngine } from '@/lib/GameEngine'; import { GameEngine } from '@/lib/GameEngine';
import { GameManager } from '@/lib/GameManager'; import { GameManager } from '@/lib/GameManager';
import { markRaw } from 'vue'; import { markRaw, computed } from 'vue';
import Utils from '#/app/Utils';
let engine = null, manager = null; let engine = null, manager = null;
@@ -100,7 +101,7 @@ export default {
renderType: 'ST', renderType: 'ST',
cameraType: 'perspective', cameraType: 'perspective',
uniformScale: true, uniformScale: true,
version: 0 rotation: {}
} }
}, },
@@ -112,6 +113,17 @@ export default {
stats: true, stats: true,
mode: 'GameDesigner' mode: 'GameDesigner'
}); });
const that = this;
['x', 'y', 'z'].forEach(c=>{
this.rotation[c] = computed({
get(){
return Utils.rad2deg(that.currentObject.rotation[c]);
},
set(v){
that.currentObject.rotation[c] = Utils.deg2rad(v);
}
})
});
manager = await new GameManager(engine, this.modelValue, null, { manager = await new GameManager(engine, this.modelValue, null, {
onObjectLoad:(sceneObjects, data, object3d, source)=>{ onObjectLoad:(sceneObjects, data, object3d, source)=>{
['position', 'scale', 'rotation'].forEach(p=>{ ['position', 'scale', 'rotation'].forEach(p=>{