-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Variable tempo conjugates #177
base: main
Are you sure you want to change the base?
Variable tempo conjugates #177
Conversation
@@ -149,6 +154,9 @@ class AlgToDOMTree extends TraversalDownUp<DataDown, DataUp, DataUp> { | |||
public traverseAlg(alg: Alg, dataDown: DataDown): DataUp { | |||
let moveCount = 0; | |||
const element = new TwistyAlgWrapperElem("twisty-alg-alg", alg); // TODO: pick a better class name. | |||
if (dataDown.type) { | |||
element.addClass(dataDown.type); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't love having the state stored in class but it was at least the easiest way I could find for POC. Still figuring out the code base so there may be a better way already that I'm just not aware of.
@@ -293,6 +301,7 @@ class AlgToDOMTree extends TraversalDownUp<DataDown, DataUp, DataUp> { | |||
earliestMoveIndex: dataDown.earliestMoveIndex + moveCount, | |||
twistyAlgViewer: dataDown.twistyAlgViewer, | |||
direction: dataDown.direction, | |||
type: "setup", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Open to alternate names for this and "execution" (unsure if there are technical terms for the different parts of a conjugate)
@@ -366,13 +376,18 @@ class MoveHighlighter { | |||
this.moveCharIndexMap.set(charIndex, elem); | |||
} | |||
|
|||
set(move: Parsed<Move> | null): void { | |||
set(move: Parsed<Move> | null, twistyPlayer: TwistyPlayer): void { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I couldn't find a way to access twistyPlayer from here, but I also didn't try very hard :P
Again, just moving quickly for POC
const newElem = move | ||
? this.moveCharIndexMap.get(move.startCharIndex) ?? null | ||
: null; | ||
if (this.currentElem === newElem) { | ||
return; | ||
} | ||
if (newElem?.parentElement?.classList.contains('execution')) { | ||
twistyPlayer.tempoScale = 10; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hardcoded for now. This is where I think implementation details would need sorting out. How would one pass in these values? Presumably something on DataDown?
@@ -28,7 +28,9 @@ <h1 style="text-align: center"> | |||
</h1> | |||
<twisty-player | |||
id="main-player" | |||
alg="([R, U])3 (U L)2' [M2': U2]" | |||
alg="[R2: R U' R' U' R U R' F' R U R' U' R' F R] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO: revert back.
This alg just made it easier to see my changes being applied.
Thanks for the PR! It definitely matches the style of the existing code, although I'm not sure this is the right place for it. Is your goal to set the tempo depending on where you start animating, and then keep that tempo for the rest of the alg? Or perhaps that you only plan to be animating one "alg" at a time? I think my original impression was that you wanted to speed up commutators and conjugates any time they appeared in an alg/solve. The most robust place to do that would be the place where durations are assigned to the alg: https://github.com/cubing/cubing.js/blob/f7f5574f5cdf5937681b09c9381604ef0fc8879e/src/cubing/twisty/controllers/indexer/tree/AlgWalker.ts Any chance you have a screenshot or two that convey the context for these animations, before I point you too far down a given path? |
I think my ultimate goal would be to have one long algorithm so that I could use this algviewer thing now that I know about it but then have different portions of it be time adjustable. For example (with the context of my project being geared towards blindsolving):
Right now I'm able to do this behavior but have to treat every setup, swap, and undo setup alg as totally separate. In other words each letter of the memorization sequence involves setting and unsetting the |
I have been playing around with |
9d66b71
to
e606af4
Compare
a0e0af5
to
6c8143d
Compare
1c43df3
to
cb52a09
Compare
8f6a252
to
c46ac2a
Compare
b5cb601
to
76de17c
Compare
2da319f
to
b0ef9d4
Compare
ff5f6eb
to
9521f7c
Compare
e7ff1f9
to
f9b74a8
Compare
83e8855
to
103d05c
Compare
No description provided.