Changes
Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
This commit is contained in:
@@ -1,5 +1,53 @@
|
|||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
|
|
||||||
|
// ── Persistência de placement (fineTuning + escala) e flags WebXR ─────
|
||||||
|
const PLACEMENT_KEY = 'tsxr_placements_v1';
|
||||||
|
const XRFEAT_KEY = 'xrFeatures';
|
||||||
|
|
||||||
|
export interface XRFeatureFlags {
|
||||||
|
handTracking: boolean;
|
||||||
|
planeDetection: boolean;
|
||||||
|
hitTest: boolean;
|
||||||
|
domOverlay: boolean;
|
||||||
|
anchors: boolean;
|
||||||
|
meshDetection: boolean;
|
||||||
|
depthSensing: boolean;
|
||||||
|
layers: boolean;
|
||||||
|
bodyTracking: boolean;
|
||||||
|
}
|
||||||
|
const DEFAULT_XR_FEATURES: XRFeatureFlags = {
|
||||||
|
handTracking: true, planeDetection: true, hitTest: true, domOverlay: true,
|
||||||
|
anchors: true, meshDetection: true, depthSensing: true, layers: true,
|
||||||
|
bodyTracking: true,
|
||||||
|
};
|
||||||
|
function loadXRFeatures(): XRFeatureFlags {
|
||||||
|
try {
|
||||||
|
const raw = localStorage.getItem(XRFEAT_KEY);
|
||||||
|
if (raw) return { ...DEFAULT_XR_FEATURES, ...JSON.parse(raw) };
|
||||||
|
} catch {}
|
||||||
|
return { ...DEFAULT_XR_FEATURES };
|
||||||
|
}
|
||||||
|
function saveXRFeatures(f: XRFeatureFlags) {
|
||||||
|
try { localStorage.setItem(XRFEAT_KEY, JSON.stringify(f)); } catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface StoredPlacement { fineTuning: FineTuning; }
|
||||||
|
function loadPlacements(): Record<string, StoredPlacement> {
|
||||||
|
try {
|
||||||
|
const raw = localStorage.getItem(PLACEMENT_KEY);
|
||||||
|
if (raw) return JSON.parse(raw);
|
||||||
|
} catch {}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
function savePlacement(fileName: string, fineTuning: FineTuning) {
|
||||||
|
try {
|
||||||
|
const all = loadPlacements();
|
||||||
|
all[fileName] = { fineTuning };
|
||||||
|
localStorage.setItem(PLACEMENT_KEY, JSON.stringify(all));
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export interface ScaleRatio {
|
export interface ScaleRatio {
|
||||||
label: string; // e.g. "1:50", "2:1", "1:1"
|
label: string; // e.g. "1:50", "2:1", "1:1"
|
||||||
factor: number; // render multiplier: 1:50 => 0.02, 2:1 => 2, 1:1 => 1
|
factor: number; // render multiplier: 1:50 => 0.02, 2:1 => 2, 1:1 => 1
|
||||||
|
|||||||
Reference in New Issue
Block a user