useMeshEditStore.js 2.05 KB
import { defineStore } from 'pinia';
import { reactive, ref } from 'vue';

import ADDIMAGE from '@/views/assets/images/functional-toolbar/meshEdit/add.png';
import REMOVEIMAGE from '@/views/assets/images/functional-toolbar/meshEdit/remove.png';
import SMOOTHIMAGE from '@/views/assets/images/functional-toolbar/meshEdit/smooth.png';
import FLATTENIMAGE from '@/views/assets/images/functional-toolbar/meshEdit/flatten.png';

import { useEditorStore } from '@/views/stores/useEditorStore';

export const useMeshEditStore = defineStore('meshedit', () => {
    const editorStore = useEditorStore();
    const { setScultMenu } = editorStore;

    const items = reactive([
        {
            key: 'add',
            image: ADDIMAGE,
            size: 2,
            intensity: 4
        },
        {
            key: 'remove',
            image: REMOVEIMAGE,
            size: 2,
            intensity: 4
        },
        {
            key: 'smooth',
            image: SMOOTHIMAGE,
            size: 2,
            intensity: 4
        },
        {
            key: 'flatten',
            image: FLATTENIMAGE,
            size: 2,
            intensity: 4
        }
    ]);

    const selecteditem = ref(items[0]);

    const changeSize = (val) => {
        const { key } = selecteditem.value;
        const object = items.find((el) => el.key === key);
        if (!object) return;
        object.size = val;
        setScultMenu(key, object.size, object.intensity);
    };

    const changeIntensity = (val) => {
        const { key } = selecteditem.value;
        const object = items.find((el) => el.key === key);
        if (!object) return;
        object.intensity = val;
        setScultMenu(key, object.size, object.intensity);
    };

    const setSelectedItem = (key) => {
        const object = items.find((el) => el.key === key);
        if (!object) return;
        selecteditem.value = object;
        setScultMenu(key, object.size, object.intensity);
    };

    return {
        items,
        selecteditem,
        setSelectedItem,
        changeSize,
        changeIntensity
    };
});