app.hypergames.hypersdk 1.11.0-beta.14 → 1.11.0-beta.15

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.15](https://github.com/mvmhyper/hyper-sdk/compare/v1.11.0-beta.14...v1.11.0-beta.15) (2026-08-31)
2
+
3
+
4
+ ### Features
5
+
6
+ * **replay:** show seek completion progress ([4e7c1b8](https://github.com/mvmhyper/hyper-sdk/commit/4e7c1b807bd9f34b97477ef39aa9ca3c06316ef3))
7
+
1
8
  # [1.11.0-beta.14](https://github.com/mvmhyper/hyper-sdk/compare/v1.11.0-beta.13...v1.11.0-beta.14) (2026-08-31)
2
9
 
3
10
 
@@ -32,6 +32,7 @@ namespace Hyper.Internal
32
32
  private Texture2D seekSnapshotTexture;
33
33
  private Image seekOverlayBackground;
34
34
  private Color seekOverlayBackgroundColor;
35
+ private ReplaySeekOverlay seekOverlay;
35
36
 
36
37
  private void Awake()
37
38
  {
@@ -79,6 +80,11 @@ namespace Hyper.Internal
79
80
  SetSeekingPresentation(isSeeking);
80
81
  }
81
82
 
83
+ if (isSeeking)
84
+ {
85
+ UpdateSeekProgress(true);
86
+ }
87
+
82
88
  if (progressSlider != null && (seekInput == null || !seekInput.IsDragging))
83
89
  {
84
90
  float displayedProgress = isCapturingSeek
@@ -260,6 +266,7 @@ namespace Hyper.Internal
260
266
  private void SetSeekingPresentation(bool isSeeking)
261
267
  {
262
268
  ReplayPresentationCanvas.SetSeekingLayer(isSeeking);
269
+ UpdateSeekProgress(isSeeking);
263
270
  if (seekLoadingOverlay != null) seekLoadingOverlay.SetActive(isSeeking);
264
271
  if (progressSlider != null) progressSlider.interactable = !isSeeking && !ReplaySessionState.HasEnded;
265
272
  if (playbackSpeedButton != null)
@@ -404,10 +411,31 @@ namespace Hyper.Internal
404
411
  seekLoadingOverlay.transform.SetAsFirstSibling();
405
412
  seekOverlayBackground = seekLoadingOverlay.GetComponent<Image>();
406
413
  if (seekOverlayBackground != null) seekOverlayBackgroundColor = seekOverlayBackground.color;
414
+ seekOverlay = seekLoadingOverlay.GetComponent<ReplaySeekOverlay>();
407
415
  seekLoadingOverlay.SetActive(ReplaySessionState.IsSeeking);
408
416
  wasSeeking = ReplaySessionState.IsSeeking;
409
417
  }
410
418
 
419
+ private void UpdateSeekProgress(bool isSeeking)
420
+ {
421
+ if (seekOverlay == null) return;
422
+
423
+ float progress = 0f;
424
+ if (!isSeeking)
425
+ {
426
+ progress = 1f;
427
+ }
428
+ else if (!isCapturingSeek && !ReplaySessionState.IsSeekRestartPending)
429
+ {
430
+ float target = ReplaySessionState.SeekTarget01;
431
+ progress = target <= Mathf.Epsilon
432
+ ? 1f
433
+ : ReplaySessionState.Progress01 / target;
434
+ }
435
+
436
+ seekOverlay.SetProgress(progress);
437
+ }
438
+
411
439
  private void ConfigureSeekSnapshot()
412
440
  {
413
441
  if (seekSnapshotImage == null)
@@ -0,0 +1,18 @@
1
+ using TMPro;
2
+ using UnityEngine;
3
+
4
+ namespace Hyper.Internal
5
+ {
6
+ internal sealed class ReplaySeekOverlay : MonoBehaviour
7
+ {
8
+ [SerializeField] private TextMeshProUGUI progressText;
9
+
10
+ internal void SetProgress(float progress01)
11
+ {
12
+ if (progressText == null) return;
13
+
14
+ int percentage = Mathf.RoundToInt(Mathf.Clamp01(progress01) * 100f);
15
+ progressText.text = $"{percentage}%";
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,2 @@
1
+ fileFormatVersion: 2
2
+ guid: a7d0eb352f3c4d64a687b8c4509e1fa2