fix(review): address audit findings before merge
🔍 Lint / 🪄 Check lint (pull_request) Has been cancelled
🔍 Lint / 🎨 Check format (pull_request) Has been cancelled
🔍 Lint / 🔎 Typecheck (pull_request) Has been cancelled
📊 Quality / 🔒 Security Audit (pull_request) Has been cancelled
📊 Quality / 📋 Dependency Freshness (pull_request) Has been cancelled
📊 Quality / 📦 Bundle Size (pull_request) Has been cancelled
🔍 Lint / 🏗 Build (pull_request) Has been cancelled
🔍 Lint / 🪄 Check lint (pull_request) Has been cancelled
🔍 Lint / 🎨 Check format (pull_request) Has been cancelled
🔍 Lint / 🔎 Typecheck (pull_request) Has been cancelled
📊 Quality / 🔒 Security Audit (pull_request) Has been cancelled
📊 Quality / 📋 Dependency Freshness (pull_request) Has been cancelled
📊 Quality / 📦 Bundle Size (pull_request) Has been cancelled
🔍 Lint / 🏗 Build (pull_request) Has been cancelled
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import { create } from "zustand";
|
||||
import {
|
||||
CHARACTER_CONFIGS,
|
||||
CHARACTER_IDS,
|
||||
type CharacterId,
|
||||
} from "@/data/world/characters/characterConfig";
|
||||
import type { Vector3Tuple } from "@/types/three/three";
|
||||
|
||||
interface CharacterDebugState {
|
||||
animation: string;
|
||||
position: Vector3Tuple;
|
||||
rotation: Vector3Tuple;
|
||||
scale: Vector3Tuple;
|
||||
}
|
||||
|
||||
interface CharacterDebugStore {
|
||||
characters: Record<CharacterId, CharacterDebugState>;
|
||||
setAnimation: (id: CharacterId, animation: string) => void;
|
||||
setPosition: (id: CharacterId, axis: 0 | 1 | 2, value: number) => void;
|
||||
setRotation: (id: CharacterId, axis: 0 | 1 | 2, value: number) => void;
|
||||
setScale: (id: CharacterId, axis: 0 | 1 | 2, value: number) => void;
|
||||
}
|
||||
|
||||
function updateVector(
|
||||
vector: Vector3Tuple,
|
||||
axis: 0 | 1 | 2,
|
||||
value: number,
|
||||
): Vector3Tuple {
|
||||
const next: Vector3Tuple = [...vector];
|
||||
next[axis] = value;
|
||||
return next;
|
||||
}
|
||||
|
||||
const initialCharacters = Object.fromEntries(
|
||||
CHARACTER_IDS.map((id) => {
|
||||
const config = CHARACTER_CONFIGS[id];
|
||||
|
||||
return [
|
||||
id,
|
||||
{
|
||||
animation: config.defaultAnimation,
|
||||
position: [...config.position],
|
||||
rotation: [...config.rotation],
|
||||
scale: [...config.scale],
|
||||
},
|
||||
];
|
||||
}),
|
||||
) as Record<CharacterId, CharacterDebugState>;
|
||||
|
||||
export const useCharacterDebugStore = create<CharacterDebugStore>((set) => ({
|
||||
characters: initialCharacters,
|
||||
setAnimation: (id, animation) =>
|
||||
set((state) => ({
|
||||
characters: {
|
||||
...state.characters,
|
||||
[id]: { ...state.characters[id], animation },
|
||||
},
|
||||
})),
|
||||
setPosition: (id, axis, value) =>
|
||||
set((state) => ({
|
||||
characters: {
|
||||
...state.characters,
|
||||
[id]: {
|
||||
...state.characters[id],
|
||||
position: updateVector(state.characters[id].position, axis, value),
|
||||
},
|
||||
},
|
||||
})),
|
||||
setRotation: (id, axis, value) =>
|
||||
set((state) => ({
|
||||
characters: {
|
||||
...state.characters,
|
||||
[id]: {
|
||||
...state.characters[id],
|
||||
rotation: updateVector(state.characters[id].rotation, axis, value),
|
||||
},
|
||||
},
|
||||
})),
|
||||
setScale: (id, axis, value) =>
|
||||
set((state) => ({
|
||||
characters: {
|
||||
...state.characters,
|
||||
[id]: {
|
||||
...state.characters[id],
|
||||
scale: updateVector(state.characters[id].scale, axis, value),
|
||||
},
|
||||
},
|
||||
})),
|
||||
}));
|
||||
@@ -1,89 +0,0 @@
|
||||
import { create } from "zustand";
|
||||
import {
|
||||
PERSONNAGE_CONFIGS,
|
||||
PERSONNAGE_IDS,
|
||||
type PersonnageId,
|
||||
} from "@/data/world/personnages/personnageConfig";
|
||||
import type { Vector3Tuple } from "@/types/three/three";
|
||||
|
||||
interface PersonnageDebugState {
|
||||
animation: string;
|
||||
position: Vector3Tuple;
|
||||
rotation: Vector3Tuple;
|
||||
scale: Vector3Tuple;
|
||||
}
|
||||
|
||||
interface PersonnageDebugStore {
|
||||
personnages: Record<PersonnageId, PersonnageDebugState>;
|
||||
setAnimation: (id: PersonnageId, animation: string) => void;
|
||||
setPosition: (id: PersonnageId, axis: 0 | 1 | 2, value: number) => void;
|
||||
setRotation: (id: PersonnageId, axis: 0 | 1 | 2, value: number) => void;
|
||||
setScale: (id: PersonnageId, axis: 0 | 1 | 2, value: number) => void;
|
||||
}
|
||||
|
||||
function updateVector(
|
||||
vector: Vector3Tuple,
|
||||
axis: 0 | 1 | 2,
|
||||
value: number,
|
||||
): Vector3Tuple {
|
||||
const next: Vector3Tuple = [...vector];
|
||||
next[axis] = value;
|
||||
return next;
|
||||
}
|
||||
|
||||
const initialPersonnages = Object.fromEntries(
|
||||
PERSONNAGE_IDS.map((id) => {
|
||||
const config = PERSONNAGE_CONFIGS[id];
|
||||
|
||||
return [
|
||||
id,
|
||||
{
|
||||
animation: config.defaultAnimation,
|
||||
position: [...config.position],
|
||||
rotation: [...config.rotation],
|
||||
scale: [...config.scale],
|
||||
},
|
||||
];
|
||||
}),
|
||||
) as Record<PersonnageId, PersonnageDebugState>;
|
||||
|
||||
export const usePersonnageDebugStore = create<PersonnageDebugStore>((set) => ({
|
||||
personnages: initialPersonnages,
|
||||
setAnimation: (id, animation) =>
|
||||
set((state) => ({
|
||||
personnages: {
|
||||
...state.personnages,
|
||||
[id]: { ...state.personnages[id], animation },
|
||||
},
|
||||
})),
|
||||
setPosition: (id, axis, value) =>
|
||||
set((state) => ({
|
||||
personnages: {
|
||||
...state.personnages,
|
||||
[id]: {
|
||||
...state.personnages[id],
|
||||
position: updateVector(state.personnages[id].position, axis, value),
|
||||
},
|
||||
},
|
||||
})),
|
||||
setRotation: (id, axis, value) =>
|
||||
set((state) => ({
|
||||
personnages: {
|
||||
...state.personnages,
|
||||
[id]: {
|
||||
...state.personnages[id],
|
||||
rotation: updateVector(state.personnages[id].rotation, axis, value),
|
||||
},
|
||||
},
|
||||
})),
|
||||
setScale: (id, axis, value) =>
|
||||
set((state) => ({
|
||||
personnages: {
|
||||
...state.personnages,
|
||||
[id]: {
|
||||
...state.personnages[id],
|
||||
scale: updateVector(state.personnages[id].scale, axis, value),
|
||||
},
|
||||
},
|
||||
})),
|
||||
}));
|
||||
Reference in New Issue
Block a user