Compare commits
3 Commits
ad14e4e51f
...
987270e073
Author | SHA1 | Date | |
---|---|---|---|
987270e073 | |||
951073dbe1 | |||
58149ab195 |
|
@ -1740,7 +1740,10 @@ function moveAsLowLevelMoves({ move, nextMove, startingPos, numProgessions }: {
|
||||||
beats: move.beats - 4,
|
beats: move.beats - 4,
|
||||||
endPosition: endingPos,
|
endPosition: endingPos,
|
||||||
// TODO Is bend the line just linear?
|
// TODO Is bend the line just linear?
|
||||||
movementPattern: { kind: SemanticAnimationKind.Linear },
|
movementPattern: {
|
||||||
|
kind: SemanticAnimationKind.Linear,
|
||||||
|
minRotation: startingPos.which.isLeft() ? -1 : +1
|
||||||
|
},
|
||||||
}], startingPos);
|
}], startingPos);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1858,12 +1861,14 @@ function moveAsLowLevelMoves({ move, nextMove, startingPos, numProgessions }: {
|
||||||
}
|
}
|
||||||
|
|
||||||
case "pass through":
|
case "pass through":
|
||||||
if (move.parameters.dir !== "along") {
|
if (move.parameters.dir === "left diagonal" || move.parameters.dir === "right diagonal") {
|
||||||
throw new Error("Unsupported pass through direction: " + move.parameters.dir);
|
// TODO There's logic for this below, but unsure it's right.
|
||||||
|
throw new Error(move.move + " with dir of " + move.parameters.dir + " is unsupported.");
|
||||||
}
|
}
|
||||||
|
const alongSet = move.parameters.dir === "along";
|
||||||
const passShoulder = move.parameters.shoulder ? Hand.Right : Hand.Left;
|
const passShoulder = move.parameters.shoulder ? Hand.Right : Hand.Left;
|
||||||
return handleMove(({ startPos }) => {
|
return handleMove(({ startPos }) => {
|
||||||
if (startPos.kind === PositionKind.Circle) {
|
if (alongSet && startPos.kind === PositionKind.Circle) {
|
||||||
const facing = startPos.which.facingUpOrDown();
|
const facing = startPos.which.facingUpOrDown();
|
||||||
const endPos: SemanticPosition = {
|
const endPos: SemanticPosition = {
|
||||||
kind: PositionKind.Circle,
|
kind: PositionKind.Circle,
|
||||||
|
@ -1885,7 +1890,31 @@ function moveAsLowLevelMoves({ move, nextMove, startingPos, numProgessions }: {
|
||||||
otherPath: "Swap",
|
otherPath: "Swap",
|
||||||
},
|
},
|
||||||
}], startPos);
|
}], startPos);
|
||||||
} else {
|
} else if (!alongSet && startPos.kind === PositionKind.Circle) {
|
||||||
|
const facing = startPos.which.facingAcross();
|
||||||
|
const endPos: SemanticPosition = {
|
||||||
|
kind: PositionKind.Circle,
|
||||||
|
which: startPos.which.swapAcross(),
|
||||||
|
facing,
|
||||||
|
setOffset: (startPos.setOffset ?? 0) + (move.parameters.dir === "across"
|
||||||
|
? 0
|
||||||
|
: (move.parameters.dir === "left diagonal") === startPos.which.isLeft() ? -1 : +1),
|
||||||
|
lineOffset: startPos.lineOffset,
|
||||||
|
};
|
||||||
|
|
||||||
|
return combine([{
|
||||||
|
beats: move.beats,
|
||||||
|
endPosition: endPos,
|
||||||
|
movementPattern: {
|
||||||
|
kind: SemanticAnimationKind.PassBy,
|
||||||
|
around: startPos.which.topBottomSide(),
|
||||||
|
side: passShoulder,
|
||||||
|
withHands: false,
|
||||||
|
facing: "Forward",
|
||||||
|
otherPath: "Swap",
|
||||||
|
},
|
||||||
|
}], startPos);
|
||||||
|
} else if (alongSet && startPos.kind === PositionKind.ShortLines) {
|
||||||
// TODO This assumes short *wavy* lines.
|
// TODO This assumes short *wavy* lines.
|
||||||
|
|
||||||
const endPos: SemanticPosition = {
|
const endPos: SemanticPosition = {
|
||||||
|
@ -1901,6 +1930,8 @@ function moveAsLowLevelMoves({ move, nextMove, startingPos, numProgessions }: {
|
||||||
endPosition: endPos,
|
endPosition: endPos,
|
||||||
movementPattern: { kind: SemanticAnimationKind.Linear },
|
movementPattern: { kind: SemanticAnimationKind.Linear },
|
||||||
}], startPos);
|
}], startPos);
|
||||||
|
} else {
|
||||||
|
throw new Error(move.move + " with dir of " + move.parameters.dir + " starting from " + startPos.kind + " is unsupported.");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -763,6 +763,7 @@ function animateLowLevelMoveWithoutSlide(move: LowLevelMove): animation.Animatio
|
||||||
const twirlCenter =
|
const twirlCenter =
|
||||||
CenterOf(move.movementPattern.around, move.startPosition.setOffset, move.startPosition.lineOffset);
|
CenterOf(move.movementPattern.around, move.startPosition.setOffset, move.startPosition.lineOffset);
|
||||||
const aroundTopOrBottom = move.movementPattern.around === CircleSide.Top || move.movementPattern.around === CircleSide.Bottom;
|
const aroundTopOrBottom = move.movementPattern.around === CircleSide.Top || move.movementPattern.around === CircleSide.Bottom;
|
||||||
|
const inShortLines = move.startPosition.kind === PositionKind.ShortLines;
|
||||||
return [
|
return [
|
||||||
new animation.TransitionAnimationSegment({
|
new animation.TransitionAnimationSegment({
|
||||||
actualAnimation: new animation.RotationAnimationSegment({
|
actualAnimation: new animation.RotationAnimationSegment({
|
||||||
|
@ -779,7 +780,7 @@ function animateLowLevelMoveWithoutSlide(move: LowLevelMove): animation.Animatio
|
||||||
around: {
|
around: {
|
||||||
center: twirlCenter,
|
center: twirlCenter,
|
||||||
width: aroundTopOrBottom ? setWidth : setWidth / 4,
|
width: aroundTopOrBottom ? setWidth : setWidth / 4,
|
||||||
height: aroundTopOrBottom ? setHeight / 4 : setHeight,
|
height: aroundTopOrBottom || inShortLines ? setHeight / 4 : setHeight,
|
||||||
},
|
},
|
||||||
facing: animation.RotationAnimationFacing.Linear,
|
facing: animation.RotationAnimationFacing.Linear,
|
||||||
hands: new Map<Hand, animation.HandAnimation>([
|
hands: new Map<Hand, animation.HandAnimation>([
|
||||||
|
|
Loading…
Reference in New Issue
Block a user