Add support for cone and torus brushes in geometry module and introduce MakeNpcTalk sequence effect
This commit is contained in:
@@ -311,6 +311,10 @@ export function getBrushFaceIds(brush: Brush): WhiteboxFaceId[] {
|
|||||||
return [...WEDGE_FACE_IDS];
|
return [...WEDGE_FACE_IDS];
|
||||||
case "radialPrism":
|
case "radialPrism":
|
||||||
return getRadialPrismFaceIds(brush.sideCount);
|
return getRadialPrismFaceIds(brush.sideCount);
|
||||||
|
case "cone":
|
||||||
|
return getConeFaceIds(brush.sideCount);
|
||||||
|
case "torus":
|
||||||
|
return getTorusFaceIds(brush.majorSegmentCount, brush.tubeSegmentCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,6 +326,10 @@ export function getBrushEdgeIds(brush: Brush): WhiteboxEdgeId[] {
|
|||||||
return [...WEDGE_EDGE_IDS];
|
return [...WEDGE_EDGE_IDS];
|
||||||
case "radialPrism":
|
case "radialPrism":
|
||||||
return getRadialPrismEdgeIds(brush.sideCount);
|
return getRadialPrismEdgeIds(brush.sideCount);
|
||||||
|
case "cone":
|
||||||
|
return getConeEdgeIds(brush.sideCount);
|
||||||
|
case "torus":
|
||||||
|
return getTorusEdgeIds(brush.majorSegmentCount, brush.tubeSegmentCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -333,6 +341,10 @@ export function getBrushVertexIds(brush: Brush): WhiteboxVertexId[] {
|
|||||||
return [...WEDGE_VERTEX_IDS];
|
return [...WEDGE_VERTEX_IDS];
|
||||||
case "radialPrism":
|
case "radialPrism":
|
||||||
return getRadialPrismVertexIds(brush.sideCount);
|
return getRadialPrismVertexIds(brush.sideCount);
|
||||||
|
case "cone":
|
||||||
|
return getConeVertexIds(brush.sideCount);
|
||||||
|
case "torus":
|
||||||
|
return getTorusVertexIds(brush.majorSegmentCount, brush.tubeSegmentCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -347,6 +359,10 @@ export function getBrushFaceLabel(
|
|||||||
return WEDGE_FACE_LABELS[faceId as WedgeFaceId] ?? faceId;
|
return WEDGE_FACE_LABELS[faceId as WedgeFaceId] ?? faceId;
|
||||||
case "radialPrism":
|
case "radialPrism":
|
||||||
return getRadialPrismFaceLabel(faceId as RadialPrismFaceId);
|
return getRadialPrismFaceLabel(faceId as RadialPrismFaceId);
|
||||||
|
case "cone":
|
||||||
|
return getConeFaceLabel(faceId as ConeFaceId);
|
||||||
|
case "torus":
|
||||||
|
return getTorusFaceLabel(faceId as TorusFaceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -361,6 +377,10 @@ export function getBrushEdgeLabel(
|
|||||||
return WEDGE_EDGE_LABELS[edgeId as WedgeEdgeId] ?? edgeId;
|
return WEDGE_EDGE_LABELS[edgeId as WedgeEdgeId] ?? edgeId;
|
||||||
case "radialPrism":
|
case "radialPrism":
|
||||||
return getRadialPrismEdgeLabel(edgeId as RadialPrismEdgeId);
|
return getRadialPrismEdgeLabel(edgeId as RadialPrismEdgeId);
|
||||||
|
case "cone":
|
||||||
|
return getConeEdgeLabel(edgeId as ConeEdgeId);
|
||||||
|
case "torus":
|
||||||
|
return getTorusEdgeLabel(edgeId as TorusEdgeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -375,6 +395,10 @@ export function getBrushVertexLabel(
|
|||||||
return WEDGE_VERTEX_LABELS[vertexId as WedgeVertexId] ?? vertexId;
|
return WEDGE_VERTEX_LABELS[vertexId as WedgeVertexId] ?? vertexId;
|
||||||
case "radialPrism":
|
case "radialPrism":
|
||||||
return getRadialPrismVertexLabel(vertexId as RadialPrismVertexId);
|
return getRadialPrismVertexLabel(vertexId as RadialPrismVertexId);
|
||||||
|
case "cone":
|
||||||
|
return getConeVertexLabel(vertexId as ConeVertexId);
|
||||||
|
case "torus":
|
||||||
|
return getTorusVertexLabel(vertexId as TorusVertexId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -389,6 +413,10 @@ export function getBrushFaceVertexIds(
|
|||||||
return [...WEDGE_FACE_VERTEX_IDS[faceId as WedgeFaceId]];
|
return [...WEDGE_FACE_VERTEX_IDS[faceId as WedgeFaceId]];
|
||||||
case "radialPrism":
|
case "radialPrism":
|
||||||
return getRadialPrismFaceVertexIds(brush, faceId as RadialPrismFaceId);
|
return getRadialPrismFaceVertexIds(brush, faceId as RadialPrismFaceId);
|
||||||
|
case "cone":
|
||||||
|
return getConeFaceVertexIds(brush, faceId as ConeFaceId);
|
||||||
|
case "torus":
|
||||||
|
return getTorusFaceVertexIds(brush, faceId as TorusFaceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -412,6 +440,10 @@ export function getBrushEdgeVertexIds(
|
|||||||
edgeId as RadialPrismEdgeId,
|
edgeId as RadialPrismEdgeId,
|
||||||
brush.sideCount
|
brush.sideCount
|
||||||
);
|
);
|
||||||
|
case "cone":
|
||||||
|
return getConeEdgeVertexIds(edgeId as ConeEdgeId, brush.sideCount);
|
||||||
|
case "torus":
|
||||||
|
return getTorusEdgeVertexIds(brush, edgeId as TorusEdgeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -439,6 +471,10 @@ export function getBrushDefaultName(brush: Brush, index: number): string {
|
|||||||
return `Whitebox Wedge ${index + 1}`;
|
return `Whitebox Wedge ${index + 1}`;
|
||||||
case "radialPrism":
|
case "radialPrism":
|
||||||
return `Whitebox Cylinder ${index + 1}`;
|
return `Whitebox Cylinder ${index + 1}`;
|
||||||
|
case "cone":
|
||||||
|
return `Whitebox Cone ${index + 1}`;
|
||||||
|
case "torus":
|
||||||
|
return `Whitebox Torus ${index + 1}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -450,5 +486,9 @@ export function getBrushKindLabel(brush: Brush): string {
|
|||||||
return "Whitebox Wedge";
|
return "Whitebox Wedge";
|
||||||
case "radialPrism":
|
case "radialPrism":
|
||||||
return "Whitebox Cylinder";
|
return "Whitebox Cylinder";
|
||||||
|
case "cone":
|
||||||
|
return "Whitebox Cone";
|
||||||
|
case "torus":
|
||||||
|
return "Whitebox Torus";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,13 @@ export interface StartDialogueSequenceEffect {
|
|||||||
dialogueId: string;
|
dialogueId: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface MakeNpcTalkSequenceEffect {
|
||||||
|
stepClass: "impulse";
|
||||||
|
type: "makeNpcTalk";
|
||||||
|
npcEntityId: string;
|
||||||
|
dialogueId: string | null;
|
||||||
|
}
|
||||||
|
|
||||||
export interface TeleportPlayerSequenceEffect {
|
export interface TeleportPlayerSequenceEffect {
|
||||||
stepClass: "impulse";
|
stepClass: "impulse";
|
||||||
type: "teleportPlayer";
|
type: "teleportPlayer";
|
||||||
@@ -77,6 +84,7 @@ export type HeldSequenceStep = HeldControlSequenceEffect;
|
|||||||
|
|
||||||
export type ImpulseSequenceStep =
|
export type ImpulseSequenceStep =
|
||||||
| ImpulseControlSequenceEffect
|
| ImpulseControlSequenceEffect
|
||||||
|
| MakeNpcTalkSequenceEffect
|
||||||
| StartDialogueSequenceEffect
|
| StartDialogueSequenceEffect
|
||||||
| TeleportPlayerSequenceEffect
|
| TeleportPlayerSequenceEffect
|
||||||
| StartSceneTransitionSequenceEffect
|
| StartSceneTransitionSequenceEffect
|
||||||
@@ -100,6 +108,13 @@ export function cloneSequenceEffect(effect: SequenceEffect): SequenceEffect {
|
|||||||
type: "startDialogue",
|
type: "startDialogue",
|
||||||
dialogueId: effect.dialogueId
|
dialogueId: effect.dialogueId
|
||||||
};
|
};
|
||||||
|
case "makeNpcTalk":
|
||||||
|
return {
|
||||||
|
stepClass: "impulse",
|
||||||
|
type: "makeNpcTalk",
|
||||||
|
npcEntityId: effect.npcEntityId,
|
||||||
|
dialogueId: effect.dialogueId
|
||||||
|
};
|
||||||
case "teleportPlayer":
|
case "teleportPlayer":
|
||||||
return {
|
return {
|
||||||
stepClass: "impulse",
|
stepClass: "impulse",
|
||||||
@@ -158,6 +173,8 @@ export function getSequenceEffectLabel(effect: SequenceEffect): string {
|
|||||||
return getControlEffectLabel(effect.effect);
|
return getControlEffectLabel(effect.effect);
|
||||||
case "startDialogue":
|
case "startDialogue":
|
||||||
return "Start Dialogue";
|
return "Start Dialogue";
|
||||||
|
case "makeNpcTalk":
|
||||||
|
return "Make NPC Talk";
|
||||||
case "teleportPlayer":
|
case "teleportPlayer":
|
||||||
return "Teleport Player";
|
return "Teleport Player";
|
||||||
case "startSceneTransition":
|
case "startSceneTransition":
|
||||||
|
|||||||
Reference in New Issue
Block a user