feat: initial release of Titan 3D Web Application
CI/CD Pipeline / Build & Validate (push) Canceled after 0s
CI/CD Pipeline / Docker Build Validation (push) Canceled after 0s

This commit is contained in:
2026-08-28 18:04:12 +05:30
commit 10bd0a085f
104 changed files with 17905 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
import { create } from 'zustand';
export type MappingMode = 'imported' | 'planar' | 'box' | 'cylindrical' | 'triplanar';
export interface UVTransforms {
scale: [number, number];
repeat: [number, number];
offset: [number, number];
rotation: number;
}
export interface TriplanarTransforms {
scale: number;
blendSharpness: number;
rotation: [number, number, number];
worldSpace: boolean;
}
interface ConfiguratorState {
mappingMode: MappingMode;
uvTransforms: UVTransforms;
triplanarTransforms: TriplanarTransforms;
projectionAxis: 'x' | 'y' | 'z';
// Actions
setMappingMode: (mode: MappingMode) => void;
setUVTransforms: (transforms: Partial<UVTransforms>) => void;
setTriplanarTransforms: (transforms: Partial<TriplanarTransforms>) => void;
setProjectionAxis: (axis: 'x' | 'y' | 'z') => void;
}
export const useConfiguratorStore = create<ConfiguratorState>((set) => ({
mappingMode: 'imported',
projectionAxis: 'z',
uvTransforms: {
scale: [1, 1],
repeat: [1, 1],
offset: [0, 0],
rotation: 0,
},
triplanarTransforms: {
scale: 1,
blendSharpness: 5.0,
rotation: [0, 0, 0],
worldSpace: false,
},
setMappingMode: (mode) => set({ mappingMode: mode }),
setUVTransforms: (transforms) =>
set((state) => ({ uvTransforms: { ...state.uvTransforms, ...transforms } })),
setTriplanarTransforms: (transforms) =>
set((state) => ({ triplanarTransforms: { ...state.triplanarTransforms, ...transforms } })),
setProjectionAxis: (axis) => set({ projectionAxis: axis }),
}));