app.hypergames.hypersdk 1.11.0-beta.22 → 1.11.0-beta.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [1.11.0-beta.23](https://github.com/mvmhyper/hyper-sdk/compare/v1.11.0-beta.22...v1.11.0-beta.23) (2026-09-03)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **replay:** smooth read-only progress display ([ead4579](https://github.com/mvmhyper/hyper-sdk/commit/ead45798883b24e4b4354f3aab22400a1399e212))
7
+
1
8
  # [1.11.0-beta.22](https://github.com/mvmhyper/hyper-sdk/compare/v1.11.0-beta.21...v1.11.0-beta.22) (2026-09-03)
2
9
 
3
10
 
@@ -21,6 +21,7 @@ namespace Hyper.Internal
21
21
  [SerializeField] private TextMeshProUGUI playbackSpeedLabel;
22
22
  [SerializeField] private float[] playbackSpeeds = { 1f, 1.25f, 1.75f, 2f, 0.5f };
23
23
  [SerializeField, Min(1f)] private float seekPlaybackSpeed = 10f;
24
+ [SerializeField, Min(0f)] private float readOnlyProgressSmoothTime = 0.08f;
24
25
  [SerializeField, Range(0.25f, 1f)] private float seekSnapshotScale = 0.55f;
25
26
  [SerializeField, Range(0f, 0.5f)] private float seekPreparationProgress = 0.2f;
26
27
  [SerializeField, Range(0f, 0.15f)] private float seekPreparationProgressVariation = 0.05f;
@@ -35,6 +36,8 @@ namespace Hyper.Internal
35
36
  private bool wasSeeking;
36
37
  private bool isCapturingSeek;
37
38
  private float pendingSeekTarget;
39
+ private float displayedReadOnlyProgress;
40
+ private float readOnlyProgressVelocity;
38
41
  private Texture2D seekSnapshotTexture;
39
42
  private Image seekOverlayBackground;
40
43
  private Color seekOverlayBackgroundColor;
@@ -76,7 +79,7 @@ namespace Hyper.Internal
76
79
  float displayedProgress = seekingAllowed && ReplaySessionState.IsSeeking
77
80
  ? ReplaySessionState.SeekTarget01
78
81
  : ReplaySessionState.Progress01;
79
- progressSlider.SetValueWithoutNotify(displayedProgress);
82
+ SetProgressSliderValue(displayedProgress);
80
83
  }
81
84
  UpdatePlaybackSpeedLabel(ReplaySessionState.UserPlaybackSpeed);
82
85
  SetSeekingPresentation(seekingAllowed && ReplaySessionState.IsSeeking);
@@ -112,7 +115,7 @@ namespace Hyper.Internal
112
115
  : isSeeking
113
116
  ? ReplaySessionState.SeekTarget01
114
117
  : ReplaySessionState.Progress01;
115
- progressSlider.SetValueWithoutNotify(displayedProgress);
118
+ SetProgressSliderValue(displayedProgress, !seekingAllowed);
116
119
  }
117
120
 
118
121
  wasSeeking = isSeeking;
@@ -155,7 +158,7 @@ namespace Hyper.Internal
155
158
  if (progressSlider != null) progressSlider.interactable = false;
156
159
  if (seekLoadingOverlay != null) seekLoadingOverlay.SetActive(false);
157
160
  ClearSeekSnapshot();
158
- if (progressSlider != null) progressSlider.SetValueWithoutNotify(1f);
161
+ SetProgressSliderValue(1f);
159
162
  }
160
163
 
161
164
  internal void ResetForReplayRestart()
@@ -174,10 +177,7 @@ namespace Hyper.Internal
174
177
  : 0f;
175
178
  wasSeeking = ReplaySessionState.IsSeeking;
176
179
 
177
- if (progressSlider != null)
178
- {
179
- progressSlider.SetValueWithoutNotify(pendingSeekTarget);
180
- }
180
+ SetProgressSliderValue(pendingSeekTarget);
181
181
 
182
182
  UpdatePlaybackSpeedLabel(playbackSpeed);
183
183
  AlignPlaybackSpeedIndex(playbackSpeed);
@@ -412,7 +412,7 @@ namespace Hyper.Internal
412
412
  float displayedProgress = seekingAllowed && ReplaySessionState.IsSeeking
413
413
  ? ReplaySessionState.SeekTarget01
414
414
  : ReplaySessionState.Progress01;
415
- progressSlider.SetValueWithoutNotify(displayedProgress);
415
+ SetProgressSliderValue(displayedProgress);
416
416
 
417
417
  if (!seekingAllowed) return;
418
418
 
@@ -421,6 +421,37 @@ namespace Hyper.Internal
421
421
  seekInput.Initialize(progressSlider, SeekTo);
422
422
  }
423
423
 
424
+ private void SetProgressSliderValue(float targetProgress, bool smoothReadOnly = false)
425
+ {
426
+ if (progressSlider == null) return;
427
+
428
+ targetProgress = Mathf.Clamp01(targetProgress);
429
+ if (!smoothReadOnly || readOnlyProgressSmoothTime <= 0f ||
430
+ targetProgress < displayedReadOnlyProgress)
431
+ {
432
+ displayedReadOnlyProgress = targetProgress;
433
+ readOnlyProgressVelocity = 0f;
434
+ }
435
+ else
436
+ {
437
+ displayedReadOnlyProgress = Mathf.SmoothDamp(
438
+ displayedReadOnlyProgress,
439
+ targetProgress,
440
+ ref readOnlyProgressVelocity,
441
+ readOnlyProgressSmoothTime,
442
+ Mathf.Infinity,
443
+ Time.unscaledDeltaTime);
444
+
445
+ if (Mathf.Abs(targetProgress - displayedReadOnlyProgress) < 0.0001f)
446
+ {
447
+ displayedReadOnlyProgress = targetProgress;
448
+ readOnlyProgressVelocity = 0f;
449
+ }
450
+ }
451
+
452
+ progressSlider.SetValueWithoutNotify(displayedReadOnlyProgress);
453
+ }
454
+
424
455
  private void ConfigureSeekOverlay()
425
456
  {
426
457
  if (seekLoadingOverlay == null)
@@ -14,7 +14,7 @@ namespace Hyper.Internal
14
14
  [SerializeField] private BlinkingText blinkingText;
15
15
  [SerializeField] private RectTransform swipeGif;
16
16
  [SerializeField] private RectTransform handSpriteInGif;
17
- [SerializeField] private float replayAutoStartDelay = 1f;
17
+ [SerializeField] private float replayAutoStartDelay = 2f;
18
18
  private GameManager _gameManager;
19
19
  private StartCTA _currentCTA;
20
20
  private SwipeDirection _swipeDirection;
@@ -355,6 +355,7 @@ MonoBehaviour:
355
355
  - 2
356
356
  - 0.5
357
357
  seekPlaybackSpeed: 10
358
+ readOnlyProgressSmoothTime: 0.08
358
359
  seekSnapshotScale: 0.725
359
360
  seekPreparationProgress: 0.2
360
361
  seekPreparationProgressVariation: 0.05
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "app.hypergames.hypersdk",
3
- "version": "1.11.0-beta.22",
3
+ "version": "1.11.0-beta.23",
4
4
  "displayName": "HyperSDK",
5
5
  "description": "Official Unity SDK for Hyper: multiplayer battles, leaderboards, deterministic RNG, session management, tutorials, and WebGL optimizations for production-ready games.",
6
6
  "unity": "6000.0",