|
@@ -13,9 +13,15 @@ import {
|
|
|
|
|
|
import TaggingComponent from '@/components/tagging/list.vue'
|
|
|
|
|
|
-import type { SDK, SceneModel, SceneGuidePath } from '.'
|
|
|
+import type { SDK, SceneModel, SceneGuidePath, ModelAttrRange } from '.'
|
|
|
import { Model, Tagging } from '@/store'
|
|
|
|
|
|
+export const modelRange: ModelAttrRange = {
|
|
|
+ opacityRange: { min: 0, max: 1, step: 0.1 },
|
|
|
+ bottomRange: { min: -30, max: 70, step: 0.1 },
|
|
|
+ scaleRange: { min: 0, max: 2, step: 0.1 }
|
|
|
+}
|
|
|
+
|
|
|
const sceneModelMap = new WeakMap<Model, SceneModel>()
|
|
|
export const getSceneModel = (model: Model | null) => model && sceneModelMap.get(toRaw(model))
|
|
|
|
|
@@ -31,16 +37,14 @@ const associationModels = (sdk: SDK) => {
|
|
|
const itemRaw = toRaw(item)
|
|
|
const sceneModel = sdk.addModel({
|
|
|
...itemRaw,
|
|
|
+ ...modelRange,
|
|
|
type: ModelType.SWMX,
|
|
|
url: getResource(item.url)
|
|
|
})
|
|
|
sceneModelMap.set(itemRaw, sceneModel)
|
|
|
|
|
|
sceneModel.bus.on('transformChanged', transform => {
|
|
|
- Object.assign(item, {
|
|
|
- ...transform,
|
|
|
- scale: transform.scale ? transform.scale * 100 : item.scale
|
|
|
- })
|
|
|
+ Object.assign(item, transform)
|
|
|
})
|
|
|
sceneModel.bus.on('changeSelect', select => {
|
|
|
if (custom.currentModel === item && !select) {
|
|
@@ -76,8 +80,8 @@ const associationModels = (sdk: SDK) => {
|
|
|
watchEffect(() => {
|
|
|
getSceneModel(item)?.changeBottom(item.bottom)
|
|
|
})
|
|
|
- watchEffect(() => getSceneModel(item)?.changeOpacity(item.opacity / 100))
|
|
|
- watchEffect(() => getSceneModel(item)?.changeScale(item.scale / 100))
|
|
|
+ watchEffect(() => getSceneModel(item)?.changeOpacity(item.opacity))
|
|
|
+ watchEffect(() => getSceneModel(item)?.changeScale(item.scale))
|
|
|
watchEffect(() => getSceneModel(item)?.changeShow(modelShow.value))
|
|
|
stopLoadedWatch()
|
|
|
}
|