enhance gamedesigner objects management (selection)
This commit is contained in:
@@ -78,6 +78,7 @@
|
|||||||
import { GameEngine } from '@/lib/GameEngine';
|
import { GameEngine } from '@/lib/GameEngine';
|
||||||
import { GameManager } from '@/lib/GameManager';
|
import { GameManager } from '@/lib/GameManager';
|
||||||
import { markRaw, computed } from 'vue';
|
import { markRaw, computed } from 'vue';
|
||||||
|
import { Vector3, Matrix4, Quaternion } from 'three';
|
||||||
import Utils from '#/app/Utils';
|
import Utils from '#/app/Utils';
|
||||||
|
|
||||||
let engine = null, manager = null;
|
let engine = null, manager = null;
|
||||||
@@ -113,6 +114,8 @@ export default {
|
|||||||
stats: true,
|
stats: true,
|
||||||
mode: 'GameDesigner'
|
mode: 'GameDesigner'
|
||||||
});
|
});
|
||||||
|
engine.perspectiveCamera.far = 1000;
|
||||||
|
engine.perspectiveCamera.updateProjectionMatrix();
|
||||||
const that = this;
|
const that = this;
|
||||||
['x', 'y', 'z'].forEach(c=>{
|
['x', 'y', 'z'].forEach(c=>{
|
||||||
this.rotation[c] = computed({
|
this.rotation[c] = computed({
|
||||||
@@ -228,8 +231,19 @@ export default {
|
|||||||
this.currentObject = this.flatObjects[oid]?.value;
|
this.currentObject = this.flatObjects[oid]?.value;
|
||||||
this.selectedObject = [oid];
|
this.selectedObject = [oid];
|
||||||
engine.transformControls.attach(this.currentObject.__o);
|
engine.transformControls.attach(this.currentObject.__o);
|
||||||
engine.gizmo.target = this.currentObject.position;
|
let position = new Vector3(), quat = new Quaternion();
|
||||||
engine.camera.updateProjectionMatrix();
|
let mtx = new Matrix4();
|
||||||
|
this.currentObject.__o.getWorldPosition(position);
|
||||||
|
engine.orbitControls.target.copy(position);
|
||||||
|
engine.gizmo.target.copy(position);
|
||||||
|
mtx.lookAt(engine.camera.position, position, engine.camera.up);
|
||||||
|
quat.setFromRotationMatrix(mtx);
|
||||||
|
engine.motionQueue.add({
|
||||||
|
o: engine.camera,
|
||||||
|
a: {quaternion: { x: quat.x, y:quat.y, z: quat.z, w: quat.w } },
|
||||||
|
t: 0.5
|
||||||
|
})
|
||||||
|
//engine.camera.updateProjectionMatrix();
|
||||||
this.objectAnimations = this.currentObject?.__animations?.map(a => ({
|
this.objectAnimations = this.currentObject?.__animations?.map(a => ({
|
||||||
name: a.name, id: a.uuid, a
|
name: a.name, id: a.uuid, a
|
||||||
}));
|
}));
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class GenericObject extends EventManager{
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data.exclude){
|
if (!data.exclude && (data.hud || data.description)){
|
||||||
engine.clickable.add(this.object, async e=>{
|
engine.clickable.add(this.object, async e=>{
|
||||||
this.object.__onhud = !this.object.__onhud;
|
this.object.__onhud = !this.object.__onhud;
|
||||||
if (engine.dashboard){
|
if (engine.dashboard){
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ export default {
|
|||||||
},
|
},
|
||||||
mounted(){
|
mounted(){
|
||||||
this.active = true;
|
this.active = true;
|
||||||
|
this.modelValue.collisionType ??= 'objectDefinied';
|
||||||
this.collisionTypes = Object.keys(this.l.collisionTypes).map(t=>({title: this.l.collisionTypes[t], value: t}))
|
this.collisionTypes = Object.keys(this.l.collisionTypes).map(t=>({title: this.l.collisionTypes[t], value: t}))
|
||||||
},
|
},
|
||||||
props:{
|
props:{
|
||||||
|
|||||||
Reference in New Issue
Block a user