123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import { nextTick, ref, toRaw, watchEffect } from "vue"
- import {Pose, SceneModel, sdk, SDK } from "../sdk"
- import { associationModels, sceneModelMap } from "./fuseMode"
- import { FuseModel, fuseModelsLoaded, GuidePath, setting } from "@/store"
- import { associationTaggings } from "./tagging"
- import { associationSetting } from "./setting"
- import { associationMessaures } from "./measure"
- export const getSupperPanoModel = () => {
- const supperModel = ref<FuseModel | null>(null);
- sdk.sceneBus.on("cameraChange", () => {
- const data = sdk.canTurnToPanoMode();
- if (data?.model) {
- for (const [f, s] of sceneModelMap.entries()) {
- if (toRaw(data.model) === toRaw(s)) {
- supperModel.value = f;
- return;
- }
- }
- }
- supperModel.value = null;
- });
- return supperModel;
- };
- export const analysisPose = (pose: Pose) => {
- if ('model' in pose) {
- let info: GuidePath['panoInfo'] | undefined = undefined
- let fuseMode: FuseModel
- for (const [k, v] of Array.from(sceneModelMap.entries())) {
- if (toRaw(v) === toRaw(pose.model)) {
- fuseMode = toRaw(k)
- }
- }
- if (fuseMode!) {
- info = {
- panoId: pose.panoId,
- modelId: fuseMode.id,
- posInModel: pose.posInModel,
- rotInModel: pose.rotInModel
- }
- return {
- position: pose.position,
- target: pose.target,
- panoInfo: info
- }
- }
- }
- return pose
- }
- export const analysisPoseInfo = (info: ReturnType<typeof analysisPose>) => {
- let pose: Pose = { target: info.target, position: info.position }
- if ('panoInfo' in info) {
- let sceneModel: SceneModel
- for (const [k, v] of Array.from(sceneModelMap.entries())) {
- if (k.id === info.panoInfo.modelId) {
- sceneModel = toRaw(v)
- }
- }
-
- if (sceneModel!) {
- pose = {
- ...pose,
- model: sceneModel,
- panoId: info.panoInfo.panoId,
- posInModel: info.panoInfo.posInModel,
- rotInModel: info.panoInfo.rotInModel,
- }
- }
- }
- return pose
- }
- export const setupAssociation = (mountEl: HTMLDivElement, sdk: SDK) => {
- associationModels(sdk)
- const stopWatch = watchEffect(() => {
- if (fuseModelsLoaded.value && setting.value) {
- associationTaggings(sdk, mountEl)
- associationMessaures(sdk)
- associationSetting(sdk, mountEl)
- nextTick(() => stopWatch())
- }
- })
- }
- export * from './fuseMode'
- export * from './guide'
- export * from './measure'
- export * from './setting'
- export * from './tagging'
|