useObjects3dStore.js
2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import { defineStore, storeToRefs } from 'pinia';
import { onMounted, reactive, ref } from 'vue';
import CUBEIMAGE from '@/views/assets/images/functional-toolbar/objects3d/cube.png';
import SPHEREIMAGE from '@/views/assets/images/functional-toolbar/objects3d/sphere.png';
import CONEIMAGE from '@/views/assets/images/functional-toolbar/objects3d/cone.png';
import CYLINDERIMAGE from '@/views/assets/images/functional-toolbar/objects3d/cylinder.png';
import { addCone, addCube, addCyliner, addSphere } from '@/utility/jsm/function/getBasicMesh';
import { useEditorStore } from '@/views/stores/useEditorStore';
export const useObjects3dStore = defineStore('objects3d', () => {
const store = useEditorStore();
const { applyGenerateMesh } = store;
const items = reactive([
{
key: 'cube',
image: CUBEIMAGE,
parameteritems: {
length: 20,
width: 20,
height: 20
}
},
{
key: 'sphere',
image: SPHEREIMAGE,
parameteritems: {
radius: 20,
resolution: 20
}
},
{
key: 'cone',
image: CONEIMAGE,
parameteritems: {
radius: 20,
height: 20,
resolution: 20
}
},
{
key: 'cylinder',
image: CYLINDERIMAGE,
parameteritems: {
radius: 20,
height: 20,
resolution: 20
}
}
]);
const selecteditem = ref('cube');
const parameteritems = ref({ length: 20, width: 20, height: 20 });
const setSelectedItem = (val) => {
selecteditem.value = val;
const objects = items.find((el) => el.key === val);
if (objects) {
parameteritems.value = objects.parameteritems;
}
};
const setApplyGenerateMesh = () => {
const object = items.find((el) => el.key === selecteditem.value);
if (!object) return;
let mesh = null;
switch (selecteditem.value) {
case 'cube':
mesh = addCube(object.parameteritems);
break;
case 'sphere':
mesh = addSphere(object.parameteritems);
break;
case 'cone':
mesh = addCone(object.parameteritems);
break;
case 'cylinder':
mesh = addCyliner(object.parameteritems);
break;
default:
break;
}
applyGenerateMesh([mesh]);
};
onMounted(() => {
const objects = items.find((el) => el.key === 'cube');
if (objects) {
parameteritems.value = objects.parameteritems;
}
});
return {
items,
selecteditem,
parameteritems,
setSelectedItem,
setApplyGenerateMesh
};
});