51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { GRASS_ART } from './art'
|
|
import type { GrassPreset } from './grass-schema'
|
|
|
|
/** Per-grass config: blade colour, blade count per tuft, default height (metres),
|
|
* a swatch, and a replaceable card `thumbnail` (see `thumbnails.ts`). Pure data
|
|
* shared by the geometry builder and the panel. */
|
|
export type GrassPresetSpec = {
|
|
id: GrassPreset
|
|
label: string
|
|
bladeColor: string
|
|
blades: number
|
|
defaultHeight: number
|
|
swatch: string
|
|
thumbnail: string
|
|
}
|
|
|
|
export const GRASS_PRESETS: Record<GrassPreset, GrassPresetSpec> = {
|
|
meadow: {
|
|
id: 'meadow',
|
|
label: 'Meadow',
|
|
bladeColor: '#5a8f3c',
|
|
blades: 10,
|
|
defaultHeight: 0.4,
|
|
swatch: '#5a8f3c',
|
|
thumbnail: GRASS_ART.meadow,
|
|
},
|
|
fescue: {
|
|
id: 'fescue',
|
|
label: 'Fescue',
|
|
bladeColor: '#7fae55',
|
|
blades: 8,
|
|
defaultHeight: 0.7,
|
|
swatch: '#7fae55',
|
|
thumbnail: GRASS_ART.fescue,
|
|
},
|
|
reed: {
|
|
id: 'reed',
|
|
label: 'Reed',
|
|
bladeColor: '#4a7d63',
|
|
blades: 6,
|
|
defaultHeight: 1.1,
|
|
swatch: '#4a7d63',
|
|
thumbnail: GRASS_ART.reed,
|
|
},
|
|
}
|
|
|
|
export const GRASS_PRESET_LIST: GrassPresetSpec[] = Object.values(GRASS_PRESETS)
|
|
|
|
/** Bounded seed pool so grass tufts share instancing variants (see trees). */
|
|
export const GRASS_SEED_POOL = [1, 7, 13, 21, 34]
|