Skip to content

Commit df77eee

Browse files
AmirMohammad CheraghaliAmirMohammad Cheraghali
authored andcommitted
fix: resolve syntax errors in movie recorder
1 parent b590708 commit df77eee

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

src/components/ProteinViewer.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,18 @@ export const ProteinViewer = forwardRef<ProteinViewerRef, ProteinViewerProps>(({
479479
let frame = 0;
480480
const originalSpin = stage.spinAnimation.paused; // Store original state
481481

482+
// Calculate required spin speed to complete 360 degrees in 'duration'
483+
// Default speed 0.01 roughly does ~360 in 4s (at 60fps?)
484+
// Actually NGL spinSpeed is angle per step.
485+
// Let's approximate: 0.01 is "normal".
486+
// If duration is 8000 (2x longer), speed should be 0.005 (0.5x).
487+
// Formula: newSpeed = 0.01 * (4000 / duration)
488+
const defaultSpeed = 0.01;
489+
const targetSpeed = defaultSpeed * (4000 / duration);
490+
491+
const oldSpeed = stage.getParameters().spinSpeed;
492+
stage.setParameters({ spinSpeed: targetSpeed });
493+
482494
// Ensure spin is ON for recording
483495
stage.setSpin(true);
484496

@@ -490,6 +502,8 @@ export const ProteinViewer = forwardRef<ProteinViewerRef, ProteinViewerProps>(({
490502
if (originalSpin) {
491503
stage.setSpin(false);
492504
}
505+
// Restore original speed
506+
stage.setParameters({ spinSpeed: oldSpeed });
493507
return;
494508
}
495509

@@ -503,6 +517,7 @@ export const ProteinViewer = forwardRef<ProteinViewerRef, ProteinViewerProps>(({
503517
alert(`Recording Error (Animation): ${err.message}`);
504518
mediaRecorder.stop();
505519
if (originalSpin) stage.setSpin(false);
520+
stage.setParameters({ spinSpeed: oldSpeed });
506521
}
507522
};
508523

0 commit comments

Comments
 (0)