diff --git a/packages/core/src/blitzkit/api/server/2_camouflageDefinitions.ts b/packages/core/src/blitzkit/api/server/2_camouflageDefinitions.ts index 88386017f..4462f1010 100644 --- a/packages/core/src/blitzkit/api/server/2_camouflageDefinitions.ts +++ b/packages/core/src/blitzkit/api/server/2_camouflageDefinitions.ts @@ -1,6 +1,5 @@ import { CamouflageDefinitions, - camouflagePreset, Sc2ReadStream, type TankParameters, } from "@blitzkit/core"; @@ -89,7 +88,10 @@ export abstract class ServerBlitzKitAPI2 extends ServerBlitzKitAPI1 { ); const [nation, tankKey] = vehicle.split(":"); - const preset = camouflagePreset(yamlEntry, nation, tankKey); + // some unique camos only set the preset for their one tank + const preset = + yamlEntry.preset ?? + yamlEntry.override?.[nation]?.override?.[tankKey]?.preset; let hasPreset = false; if (preset !== undefined) { diff --git a/packages/core/src/types/camouflagesYaml.ts b/packages/core/src/types/camouflagesYaml.ts index 5462c945a..35d1531ca 100644 --- a/packages/core/src/types/camouflagesYaml.ts +++ b/packages/core/src/types/camouflagesYaml.ts @@ -12,15 +12,3 @@ export type CamouflagesYaml = Record< >; } >; - -// some unique camos only set the preset for their one tank -export function camouflagePreset( - camouflage: CamouflagesYaml[string], - nation: string, - tankKey: string, -) { - return ( - camouflage.preset ?? - camouflage.override?.[nation]?.override?.[tankKey]?.preset - ); -} diff --git a/packages/website/src/core/blitzkit/jsxTree.tsx b/packages/website/src/core/blitzkit/jsxTree.tsx index 4a8fd1688..96ab50c03 100644 --- a/packages/website/src/core/blitzkit/jsxTree.tsx +++ b/packages/website/src/core/blitzkit/jsxTree.tsx @@ -30,6 +30,7 @@ export function jsxTree( props: ComponentProps<"group">, key: string, ) => ReactNode; + primitive?: (object3d: Object3D, key: string) => ReactNode; }, ): ReactNode { if (node instanceof Mesh) { diff --git a/packages/website/src/core/blitzkit/skinTree.tsx b/packages/website/src/core/blitzkit/skinTree.tsx index 44d9a7f47..81c5a46d6 100644 --- a/packages/website/src/core/blitzkit/skinTree.tsx +++ b/packages/website/src/core/blitzkit/skinTree.tsx @@ -1,4 +1,3 @@ -import type { ReactNode } from "react"; import type { Material, Object3D } from "three"; import type { Skin } from "../../hooks/useSkin"; import { jsxTree } from "./jsxTree"; @@ -18,9 +17,7 @@ export function nameOf(object3d: Object3D): string { export function skinTree( node: Object3D, skins: Skin[], - mergers: Mergers & { - primitive: (object: Object3D, key: string) => ReactNode; - }, + mergers: NonNullable, ) { const materials = new Map(); const states: Record = {}; @@ -48,7 +45,7 @@ export function skinTree( mesh(mesh, props, key) { const material = materials.get((mesh.material as Material).name); - return mergers!.mesh!( + return mergers.mesh!( mesh, material ? { ...props, material } : props, key, @@ -60,7 +57,11 @@ export function skinTree( {switchChildren(object3d) ?? props.children} {skins.flatMap((skin) => (skin.parts.get(object3d.name) ?? []).map((part) => - mergers.primitive(part, part.uuid), + mergers.primitive ? ( + mergers.primitive(part, part.uuid) + ) : ( + + ), ), )} diff --git a/packages/website/src/pages/[...chunk_models_legendary]/[id]/skins/[skin].glb.ts b/packages/website/src/pages/[...chunk_models_legendary]/[id]/skins/[skin].glb.ts index fc7ea0978..00ce9a45d 100644 --- a/packages/website/src/pages/[...chunk_models_legendary]/[id]/skins/[skin].glb.ts +++ b/packages/website/src/pages/[...chunk_models_legendary]/[id]/skins/[skin].glb.ts @@ -1,5 +1,4 @@ import { - camouflagePreset, parseHierarchies, Sc2ReadStream, type CamouflagesXml, @@ -74,7 +73,9 @@ export async function GET({ props }: APIContext<{ skin: number }>) { include as { vehicle: { name: string } } ).vehicle.name.split(":"); const { customEntities } = camouflagesYaml[key]; - const preset = camouflagePreset(camouflagesYaml[key], nation, tankKey); + const preset = + camouflagesYaml[key].preset ?? + camouflagesYaml[key].override?.[nation]?.override?.[tankKey]?.preset; const parameters = await vfs.yaml( `Data/3d/Tanks/Parameters/${nation}/${tankKey}.yaml`, );