Add type checks and default creation functions for cone, torus, and dialogue-related entities

This commit is contained in:
2026-04-15 09:06:03 +02:00
parent 90ed0812a4
commit cd259fb6de
2 changed files with 96 additions and 7 deletions

View File

@@ -821,6 +821,36 @@ export function isRadialPrismVertexId(
);
}
export function isConeFaceId(value: unknown): value is ConeFaceId {
return value === "bottom" || (typeof value === "string" && value.startsWith("side-"));
}
export function isConeEdgeId(value: unknown): value is ConeEdgeId {
return (
typeof value === "string" &&
(value.startsWith("bottom-") || value.startsWith("side-"))
);
}
export function isConeVertexId(value: unknown): value is ConeVertexId {
return value === "apex" || (typeof value === "string" && value.startsWith("bottom-"));
}
export function isTorusFaceId(value: unknown): value is TorusFaceId {
return typeof value === "string" && value.startsWith("face-");
}
export function isTorusEdgeId(value: unknown): value is TorusEdgeId {
return (
typeof value === "string" &&
(value.startsWith("major-") || value.startsWith("tube-"))
);
}
export function isTorusVertexId(value: unknown): value is TorusVertexId {
return typeof value === "string" && value.startsWith("vertex-");
}
export function isFaceUvRotationQuarterTurns(value: unknown): value is FaceUvRotationQuarterTurns {
return typeof value === "number" && FACE_UV_ROTATION_QUARTER_TURNS.includes(value as FaceUvRotationQuarterTurns);
}
@@ -898,11 +928,26 @@ export function createDefaultWedgeBrushFaces(): WedgeBrushFaces {
}
export function createDefaultRadialPrismBrushFaces(
sideCount = 12
sideCount = DEFAULT_RADIAL_PRISM_SIDE_COUNT
): Record<RadialPrismFaceId, BrushFace> {
return createDefaultBrushFaces(getRadialPrismFaceIds(sideCount));
}
export function createDefaultConeBrushFaces(
sideCount = DEFAULT_CONE_SIDE_COUNT
): Record<ConeFaceId, BrushFace> {
return createDefaultBrushFaces(getConeFaceIds(sideCount));
}
export function createDefaultTorusBrushFaces(
majorSegmentCount = DEFAULT_TORUS_MAJOR_SEGMENT_COUNT,
tubeSegmentCount = DEFAULT_TORUS_TUBE_SEGMENT_COUNT
): Record<TorusFaceId, BrushFace> {
return createDefaultBrushFaces(
getTorusFaceIds(majorSegmentCount, tubeSegmentCount)
);
}
export function createDefaultBoxBrushWaterSettings(): BoxBrushWaterSettings {
return {
colorHex: DEFAULT_BOX_BRUSH_WATER_SETTINGS.colorHex,