export const VEGETATION_LOD = {
  windAnimationRadius: 70,
  windFadeStart: 50,
  windFadeEnd: 70,
};

export const VEGETATION_TYPES = {
  buissons: {
    mapName: "buisson",
    modelPath: "/models/buisson/model.gltf",
    scaleMultiplier: 2,
    castShadow: true,
    receiveShadow: true,
    enabled: true,
  },
  sapin: {
    mapName: "sapin",
    modelPath: "/models/sapin/model.gltf",
    scaleMultiplier: 5,
    castShadow: true,
    receiveShadow: true,
    enabled: true,
  },
  arbre: {
    mapName: "arbre",
    modelPath: "/models/arbre/model.gltf",
    scaleMultiplier: 1,
    castShadow: true,
    receiveShadow: true,
    enabled: true,
  },
  champdeble: {
    mapName: "champdeble",
    modelPath: "/models/champdeble/model.gltf",
    scaleMultiplier: 1,
    castShadow: true,
    receiveShadow: true,
    enabled: true,
  },
  champdesoja: {
    mapName: "champdesoja",
    modelPath: "/models/champdesoja/model.gltf",
    scaleMultiplier: 1,
    castShadow: true,
    receiveShadow: true,
    enabled: true,
  },
  champsdetournesol: {
    mapName: "champsdetournesol",
    modelPath: "/models/champsdetournesol/model.gltf",
    scaleMultiplier: 1,
    castShadow: true,
    receiveShadow: true,
    enabled: true,
  },
} as const;

export type VegetationType = keyof typeof VEGETATION_TYPES;

export const INSTANCED_MAP_EXCEPTIONS = new Set([
  "Scene",
  "blocking",
  "terrain",
]);

export function getVegetationScaleMultiplier(name: string): number | null {
  const config = Object.values(VEGETATION_TYPES).find(
    (vegetationConfig) => vegetationConfig.mapName === name,
  );

  return config?.scaleMultiplier ?? null;
}
