Add foliage mask tracking and key utilities to terrain brush stroke

This commit is contained in:
2026-05-02 04:12:55 +02:00
parent f66358a21e
commit 70289a365b

View File

@@ -389,6 +389,7 @@ interface ActiveTerrainBrushStroke {
dirtyBounds: TerrainBrushDirtySampleBounds | null; dirtyBounds: TerrainBrushDirtySampleBounds | null;
heightSampleIndices: Set<number>; heightSampleIndices: Set<number>;
paintWeightIndices: Set<number>; paintWeightIndices: Set<number>;
foliageMaskValueKeys: Set<string>;
referenceHeight: number | null; referenceHeight: number | null;
lastAppliedPoint: { lastAppliedPoint: {
x: number; x: number;
@@ -397,6 +398,26 @@ interface ActiveTerrainBrushStroke {
toolState: ArmedTerrainBrushState; toolState: ArmedTerrainBrushState;
} }
function createTerrainFoliageMaskValueKey(layerId: string, index: number) {
return `${layerId}\u0000${index}`;
}
function parseTerrainFoliageMaskValueKey(key: string): {
layerId: string;
index: number;
} {
const separatorIndex = key.lastIndexOf("\u0000");
if (separatorIndex === -1) {
throw new Error("Invalid terrain foliage mask value key.");
}
return {
layerId: key.slice(0, separatorIndex),
index: Number(key.slice(separatorIndex + 1))
};
}
interface AffectedSelectionIds { interface AffectedSelectionIds {
brushIds: Set<string>; brushIds: Set<string>;
terrainIds: Set<string>; terrainIds: Set<string>;