app.hypergames.hypersdk 1.11.0-beta.21 → 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 +14 -0
- package/Editor/Scripts/Inspectors/HyperSDKSettingsEditor.cs +10 -1
- package/Runtime/Internal/Managers/TimeManager.cs +16 -6
- package/Runtime/Internal/ScriptableObjects/HyperSDKSettings.cs +6 -0
- package/Runtime/Internal/UI/Components/ReplayController.cs +84 -25
- package/Runtime/Internal/UI/Modals/StartingInstructionModal.cs +1 -1
- package/Runtime/Resources/HyperSDKSettings.asset +1 -0
- package/Runtime/Resources/UIPrefabs/ReplayController.prefab +288 -10
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
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
|
+
|
|
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)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **replay:** finalize playback controls and settings ([559a7e4](https://github.com/mvmhyper/hyper-sdk/commit/559a7e48d9998efa022fe87253645dc13f83e901))
|
|
14
|
+
|
|
1
15
|
# [1.11.0-beta.21](https://github.com/mvmhyper/hyper-sdk/compare/v1.11.0-beta.20...v1.11.0-beta.21) (2026-09-03)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -172,11 +172,20 @@ namespace Hyper.Editor
|
|
|
172
172
|
settings.useCustomRestartFlow);
|
|
173
173
|
settings.useCustomReplayRestartFlow = EditorGUILayout.Toggle(
|
|
174
174
|
new GUIContent(
|
|
175
|
-
"
|
|
175
|
+
"Replay Custom Restart",
|
|
176
176
|
"Use game-owned restart logic for replay Watch Again and seeking. " +
|
|
177
177
|
"Disabled uses HyperLoader to rebuild deterministic game state."),
|
|
178
178
|
settings.useCustomReplayRestartFlow);
|
|
179
179
|
|
|
180
|
+
EditorGUILayout.Space(12);
|
|
181
|
+
EditorGUILayout.LabelField("Replay Settings", EditorStyles.boldLabel);
|
|
182
|
+
settings.allowReplaySeeking = EditorGUILayout.Toggle(
|
|
183
|
+
new GUIContent(
|
|
184
|
+
"Allow Replay Seeking",
|
|
185
|
+
"Allow viewers to seek using the replay progress bar. " +
|
|
186
|
+
"Leave disabled until accelerated replay reconstruction is validated for this game."),
|
|
187
|
+
settings.allowReplaySeeking);
|
|
188
|
+
|
|
180
189
|
EditorGUILayout.Space(12);
|
|
181
190
|
// Draw Editor Testing
|
|
182
191
|
SerializedProperty settingsProp = serializedObject.FindProperty("_settings");
|
|
@@ -103,14 +103,23 @@ namespace Hyper.Internal.Managers
|
|
|
103
103
|
if (Mathf.Approximately(Time.timeScale, 0f))
|
|
104
104
|
return;
|
|
105
105
|
|
|
106
|
-
float gameTimerDelta =
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
float gameTimerDelta = GetGameTimerDelta(
|
|
107
|
+
_gameManager != null && _gameManager.IsReplayMode,
|
|
108
|
+
Time.fixedDeltaTime,
|
|
109
|
+
Time.fixedUnscaledDeltaTime);
|
|
109
110
|
|
|
110
111
|
UpdatePracticeTimer(gameTimerDelta);
|
|
111
112
|
UpdateBattleTimer(gameTimerDelta);
|
|
112
113
|
}
|
|
113
114
|
|
|
115
|
+
internal static float GetGameTimerDelta(
|
|
116
|
+
bool isReplayMode,
|
|
117
|
+
float fixedDeltaTime,
|
|
118
|
+
float fixedUnscaledDeltaTime)
|
|
119
|
+
{
|
|
120
|
+
return isReplayMode ? fixedDeltaTime : fixedUnscaledDeltaTime;
|
|
121
|
+
}
|
|
122
|
+
|
|
114
123
|
public void Reset()
|
|
115
124
|
{
|
|
116
125
|
_practiceTimer = 0;
|
|
@@ -299,9 +308,9 @@ namespace Hyper.Internal.Managers
|
|
|
299
308
|
}
|
|
300
309
|
|
|
301
310
|
_battleTimer -= delta;
|
|
302
|
-
if (_battleTimer <=
|
|
311
|
+
if (_battleTimer <= 0f || Mathf.Approximately(_battleTimer, 0f))
|
|
303
312
|
{
|
|
304
|
-
_battleTimer =
|
|
313
|
+
_battleTimer = 0f;
|
|
305
314
|
if (!_timeUpTriggered)
|
|
306
315
|
{
|
|
307
316
|
QueueTimeUp();
|
|
@@ -314,7 +323,8 @@ namespace Hyper.Internal.Managers
|
|
|
314
323
|
{
|
|
315
324
|
_battleTimer = _sessionTimer;
|
|
316
325
|
|
|
317
|
-
if (_battleTimer <=
|
|
326
|
+
if ((_battleTimer <= 0f || Mathf.Approximately(_battleTimer, 0f)) &&
|
|
327
|
+
!_timeUpTriggered)
|
|
318
328
|
{
|
|
319
329
|
QueueTimeUp();
|
|
320
330
|
}
|
|
@@ -80,6 +80,12 @@ namespace Hyper.Internal
|
|
|
80
80
|
"Leave disabled to rebuild the game through HyperLoader for deterministic replay state.")]
|
|
81
81
|
public bool useCustomReplayRestartFlow = false;
|
|
82
82
|
|
|
83
|
+
[Space(20)]
|
|
84
|
+
[Header("Replay Settings")]
|
|
85
|
+
[Tooltip("Allow replay viewers to seek from the replay progress bar. " +
|
|
86
|
+
"Leave disabled until the game has been validated for accelerated replay reconstruction.")]
|
|
87
|
+
public bool allowReplaySeeking = false;
|
|
88
|
+
|
|
83
89
|
#endregion
|
|
84
90
|
|
|
85
91
|
#region Editor Testing
|
|
@@ -12,14 +12,16 @@ namespace Hyper.Internal
|
|
|
12
12
|
{
|
|
13
13
|
internal const int AvatarTextureSize = 128;
|
|
14
14
|
|
|
15
|
-
[SerializeField] private Slider
|
|
15
|
+
[SerializeField] private Slider seekableSlider;
|
|
16
|
+
[SerializeField] private Slider readOnlySlider;
|
|
16
17
|
[SerializeField] private TextMeshProUGUI replayLabel;
|
|
17
18
|
[SerializeField] private RawImage playerAvatar;
|
|
18
19
|
[SerializeField] private Button pauseButton;
|
|
19
20
|
[SerializeField] private Button playbackSpeedButton;
|
|
20
21
|
[SerializeField] private TextMeshProUGUI playbackSpeedLabel;
|
|
21
|
-
[SerializeField] private float[] playbackSpeeds = { 1.
|
|
22
|
+
[SerializeField] private float[] playbackSpeeds = { 1f, 1.25f, 1.75f, 2f, 0.5f };
|
|
22
23
|
[SerializeField, Min(1f)] private float seekPlaybackSpeed = 10f;
|
|
24
|
+
[SerializeField, Min(0f)] private float readOnlyProgressSmoothTime = 0.08f;
|
|
23
25
|
[SerializeField, Range(0.25f, 1f)] private float seekSnapshotScale = 0.55f;
|
|
24
26
|
[SerializeField, Range(0f, 0.5f)] private float seekPreparationProgress = 0.2f;
|
|
25
27
|
[SerializeField, Range(0f, 0.15f)] private float seekPreparationProgressVariation = 0.05f;
|
|
@@ -28,10 +30,14 @@ namespace Hyper.Internal
|
|
|
28
30
|
[SerializeField] private RawImage seekSnapshotImage;
|
|
29
31
|
|
|
30
32
|
private int playbackSpeedIndex;
|
|
33
|
+
private Slider progressSlider;
|
|
31
34
|
private ReplaySeekInput seekInput;
|
|
35
|
+
private bool seekingAllowed;
|
|
32
36
|
private bool wasSeeking;
|
|
33
37
|
private bool isCapturingSeek;
|
|
34
38
|
private float pendingSeekTarget;
|
|
39
|
+
private float displayedReadOnlyProgress;
|
|
40
|
+
private float readOnlyProgressVelocity;
|
|
35
41
|
private Texture2D seekSnapshotTexture;
|
|
36
42
|
private Image seekOverlayBackground;
|
|
37
43
|
private Color seekOverlayBackgroundColor;
|
|
@@ -44,12 +50,21 @@ namespace Hyper.Internal
|
|
|
44
50
|
|
|
45
51
|
private void Awake()
|
|
46
52
|
{
|
|
53
|
+
seekingAllowed = HyperRuntime.Settings != null && HyperRuntime.Settings.allowReplaySeeking;
|
|
47
54
|
AutoBindReferences();
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
ConfigureProgressSliders();
|
|
56
|
+
if (seekingAllowed)
|
|
57
|
+
{
|
|
58
|
+
ConfigureSeekOverlay();
|
|
59
|
+
ConfigureSeekSnapshot();
|
|
60
|
+
}
|
|
61
|
+
else if (seekLoadingOverlay != null)
|
|
62
|
+
{
|
|
63
|
+
seekLoadingOverlay.SetActive(false);
|
|
64
|
+
}
|
|
65
|
+
|
|
51
66
|
ApplyInitialPlaybackSpeed();
|
|
52
|
-
ReplaySessionState.SeekCompleted += RestorePlaybackAfterSeek;
|
|
67
|
+
if (seekingAllowed) ReplaySessionState.SeekCompleted += RestorePlaybackAfterSeek;
|
|
53
68
|
if (pauseButton != null) pauseButton.onClick.AddListener(PauseReplay);
|
|
54
69
|
if (playbackSpeedButton != null) playbackSpeedButton.onClick.AddListener(CyclePlaybackSpeed);
|
|
55
70
|
}
|
|
@@ -61,13 +76,13 @@ namespace Hyper.Internal
|
|
|
61
76
|
if (replayLabel != null) replayLabel.text = $"Replay of @{playerName}";
|
|
62
77
|
if (progressSlider != null)
|
|
63
78
|
{
|
|
64
|
-
float displayedProgress = ReplaySessionState.IsSeeking
|
|
79
|
+
float displayedProgress = seekingAllowed && ReplaySessionState.IsSeeking
|
|
65
80
|
? ReplaySessionState.SeekTarget01
|
|
66
81
|
: ReplaySessionState.Progress01;
|
|
67
|
-
|
|
82
|
+
SetProgressSliderValue(displayedProgress);
|
|
68
83
|
}
|
|
69
84
|
UpdatePlaybackSpeedLabel(ReplaySessionState.UserPlaybackSpeed);
|
|
70
|
-
SetSeekingPresentation(ReplaySessionState.IsSeeking);
|
|
85
|
+
SetSeekingPresentation(seekingAllowed && ReplaySessionState.IsSeeking);
|
|
71
86
|
|
|
72
87
|
if (playerAvatar != null && ReplaySessionState.AvatarTexture != null)
|
|
73
88
|
{
|
|
@@ -77,7 +92,7 @@ namespace Hyper.Internal
|
|
|
77
92
|
|
|
78
93
|
private void Update()
|
|
79
94
|
{
|
|
80
|
-
bool isSeeking = ReplaySessionState.IsSeeking;
|
|
95
|
+
bool isSeeking = seekingAllowed && ReplaySessionState.IsSeeking;
|
|
81
96
|
if (wasSeeking && !isSeeking && !ReplaySessionState.HasEnded)
|
|
82
97
|
{
|
|
83
98
|
RestorePlaybackAfterSeek(ReplaySessionState.PlaybackSpeed);
|
|
@@ -100,7 +115,7 @@ namespace Hyper.Internal
|
|
|
100
115
|
: isSeeking
|
|
101
116
|
? ReplaySessionState.SeekTarget01
|
|
102
117
|
: ReplaySessionState.Progress01;
|
|
103
|
-
|
|
118
|
+
SetProgressSliderValue(displayedProgress, !seekingAllowed);
|
|
104
119
|
}
|
|
105
120
|
|
|
106
121
|
wasSeeking = isSeeking;
|
|
@@ -143,7 +158,7 @@ namespace Hyper.Internal
|
|
|
143
158
|
if (progressSlider != null) progressSlider.interactable = false;
|
|
144
159
|
if (seekLoadingOverlay != null) seekLoadingOverlay.SetActive(false);
|
|
145
160
|
ClearSeekSnapshot();
|
|
146
|
-
|
|
161
|
+
SetProgressSliderValue(1f);
|
|
147
162
|
}
|
|
148
163
|
|
|
149
164
|
internal void ResetForReplayRestart()
|
|
@@ -162,10 +177,7 @@ namespace Hyper.Internal
|
|
|
162
177
|
: 0f;
|
|
163
178
|
wasSeeking = ReplaySessionState.IsSeeking;
|
|
164
179
|
|
|
165
|
-
|
|
166
|
-
{
|
|
167
|
-
progressSlider.SetValueWithoutNotify(pendingSeekTarget);
|
|
168
|
-
}
|
|
180
|
+
SetProgressSliderValue(pendingSeekTarget);
|
|
169
181
|
|
|
170
182
|
UpdatePlaybackSpeedLabel(playbackSpeed);
|
|
171
183
|
AlignPlaybackSpeedIndex(playbackSpeed);
|
|
@@ -195,7 +207,7 @@ namespace Hyper.Internal
|
|
|
195
207
|
|
|
196
208
|
private void SeekTo(float targetProgress)
|
|
197
209
|
{
|
|
198
|
-
if (!ReplaySessionState.IsActive || ReplaySessionState.HasEnded ||
|
|
210
|
+
if (!seekingAllowed || !ReplaySessionState.IsActive || ReplaySessionState.HasEnded ||
|
|
199
211
|
ReplaySessionState.IsSeeking || isCapturingSeek)
|
|
200
212
|
{
|
|
201
213
|
return;
|
|
@@ -273,10 +285,14 @@ namespace Hyper.Internal
|
|
|
273
285
|
|
|
274
286
|
private void SetSeekingPresentation(bool isSeeking)
|
|
275
287
|
{
|
|
288
|
+
isSeeking &= seekingAllowed;
|
|
276
289
|
ReplayPresentationCanvas.SetSeekingLayer(isSeeking);
|
|
277
290
|
UpdateSeekProgress(isSeeking);
|
|
278
291
|
if (seekLoadingOverlay != null) seekLoadingOverlay.SetActive(isSeeking);
|
|
279
|
-
if (progressSlider != null)
|
|
292
|
+
if (progressSlider != null)
|
|
293
|
+
{
|
|
294
|
+
progressSlider.interactable = seekingAllowed && !isSeeking && !ReplaySessionState.HasEnded;
|
|
295
|
+
}
|
|
280
296
|
if (playbackSpeedButton != null)
|
|
281
297
|
{
|
|
282
298
|
playbackSpeedButton.interactable = !isSeeking && !ReplaySessionState.HasEnded;
|
|
@@ -300,7 +316,7 @@ namespace Hyper.Internal
|
|
|
300
316
|
|
|
301
317
|
if (playbackSpeedLabel != null)
|
|
302
318
|
{
|
|
303
|
-
playbackSpeedLabel.text = $"{speed:0
|
|
319
|
+
playbackSpeedLabel.text = $"{speed:0.##}x";
|
|
304
320
|
}
|
|
305
321
|
}
|
|
306
322
|
|
|
@@ -354,8 +370,6 @@ namespace Hyper.Internal
|
|
|
354
370
|
|
|
355
371
|
private void AutoBindReferences()
|
|
356
372
|
{
|
|
357
|
-
if (progressSlider == null) progressSlider = GetComponentInChildren<Slider>(true);
|
|
358
|
-
|
|
359
373
|
Button[] buttons = GetComponentsInChildren<Button>(true);
|
|
360
374
|
for (int i = 0; i < buttons.Length; i++)
|
|
361
375
|
{
|
|
@@ -375,24 +389,69 @@ namespace Hyper.Internal
|
|
|
375
389
|
}
|
|
376
390
|
}
|
|
377
391
|
|
|
378
|
-
private void
|
|
392
|
+
private void ConfigureProgressSliders()
|
|
379
393
|
{
|
|
394
|
+
progressSlider = seekingAllowed ? seekableSlider : readOnlySlider;
|
|
395
|
+
|
|
396
|
+
if (seekableSlider != null)
|
|
397
|
+
{
|
|
398
|
+
seekableSlider.gameObject.SetActive(seekingAllowed);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
if (readOnlySlider != null)
|
|
402
|
+
{
|
|
403
|
+
readOnlySlider.gameObject.SetActive(!seekingAllowed);
|
|
404
|
+
}
|
|
405
|
+
|
|
380
406
|
if (progressSlider == null) return;
|
|
381
407
|
|
|
382
408
|
progressSlider.minValue = 0f;
|
|
383
409
|
progressSlider.maxValue = 1f;
|
|
384
410
|
progressSlider.wholeNumbers = false;
|
|
385
|
-
progressSlider.interactable =
|
|
386
|
-
float displayedProgress = ReplaySessionState.IsSeeking
|
|
411
|
+
progressSlider.interactable = seekingAllowed;
|
|
412
|
+
float displayedProgress = seekingAllowed && ReplaySessionState.IsSeeking
|
|
387
413
|
? ReplaySessionState.SeekTarget01
|
|
388
414
|
: ReplaySessionState.Progress01;
|
|
389
|
-
|
|
415
|
+
SetProgressSliderValue(displayedProgress);
|
|
416
|
+
|
|
417
|
+
if (!seekingAllowed) return;
|
|
390
418
|
|
|
391
419
|
seekInput = progressSlider.GetComponent<ReplaySeekInput>();
|
|
392
420
|
if (seekInput == null) seekInput = progressSlider.gameObject.AddComponent<ReplaySeekInput>();
|
|
393
421
|
seekInput.Initialize(progressSlider, SeekTo);
|
|
394
422
|
}
|
|
395
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
|
+
|
|
396
455
|
private void ConfigureSeekOverlay()
|
|
397
456
|
{
|
|
398
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 =
|
|
17
|
+
[SerializeField] private float replayAutoStartDelay = 2f;
|
|
18
18
|
private GameManager _gameManager;
|
|
19
19
|
private StartCTA _currentCTA;
|
|
20
20
|
private SwipeDirection _swipeDirection;
|
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
%YAML 1.1
|
|
2
2
|
%TAG !u! tag:unity3d.com,2011:
|
|
3
|
+
--- !u!1 &223417005362504300
|
|
4
|
+
GameObject:
|
|
5
|
+
m_ObjectHideFlags: 0
|
|
6
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
7
|
+
m_PrefabInstance: {fileID: 0}
|
|
8
|
+
m_PrefabAsset: {fileID: 0}
|
|
9
|
+
serializedVersion: 6
|
|
10
|
+
m_Component:
|
|
11
|
+
- component: {fileID: 3833324095758096509}
|
|
12
|
+
m_Layer: 5
|
|
13
|
+
m_Name: Fill Area
|
|
14
|
+
m_TagString: Untagged
|
|
15
|
+
m_Icon: {fileID: 0}
|
|
16
|
+
m_NavMeshLayer: 0
|
|
17
|
+
m_StaticEditorFlags: 0
|
|
18
|
+
m_IsActive: 1
|
|
19
|
+
--- !u!224 &3833324095758096509
|
|
20
|
+
RectTransform:
|
|
21
|
+
m_ObjectHideFlags: 0
|
|
22
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
23
|
+
m_PrefabInstance: {fileID: 0}
|
|
24
|
+
m_PrefabAsset: {fileID: 0}
|
|
25
|
+
m_GameObject: {fileID: 223417005362504300}
|
|
26
|
+
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
|
27
|
+
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
28
|
+
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
29
|
+
m_ConstrainProportionsScale: 0
|
|
30
|
+
m_Children:
|
|
31
|
+
- {fileID: 304532445594059503}
|
|
32
|
+
m_Father: {fileID: 6542150060122855028}
|
|
33
|
+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
34
|
+
m_AnchorMin: {x: 0, y: 0}
|
|
35
|
+
m_AnchorMax: {x: 1, y: 1}
|
|
36
|
+
m_AnchoredPosition: {x: -0.018798828, y: 0.0000038146973}
|
|
37
|
+
m_SizeDelta: {x: -10.0378, y: -0.0001}
|
|
38
|
+
m_Pivot: {x: 0.5, y: 0.5}
|
|
3
39
|
--- !u!1 &369218185311093561
|
|
4
40
|
GameObject:
|
|
5
41
|
m_ObjectHideFlags: 0
|
|
@@ -305,7 +341,8 @@ MonoBehaviour:
|
|
|
305
341
|
m_Script: {fileID: 11500000, guid: 488ba0c343178684c9e74294492a1fa1, type: 3}
|
|
306
342
|
m_Name:
|
|
307
343
|
m_EditorClassIdentifier:
|
|
308
|
-
|
|
344
|
+
seekableSlider: {fileID: 6524620082287541530}
|
|
345
|
+
readOnlySlider: {fileID: 3931331649244694281}
|
|
309
346
|
replayLabel: {fileID: 2967308416171677859}
|
|
310
347
|
playerAvatar: {fileID: 1824686318740396960}
|
|
311
348
|
pauseButton: {fileID: 6062270276149820752}
|
|
@@ -313,11 +350,12 @@ MonoBehaviour:
|
|
|
313
350
|
playbackSpeedLabel: {fileID: 4722203154507835557}
|
|
314
351
|
playbackSpeeds:
|
|
315
352
|
- 1
|
|
316
|
-
- 1.
|
|
353
|
+
- 1.25
|
|
354
|
+
- 1.75
|
|
317
355
|
- 2
|
|
318
|
-
- 3
|
|
319
356
|
- 0.5
|
|
320
357
|
seekPlaybackSpeed: 10
|
|
358
|
+
readOnlyProgressSmoothTime: 0.08
|
|
321
359
|
seekSnapshotScale: 0.725
|
|
322
360
|
seekPreparationProgress: 0.2
|
|
323
361
|
seekPreparationProgressVariation: 0.05
|
|
@@ -469,7 +507,7 @@ GameObject:
|
|
|
469
507
|
- component: {fileID: 6333756719587920619}
|
|
470
508
|
- component: {fileID: 6524620082287541530}
|
|
471
509
|
m_Layer: 5
|
|
472
|
-
m_Name:
|
|
510
|
+
m_Name: SeekableSlider
|
|
473
511
|
m_TagString: Untagged
|
|
474
512
|
m_Icon: {fileID: 0}
|
|
475
513
|
m_NavMeshLayer: 0
|
|
@@ -507,8 +545,8 @@ MonoBehaviour:
|
|
|
507
545
|
m_Enabled: 1
|
|
508
546
|
m_EditorHideFlags: 0
|
|
509
547
|
m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
|
|
510
|
-
m_Name:
|
|
511
|
-
m_EditorClassIdentifier:
|
|
548
|
+
m_Name:
|
|
549
|
+
m_EditorClassIdentifier:
|
|
512
550
|
m_Navigation:
|
|
513
551
|
m_Mode: 3
|
|
514
552
|
m_WrapAround: 0
|
|
@@ -603,8 +641,8 @@ MonoBehaviour:
|
|
|
603
641
|
m_Enabled: 1
|
|
604
642
|
m_EditorHideFlags: 0
|
|
605
643
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
606
|
-
m_Name:
|
|
607
|
-
m_EditorClassIdentifier:
|
|
644
|
+
m_Name:
|
|
645
|
+
m_EditorClassIdentifier:
|
|
608
646
|
m_Material: {fileID: 0}
|
|
609
647
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
610
648
|
m_RaycastTarget: 1
|
|
@@ -654,6 +692,7 @@ RectTransform:
|
|
|
654
692
|
m_ConstrainProportionsScale: 0
|
|
655
693
|
m_Children:
|
|
656
694
|
- {fileID: 6333756719587920619}
|
|
695
|
+
- {fileID: 6542150060122855028}
|
|
657
696
|
- {fileID: 6508244257815501699}
|
|
658
697
|
- {fileID: 1441186342797148716}
|
|
659
698
|
- {fileID: 3476774662796868632}
|
|
@@ -683,8 +722,8 @@ MonoBehaviour:
|
|
|
683
722
|
m_Enabled: 1
|
|
684
723
|
m_EditorHideFlags: 0
|
|
685
724
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
686
|
-
m_Name:
|
|
687
|
-
m_EditorClassIdentifier:
|
|
725
|
+
m_Name:
|
|
726
|
+
m_EditorClassIdentifier:
|
|
688
727
|
m_Material: {fileID: 0}
|
|
689
728
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
690
729
|
m_RaycastTarget: 1
|
|
@@ -1197,6 +1236,170 @@ MonoBehaviour:
|
|
|
1197
1236
|
m_hasFontAssetChanged: 0
|
|
1198
1237
|
m_baseMaterial: {fileID: 0}
|
|
1199
1238
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
|
1239
|
+
--- !u!1 &4462340644753344622
|
|
1240
|
+
GameObject:
|
|
1241
|
+
m_ObjectHideFlags: 0
|
|
1242
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1243
|
+
m_PrefabInstance: {fileID: 0}
|
|
1244
|
+
m_PrefabAsset: {fileID: 0}
|
|
1245
|
+
serializedVersion: 6
|
|
1246
|
+
m_Component:
|
|
1247
|
+
- component: {fileID: 6542150060122855028}
|
|
1248
|
+
- component: {fileID: 3931331649244694281}
|
|
1249
|
+
m_Layer: 5
|
|
1250
|
+
m_Name: ReadOnlySlider
|
|
1251
|
+
m_TagString: Untagged
|
|
1252
|
+
m_Icon: {fileID: 0}
|
|
1253
|
+
m_NavMeshLayer: 0
|
|
1254
|
+
m_StaticEditorFlags: 0
|
|
1255
|
+
m_IsActive: 0
|
|
1256
|
+
--- !u!224 &6542150060122855028
|
|
1257
|
+
RectTransform:
|
|
1258
|
+
m_ObjectHideFlags: 0
|
|
1259
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1260
|
+
m_PrefabInstance: {fileID: 0}
|
|
1261
|
+
m_PrefabAsset: {fileID: 0}
|
|
1262
|
+
m_GameObject: {fileID: 4462340644753344622}
|
|
1263
|
+
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
|
1264
|
+
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
1265
|
+
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
1266
|
+
m_ConstrainProportionsScale: 0
|
|
1267
|
+
m_Children:
|
|
1268
|
+
- {fileID: 366657233058180139}
|
|
1269
|
+
- {fileID: 3833324095758096509}
|
|
1270
|
+
m_Father: {fileID: 3329893502925930305}
|
|
1271
|
+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
1272
|
+
m_AnchorMin: {x: 0, y: 1}
|
|
1273
|
+
m_AnchorMax: {x: 1, y: 1}
|
|
1274
|
+
m_AnchoredPosition: {x: 0, y: 3.8920975}
|
|
1275
|
+
m_SizeDelta: {x: 0, y: 7.7843}
|
|
1276
|
+
m_Pivot: {x: 0.5, y: 0.5}
|
|
1277
|
+
--- !u!114 &3931331649244694281
|
|
1278
|
+
MonoBehaviour:
|
|
1279
|
+
m_ObjectHideFlags: 0
|
|
1280
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1281
|
+
m_PrefabInstance: {fileID: 0}
|
|
1282
|
+
m_PrefabAsset: {fileID: 0}
|
|
1283
|
+
m_GameObject: {fileID: 4462340644753344622}
|
|
1284
|
+
m_Enabled: 1
|
|
1285
|
+
m_EditorHideFlags: 0
|
|
1286
|
+
m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
|
|
1287
|
+
m_Name:
|
|
1288
|
+
m_EditorClassIdentifier:
|
|
1289
|
+
m_Navigation:
|
|
1290
|
+
m_Mode: 3
|
|
1291
|
+
m_WrapAround: 0
|
|
1292
|
+
m_SelectOnUp: {fileID: 0}
|
|
1293
|
+
m_SelectOnDown: {fileID: 0}
|
|
1294
|
+
m_SelectOnLeft: {fileID: 0}
|
|
1295
|
+
m_SelectOnRight: {fileID: 0}
|
|
1296
|
+
m_Transition: 0
|
|
1297
|
+
m_Colors:
|
|
1298
|
+
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
|
1299
|
+
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
|
1300
|
+
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
|
1301
|
+
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
|
1302
|
+
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
|
1303
|
+
m_ColorMultiplier: 1
|
|
1304
|
+
m_FadeDuration: 0.1
|
|
1305
|
+
m_SpriteState:
|
|
1306
|
+
m_HighlightedSprite: {fileID: 0}
|
|
1307
|
+
m_PressedSprite: {fileID: 0}
|
|
1308
|
+
m_SelectedSprite: {fileID: 0}
|
|
1309
|
+
m_DisabledSprite: {fileID: 0}
|
|
1310
|
+
m_AnimationTriggers:
|
|
1311
|
+
m_NormalTrigger: Normal
|
|
1312
|
+
m_HighlightedTrigger: Highlighted
|
|
1313
|
+
m_PressedTrigger: Pressed
|
|
1314
|
+
m_SelectedTrigger: Selected
|
|
1315
|
+
m_DisabledTrigger: Disabled
|
|
1316
|
+
m_Interactable: 0
|
|
1317
|
+
m_TargetGraphic: {fileID: 0}
|
|
1318
|
+
m_FillRect: {fileID: 304532445594059503}
|
|
1319
|
+
m_HandleRect: {fileID: 0}
|
|
1320
|
+
m_Direction: 0
|
|
1321
|
+
m_MinValue: 0
|
|
1322
|
+
m_MaxValue: 1
|
|
1323
|
+
m_WholeNumbers: 0
|
|
1324
|
+
m_Value: 0
|
|
1325
|
+
m_OnValueChanged:
|
|
1326
|
+
m_PersistentCalls:
|
|
1327
|
+
m_Calls: []
|
|
1328
|
+
--- !u!1 &4767236606928371908
|
|
1329
|
+
GameObject:
|
|
1330
|
+
m_ObjectHideFlags: 0
|
|
1331
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1332
|
+
m_PrefabInstance: {fileID: 0}
|
|
1333
|
+
m_PrefabAsset: {fileID: 0}
|
|
1334
|
+
serializedVersion: 6
|
|
1335
|
+
m_Component:
|
|
1336
|
+
- component: {fileID: 304532445594059503}
|
|
1337
|
+
- component: {fileID: 6168800224433124105}
|
|
1338
|
+
- component: {fileID: 1731641873342291599}
|
|
1339
|
+
m_Layer: 5
|
|
1340
|
+
m_Name: Fill
|
|
1341
|
+
m_TagString: Untagged
|
|
1342
|
+
m_Icon: {fileID: 0}
|
|
1343
|
+
m_NavMeshLayer: 0
|
|
1344
|
+
m_StaticEditorFlags: 0
|
|
1345
|
+
m_IsActive: 1
|
|
1346
|
+
--- !u!224 &304532445594059503
|
|
1347
|
+
RectTransform:
|
|
1348
|
+
m_ObjectHideFlags: 0
|
|
1349
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1350
|
+
m_PrefabInstance: {fileID: 0}
|
|
1351
|
+
m_PrefabAsset: {fileID: 0}
|
|
1352
|
+
m_GameObject: {fileID: 4767236606928371908}
|
|
1353
|
+
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
|
1354
|
+
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
1355
|
+
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
1356
|
+
m_ConstrainProportionsScale: 0
|
|
1357
|
+
m_Children: []
|
|
1358
|
+
m_Father: {fileID: 3833324095758096509}
|
|
1359
|
+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
1360
|
+
m_AnchorMin: {x: 0, y: 0}
|
|
1361
|
+
m_AnchorMax: {x: 0, y: 1}
|
|
1362
|
+
m_AnchoredPosition: {x: 0, y: 0}
|
|
1363
|
+
m_SizeDelta: {x: 10, y: 0}
|
|
1364
|
+
m_Pivot: {x: 0.5, y: 0.5}
|
|
1365
|
+
--- !u!222 &6168800224433124105
|
|
1366
|
+
CanvasRenderer:
|
|
1367
|
+
m_ObjectHideFlags: 0
|
|
1368
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1369
|
+
m_PrefabInstance: {fileID: 0}
|
|
1370
|
+
m_PrefabAsset: {fileID: 0}
|
|
1371
|
+
m_GameObject: {fileID: 4767236606928371908}
|
|
1372
|
+
m_CullTransparentMesh: 1
|
|
1373
|
+
--- !u!114 &1731641873342291599
|
|
1374
|
+
MonoBehaviour:
|
|
1375
|
+
m_ObjectHideFlags: 0
|
|
1376
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1377
|
+
m_PrefabInstance: {fileID: 0}
|
|
1378
|
+
m_PrefabAsset: {fileID: 0}
|
|
1379
|
+
m_GameObject: {fileID: 4767236606928371908}
|
|
1380
|
+
m_Enabled: 1
|
|
1381
|
+
m_EditorHideFlags: 0
|
|
1382
|
+
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
1383
|
+
m_Name:
|
|
1384
|
+
m_EditorClassIdentifier:
|
|
1385
|
+
m_Material: {fileID: 0}
|
|
1386
|
+
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
1387
|
+
m_RaycastTarget: 1
|
|
1388
|
+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
1389
|
+
m_Maskable: 1
|
|
1390
|
+
m_OnCullStateChanged:
|
|
1391
|
+
m_PersistentCalls:
|
|
1392
|
+
m_Calls: []
|
|
1393
|
+
m_Sprite: {fileID: 0}
|
|
1394
|
+
m_Type: 1
|
|
1395
|
+
m_PreserveAspect: 0
|
|
1396
|
+
m_FillCenter: 1
|
|
1397
|
+
m_FillMethod: 4
|
|
1398
|
+
m_FillAmount: 1
|
|
1399
|
+
m_FillClockwise: 1
|
|
1400
|
+
m_FillOrigin: 0
|
|
1401
|
+
m_UseSpriteMesh: 0
|
|
1402
|
+
m_PixelsPerUnitMultiplier: 1
|
|
1200
1403
|
--- !u!1 &4812803750956349496
|
|
1201
1404
|
GameObject:
|
|
1202
1405
|
m_ObjectHideFlags: 0
|
|
@@ -1269,6 +1472,81 @@ MonoBehaviour:
|
|
|
1269
1472
|
y: 0
|
|
1270
1473
|
width: 1
|
|
1271
1474
|
height: 1
|
|
1475
|
+
--- !u!1 &5057041956718479770
|
|
1476
|
+
GameObject:
|
|
1477
|
+
m_ObjectHideFlags: 0
|
|
1478
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1479
|
+
m_PrefabInstance: {fileID: 0}
|
|
1480
|
+
m_PrefabAsset: {fileID: 0}
|
|
1481
|
+
serializedVersion: 6
|
|
1482
|
+
m_Component:
|
|
1483
|
+
- component: {fileID: 366657233058180139}
|
|
1484
|
+
- component: {fileID: 2710470428584502286}
|
|
1485
|
+
- component: {fileID: 5573806685945753042}
|
|
1486
|
+
m_Layer: 5
|
|
1487
|
+
m_Name: Background
|
|
1488
|
+
m_TagString: Untagged
|
|
1489
|
+
m_Icon: {fileID: 0}
|
|
1490
|
+
m_NavMeshLayer: 0
|
|
1491
|
+
m_StaticEditorFlags: 0
|
|
1492
|
+
m_IsActive: 1
|
|
1493
|
+
--- !u!224 &366657233058180139
|
|
1494
|
+
RectTransform:
|
|
1495
|
+
m_ObjectHideFlags: 0
|
|
1496
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1497
|
+
m_PrefabInstance: {fileID: 0}
|
|
1498
|
+
m_PrefabAsset: {fileID: 0}
|
|
1499
|
+
m_GameObject: {fileID: 5057041956718479770}
|
|
1500
|
+
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
|
1501
|
+
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
1502
|
+
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
1503
|
+
m_ConstrainProportionsScale: 0
|
|
1504
|
+
m_Children: []
|
|
1505
|
+
m_Father: {fileID: 6542150060122855028}
|
|
1506
|
+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
1507
|
+
m_AnchorMin: {x: 0, y: 0}
|
|
1508
|
+
m_AnchorMax: {x: 1, y: 1}
|
|
1509
|
+
m_AnchoredPosition: {x: 0, y: -0.000030517578}
|
|
1510
|
+
m_SizeDelta: {x: 0, y: -0.000038624}
|
|
1511
|
+
m_Pivot: {x: 0.5, y: 0.5}
|
|
1512
|
+
--- !u!222 &2710470428584502286
|
|
1513
|
+
CanvasRenderer:
|
|
1514
|
+
m_ObjectHideFlags: 0
|
|
1515
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1516
|
+
m_PrefabInstance: {fileID: 0}
|
|
1517
|
+
m_PrefabAsset: {fileID: 0}
|
|
1518
|
+
m_GameObject: {fileID: 5057041956718479770}
|
|
1519
|
+
m_CullTransparentMesh: 1
|
|
1520
|
+
--- !u!114 &5573806685945753042
|
|
1521
|
+
MonoBehaviour:
|
|
1522
|
+
m_ObjectHideFlags: 0
|
|
1523
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
1524
|
+
m_PrefabInstance: {fileID: 0}
|
|
1525
|
+
m_PrefabAsset: {fileID: 0}
|
|
1526
|
+
m_GameObject: {fileID: 5057041956718479770}
|
|
1527
|
+
m_Enabled: 1
|
|
1528
|
+
m_EditorHideFlags: 0
|
|
1529
|
+
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
1530
|
+
m_Name:
|
|
1531
|
+
m_EditorClassIdentifier:
|
|
1532
|
+
m_Material: {fileID: 0}
|
|
1533
|
+
m_Color: {r: 0.09019608, g: 0.06666667, b: 0.15294118, a: 0.78431374}
|
|
1534
|
+
m_RaycastTarget: 1
|
|
1535
|
+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
1536
|
+
m_Maskable: 1
|
|
1537
|
+
m_OnCullStateChanged:
|
|
1538
|
+
m_PersistentCalls:
|
|
1539
|
+
m_Calls: []
|
|
1540
|
+
m_Sprite: {fileID: 0}
|
|
1541
|
+
m_Type: 1
|
|
1542
|
+
m_PreserveAspect: 0
|
|
1543
|
+
m_FillCenter: 1
|
|
1544
|
+
m_FillMethod: 4
|
|
1545
|
+
m_FillAmount: 1
|
|
1546
|
+
m_FillClockwise: 1
|
|
1547
|
+
m_FillOrigin: 0
|
|
1548
|
+
m_UseSpriteMesh: 0
|
|
1549
|
+
m_PixelsPerUnitMultiplier: 1
|
|
1272
1550
|
--- !u!1 &8322051490674722239
|
|
1273
1551
|
GameObject:
|
|
1274
1552
|
m_ObjectHideFlags: 0
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "app.hypergames.hypersdk",
|
|
3
|
-
"version": "1.11.0-beta.
|
|
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",
|