From 240d098ac3a001e8b978f3c459f205bb7582e94a Mon Sep 17 00:00:00 2001 From: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon, 20 Nov 2023 20:54:48 +0100 Subject: [PATCH 1/5] ok done now (#578) --- Assets/Scripts/Games/Global/Filter.cs | 81 +++++++-------------------- Assets/Scripts/Minigames.cs | 12 +++- 2 files changed, 30 insertions(+), 63 deletions(-) diff --git a/Assets/Scripts/Games/Global/Filter.cs b/Assets/Scripts/Games/Global/Filter.cs index b409a80e1..3f0683d57 100644 --- a/Assets/Scripts/Games/Global/Filter.cs +++ b/Assets/Scripts/Games/Global/Filter.cs @@ -86,6 +86,12 @@ namespace HeavenStudio.Games.Global GameManager.instance.onBeatChanged += OnBeatChanged; + for (int i = 0; i < 10; i++) + { + var newAmplify = GameManager.instance.GameCamera.gameObject.AddComponent(); + amplifies.Add(newAmplify); + } + // Don't use this because of serialization, add to the "FilterType" enum above manually. // GenerateFilterTypeEnum(); } @@ -97,77 +103,30 @@ namespace HeavenStudio.Games.Global private void OnBeatChanged(double beat) { allFilterEvents = EventCaller.GetAllInGameManagerList("vfx", new string[] { "filter" }); + allFilterEvents.Sort((x, y) => x.beat.CompareTo(y.beat)); + foreach (var a in amplifies) + { + a.LutTexture = null; + a.BlendAmount = 1; + } } private void Update() { var songPosBeat = Conductor.instance.songPositionInBeatsAsDouble; - var filterIndexes = new List(); - for (int i = 0; i < allFilterEvents.Count; i++) + foreach (var e in allFilterEvents) { - var filter = allFilterEvents[i]; + if (e.beat > songPosBeat) continue; + var func = Util.EasingFunction.GetEasingFunction((Util.EasingFunction.Ease)e["ease"]); + int track = (int)e["track"]; + float normalizedBeat = Mathf.Clamp01(Conductor.instance.GetPositionFromBeat(e.beat, e.length)); - if (filter.beat > songPosBeat) - break; - if (filter.beat + filter.length < songPosBeat) - continue; + float intensity = func(1 - e["start"], 1 - e["end"], normalizedBeat); - filterIndexes.Add(i); + amplifies[track - 1].LutTexture = amplifyTextures[(int)e["filter"]]; + amplifies[track - 1].BlendAmount = intensity; } - - bool indexCountChanged = filterIndexes.Count != lastFilterIndexesCount; - - if (indexCountChanged) - { - for (int i = 0; i < amplifies.Count; i++) - { - Destroy(amplifies[i]); - } - amplifies.Clear(); - } - - for (int i = 0; i < filterIndexes.Count; i++) - { - var filter = allFilterEvents[filterIndexes[i]]; - - if (filter.beat <= songPosBeat && filter.beat + filter.length >= songPosBeat) - { - var fadeInTime = filter["fadein"] * 0.01f; - var fadeOutTime = filter["fadeout"] * 0.01f; - - var intensity = filter["inten"]; - intensity = Mathf.Lerp(1, 0, Mathp.Normalize(intensity, 0, 100)); - var blendAmount = intensity; - - var endFadeInTime = Mathf.Lerp((float) filter.beat, (float) filter.beat + filter.length, fadeInTime); - var startFadeOutTime = (float) filter.beat + (Mathf.Lerp(0, filter.length, Mathf.Lerp(1, 0, fadeOutTime))); - - if (songPosBeat < endFadeInTime) - { - var normalizedFadeIn = Mathp.Normalize((float) songPosBeat, (float) filter.beat, endFadeInTime); - blendAmount = Mathf.Lerp(1f, intensity, normalizedFadeIn); - } - else if (songPosBeat >= startFadeOutTime) - { - var normalizedFadeOut = Mathf.Clamp01(Mathp.Normalize((float) songPosBeat, startFadeOutTime, (float) filter.beat + filter.length)); - blendAmount = Mathf.Lerp(intensity, 1f, normalizedFadeOut); - } - - var newAmplify = - (indexCountChanged) ? - GameManager.instance.GameCamera.gameObject.AddComponent() : - (AmplifyColorEffect)GameManager.instance.GameCamera.GetComponents(typeof(AmplifyColorEffect))[i]; - - var texIndex = (int)filter["filter"]; - newAmplify.LutTexture = amplifyTextures[texIndex]; - newAmplify.BlendAmount = blendAmount; - - amplifies.Add(newAmplify); - } - } - - lastFilterIndexesCount = filterIndexes.Count; } /// diff --git a/Assets/Scripts/Minigames.cs b/Assets/Scripts/Minigames.cs index 756041281..4afe66aaa 100644 --- a/Assets/Scripts/Minigames.cs +++ b/Assets/Scripts/Minigames.cs @@ -781,9 +781,17 @@ namespace HeavenStudio new List() { new Param("filter", Games.Global.Filter.FilterType.grayscale, "Filter"), - new Param("inten", new EntityTypes.Float(0, 100, 100), "Intensity"), + // old + + /*new Param("inten", new EntityTypes.Float(0, 100, 100), "Intensity"), new Param("fadein", new EntityTypes.Float(0, 100, 0), "Fade In"), - new Param("fadeout", new EntityTypes.Float(0, 100, 0), "Fade Out") + new Param("fadeout", new EntityTypes.Float(0, 100, 0), "Fade Out")*/ + + // new + + new Param("start", new EntityTypes.Float(0, 1, 1), "Start Intensity"), + new Param("end", new EntityTypes.Float(0, 1, 1), "End Intensity"), + new Param("ease", Util.EasingFunction.Ease.Linear, "Ease"), } ), new GameAction("move camera", "Move Camera", 1f, true, new List() From 7481f32c16515c925b9514f12fb0f1a50a6297de Mon Sep 17 00:00:00 2001 From: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue, 21 Nov 2023 17:57:03 +0100 Subject: [PATCH 2/5] 3D Camera and Viewport Position Update Fixes (#579) * Fixed Camera in Rhythm Rally and BTSDS * commet out log * fixed viewport not updating canvas in onBeatChanged --- Assets/Scripts/GameCamera.cs | 147 +++++++++++++----- Assets/Scripts/GameManager.cs | 8 +- .../Games/BoardMeeting/BoardMeeting.cs | 2 +- .../Games/BuiltToScaleDS/BuiltToScaleDS.cs | 11 +- .../Games/CheerReaders/CheerReaders.cs | 12 +- Assets/Scripts/Games/CropStomp/CropStomp.cs | 2 +- .../Scripts/Games/FlipperFlop/FlipperFlop.cs | 4 +- Assets/Scripts/Games/KarateMan/KarateMan.cs | 2 +- Assets/Scripts/Games/Lockstep/Lockstep.cs | 2 +- .../Scripts/Games/RhythmRally/RhythmRally.cs | 9 +- Assets/Scripts/Games/Ringside/Ringside.cs | 6 +- Assets/Scripts/Games/Rockers/Rockers.cs | 12 +- Assets/Scripts/Games/SeeSaw/SeeSawGuy.cs | 2 +- Assets/Scripts/Games/Spaceball/Spaceball.cs | 8 +- Assets/Scripts/Games/TapTroupe/TapTroupe.cs | 6 +- .../Games/TapTroupe/TapTroupeZoomOut.cs | 2 +- Assets/Scripts/StaticCamera.cs | 4 + 17 files changed, 156 insertions(+), 83 deletions(-) diff --git a/Assets/Scripts/GameCamera.cs b/Assets/Scripts/GameCamera.cs index 638f33e86..56257bd5b 100644 --- a/Assets/Scripts/GameCamera.cs +++ b/Assets/Scripts/GameCamera.cs @@ -38,15 +38,42 @@ namespace HeavenStudio /** camera's current transformation **/ - private static Vector3 position; - private static Vector3 rotEluer; - private static Vector3 shakeResult; + private static Vector3 _position; + private static Vector3 Position + { + get => _position; + set + { + _position = value; + instance.ApplyCameraValues(); + } + } + private static Vector3 _rotEuler; + private static Vector3 RotEuler + { + get => _rotEuler; + set + { + _rotEuler = value; + instance.ApplyCameraValues(); + } + } + private static Vector3 _shakeResult; + private static Vector3 ShakeResult + { + get => _shakeResult; + set + { + _shakeResult = value; + instance.ApplyCameraValues(); + } + } /** camera's last transformation **/ private static Vector3 positionLast; - private static Vector3 rotEluerLast; + private static Vector3 rotEulerLast; private static Vector3 shakeLast; /** @@ -54,10 +81,46 @@ namespace HeavenStudio to use in minigame scripts (Spaceball, Rhythm Rally, Built to Scale, etc.) and NOT in the editor **/ - public static Vector3 additionalPosition; - public static Vector3 additionalRotEluer; - public static Vector3 additionalScale; - public static float additionalFoV; + private static Vector3 _additionalPosition; + public static Vector3 AdditionalPosition + { + get => _additionalPosition; + set + { + _additionalPosition = value; + instance.ApplyCameraValues(); + } + } + private static Vector3 _additionalRotEuler; + public static Vector3 AdditionalRotEuler + { + get => _additionalRotEuler; + set + { + _additionalRotEuler = value; + instance.ApplyCameraValues(); + } + } + private static Vector3 _additionalScale; + public static Vector3 AdditionalScale + { + get => _additionalScale; + set + { + _additionalScale = value; + instance.ApplyCameraValues(); + } + } + private static float _additionalFoV; + public static float AdditionalFoV + { + get => _additionalFoV; + set + { + _additionalFoV = value; + instance.ApplyCameraValues(); + } + } [Header("Components")] public Color baseColor; @@ -80,7 +143,7 @@ namespace HeavenStudio currentColor = baseColor; positionLast = defaultPosition; - rotEluerLast = defaultRotEluer; + rotEulerLast = defaultRotEluer; } public void OnBeatChanged(double beat) @@ -90,7 +153,7 @@ namespace HeavenStudio currentColor = baseColor; positionLast = defaultPosition; - rotEluerLast = defaultRotEluer; + rotEulerLast = defaultRotEluer; // this entire thing is a mess redo it later //pos @@ -127,15 +190,21 @@ namespace HeavenStudio private void LateUpdate() { Camera cam = GetCamera(); - // rotate position by additional rotation - Vector3 userPos = Quaternion.Euler(additionalRotEluer) * position; - cam.transform.localPosition = userPos + additionalPosition + shakeResult; - cam.transform.eulerAngles = rotEluer + additionalRotEluer; - cam.fieldOfView = additionalFoV; cam.backgroundColor = currentColor; if (!StaticCamera.instance.usingMinigameAmbientColor) StaticCamera.instance.SetAmbientGlowColour(currentColor, false, false); } + private void ApplyCameraValues() + { + Camera cam = GetCamera(); + // rotate position by additional rotation + Vector3 userPos = Quaternion.Euler(_additionalRotEuler) * _position; + cam.transform.localPosition = userPos + _additionalPosition + _shakeResult; + cam.transform.eulerAngles = _rotEuler + _additionalRotEuler; + cam.fieldOfView = _additionalFoV; + //Debug.Log("Camera Pos: " + _additionalPosition); + } + private void UpdateCameraColor() { foreach (var e in colorEvents) @@ -168,19 +237,19 @@ namespace HeavenStudio switch (e["axis"]) { case (int) CameraAxis.X: - position.x = func(positionLast.x, e["valA"], Mathf.Min(prog, 1f)); + Position = new Vector3(func(positionLast.x, e["valA"], Mathf.Min(prog, 1f)), Position.y, Position.z); break; case (int) CameraAxis.Y: - position.y = func(positionLast.y, e["valB"], Mathf.Min(prog, 1f)); + Position = new Vector3(Position.x, func(positionLast.y, e["valB"], Mathf.Min(prog, 1f)), Position.z); break; case (int) CameraAxis.Z: - position.z = func(positionLast.z, -e["valC"], Mathf.Min(prog, 1f)); + Position = new Vector3(Position.x, Position.y, func(positionLast.z, -e["valC"], Mathf.Min(prog, 1f))); break; default: float dx = func(positionLast.x, e["valA"], Mathf.Min(prog, 1f)); float dy = func(positionLast.y, e["valB"], Mathf.Min(prog, 1f)); float dz = func(positionLast.z, -e["valC"], Mathf.Min(prog, 1f)); - position = new Vector3(dx, dy, dz); + Position = new Vector3(dx, dy, dz); break; } } @@ -216,19 +285,19 @@ namespace HeavenStudio switch (e["axis"]) { case (int) CameraAxis.X: - rotEluer.x = func(rotEluerLast.x, e["valA"], Mathf.Min(prog, 1f)); + RotEuler = new Vector3(func(rotEulerLast.x, e["valA"], Mathf.Min(prog, 1f)), RotEuler.y, RotEuler.z); break; case (int) CameraAxis.Y: - rotEluer.y = func(rotEluerLast.y, e["valB"], Mathf.Min(prog, 1f)); + RotEuler = new Vector3(RotEuler.x, func(rotEulerLast.y, e["valB"], Mathf.Min(prog, 1f)), RotEuler.z); break; case (int) CameraAxis.Z: - rotEluer.z = func(rotEluerLast.z, -e["valC"], Mathf.Min(prog, 1f)); + RotEuler = new Vector3(RotEuler.x, RotEuler.y, func(rotEulerLast.z, -e["valC"], Mathf.Min(prog, 1f))); break; default: - float dx = func(rotEluerLast.x, e["valA"], Mathf.Min(prog, 1f)); - float dy = func(rotEluerLast.y, e["valB"], Mathf.Min(prog, 1f)); - float dz = func(rotEluerLast.z, -e["valC"], Mathf.Min(prog, 1f)); - rotEluer = new Vector3(dx, dy, dz); //I'm stupid and forgot to negate the rotation gfd 😢 + float dx = func(rotEulerLast.x, e["valA"], Mathf.Min(prog, 1f)); + float dy = func(rotEulerLast.y, e["valB"], Mathf.Min(prog, 1f)); + float dz = func(rotEulerLast.z, -e["valC"], Mathf.Min(prog, 1f)); + RotEuler = new Vector3(dx, dy, dz); //I'm stupid and forgot to negate the rotation gfd 😢 break; } } @@ -237,19 +306,19 @@ namespace HeavenStudio switch (e["axis"]) { case (int) CameraAxis.X: - rotEluerLast.x = e["valA"]; + rotEulerLast.x = e["valA"]; break; case (int) CameraAxis.Y: - rotEluerLast.y = e["valB"]; + rotEulerLast.y = e["valB"]; break; case (int) CameraAxis.Z: - rotEluerLast.z = -e["valC"]; + rotEulerLast.z = -e["valC"]; break; default: - rotEluerLast = new Vector3(e["valA"], e["valB"], -e["valC"]); + rotEulerLast = new Vector3(e["valA"], e["valB"], -e["valC"]); break; } - rotEluerLast = new Vector3(e["valA"], e["valB"], -e["valC"]); + rotEulerLast = new Vector3(e["valA"], e["valB"], -e["valC"]); } } } @@ -262,27 +331,27 @@ namespace HeavenStudio if (prog >= 0f) { float fac = Mathf.Cos(Time.time * 80f) * 0.5f; - shakeResult = new Vector3(fac * e["valA"], fac * e["valB"]); + ShakeResult = new Vector3(fac * e["valA"], fac * e["valB"]); } if (prog > 1f) { - shakeResult = new Vector3(0, 0); + ShakeResult = new Vector3(0, 0); } } } public static void ResetTransforms() { - position = defaultPosition; - rotEluer = defaultRotEluer; - shakeResult = defaultShake; + Position = defaultPosition; + RotEuler = defaultRotEluer; + ShakeResult = defaultShake; } public static void ResetAdditionalTransforms() { - additionalPosition = new Vector3(0, 0, 0); - additionalRotEluer = new Vector3(0, 0, 0); - additionalFoV = defaultFoV; + AdditionalPosition = new Vector3(0, 0, 0); + AdditionalRotEuler = new Vector3(0, 0, 0); + AdditionalFoV = defaultFoV; } public static Camera GetCamera() diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index 84062067e..1496704e5 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -605,7 +605,7 @@ namespace HeavenStudio } StartCoroutine(PlayCo(beat, delay)); - onBeatChanged?.Invoke(beat); + //onBeatChanged?.Invoke(beat); } private IEnumerator PlayCo(double beat, float delay = 0f) @@ -649,7 +649,7 @@ namespace HeavenStudio Conductor.instance.Stop(beat); SetCurrentEventToClosest(beat); - onBeatChanged?.Invoke(beat); + //onBeatChanged?.Invoke(beat); // I feel like I should standardize the names SkillStarManager.instance.KillStar(); @@ -946,6 +946,8 @@ namespace HeavenStudio private void SetGame(string game, bool useMinigameColor = true) { + ResetCamera(); // resetting camera before setting new minigame so minigames can set camera values in their awake call - Rasmus + Destroy(currentGameO); currentGameO = Instantiate(GetGame(game)); @@ -953,8 +955,6 @@ namespace HeavenStudio currentGameO.name = game; SetCurrentGame(game, useMinigameColor); - - ResetCamera(); } public void PreloadGameSequences(string game) diff --git a/Assets/Scripts/Games/BoardMeeting/BoardMeeting.cs b/Assets/Scripts/Games/BoardMeeting/BoardMeeting.cs index 24c150a86..f5efe82e0 100644 --- a/Assets/Scripts/Games/BoardMeeting/BoardMeeting.cs +++ b/Assets/Scripts/Games/BoardMeeting/BoardMeeting.cs @@ -431,7 +431,7 @@ namespace HeavenStudio.Games if (shakeTween != null) shakeTween.Kill(true); - DOTween.Punch(() => GameCamera.additionalPosition, x => GameCamera.additionalPosition = x, new Vector3(shakeIntensity, 0, 0), + DOTween.Punch(() => GameCamera.AdditionalPosition, x => GameCamera.AdditionalPosition = x, new Vector3(shakeIntensity, 0, 0), Conductor.instance.pitchedSecPerBeat * 0.5f, 18, 1f); executives[executiveCount - 1].Stop(); assistantAnim.DoScaledAnimationAsync("Stop", 0.5f); diff --git a/Assets/Scripts/Games/BuiltToScaleDS/BuiltToScaleDS.cs b/Assets/Scripts/Games/BuiltToScaleDS/BuiltToScaleDS.cs index 1cae968bf..74ffa8391 100644 --- a/Assets/Scripts/Games/BuiltToScaleDS/BuiltToScaleDS.cs +++ b/Assets/Scripts/Games/BuiltToScaleDS/BuiltToScaleDS.cs @@ -128,6 +128,10 @@ namespace HeavenStudio.Games { instance = this; + GameCamera.AdditionalPosition = camPos.position + (Quaternion.Euler(camPos.eulerAngles) * Vector3.forward * 10f); + GameCamera.AdditionalRotEuler = camPos.eulerAngles; + GameCamera.AdditionalFoV = cameraFoV; + environmentMaterials = environmentRenderer.materials; elevatorMaterials = elevatorRenderer.materials; beltMaterial = Instantiate(environmentMaterials[8]); @@ -191,13 +195,6 @@ namespace HeavenStudio.Games } } - private void Start() - { - GameCamera.additionalPosition = camPos.position + (Quaternion.Euler(camPos.eulerAngles) * Vector3.forward * 10f); - GameCamera.additionalRotEluer = camPos.eulerAngles; - GameCamera.additionalFoV = cameraFoV; - } - public void UpdateMappingColors(Color objectColor, Color shooterColor, Color environmentColor) { currentObjectColor = objectColor; diff --git a/Assets/Scripts/Games/CheerReaders/CheerReaders.cs b/Assets/Scripts/Games/CheerReaders/CheerReaders.cs index 30ba378ad..c04ee4bb6 100644 --- a/Assets/Scripts/Games/CheerReaders/CheerReaders.cs +++ b/Assets/Scripts/Games/CheerReaders/CheerReaders.cs @@ -290,39 +290,39 @@ namespace HeavenStudio.Games { if (normalizedZoomOutAgainBeat > 1) { - GameCamera.additionalPosition = new Vector3(0, 0, 0); + GameCamera.AdditionalPosition = new Vector3(0, 0, 0); } else { Util.EasingFunction.Function func = Util.EasingFunction.GetEasingFunction(Util.EasingFunction.Ease.EaseInOutQuint); float newZoom = func(shouldDoSuccessZoom ? 4f : 1.5f, 0, normalizedZoomOutAgainBeat); - GameCamera.additionalPosition = new Vector3(0, 0, newZoom); + GameCamera.AdditionalPosition = new Vector3(0, 0, newZoom); } } else if (normalizedZoomInBeat >= 0) { if (normalizedZoomInBeat > 1) { - GameCamera.additionalPosition = new Vector3(0, 0, shouldDoSuccessZoom ? 4f : 1.5f); + GameCamera.AdditionalPosition = new Vector3(0, 0, shouldDoSuccessZoom ? 4f : 1.5f); } else { Util.EasingFunction.Function func = Util.EasingFunction.GetEasingFunction(Util.EasingFunction.Ease.EaseOutQuint); float newZoom = func(-1, shouldDoSuccessZoom ? 4f : 1.5f, normalizedZoomInBeat); - GameCamera.additionalPosition = new Vector3(0, 0, newZoom); + GameCamera.AdditionalPosition = new Vector3(0, 0, newZoom); } } else if (normalizedZoomOutBeat >= 0) { if (normalizedZoomOutBeat > 1) { - GameCamera.additionalPosition = new Vector3(0, 0, -1); + GameCamera.AdditionalPosition = new Vector3(0, 0, -1); } else { Util.EasingFunction.Function func = Util.EasingFunction.GetEasingFunction(Util.EasingFunction.Ease.EaseOutQuint); float newZoom = func(0f, 1f, normalizedZoomOutBeat); - GameCamera.additionalPosition = new Vector3(0, 0, newZoom * -1); + GameCamera.AdditionalPosition = new Vector3(0, 0, newZoom * -1); } } } diff --git a/Assets/Scripts/Games/CropStomp/CropStomp.cs b/Assets/Scripts/Games/CropStomp/CropStomp.cs index f1bdf9628..5295b10d1 100644 --- a/Assets/Scripts/Games/CropStomp/CropStomp.cs +++ b/Assets/Scripts/Games/CropStomp/CropStomp.cs @@ -425,7 +425,7 @@ namespace HeavenStudio.Games if (shakeTween != null) shakeTween.Kill(true); - DOTween.Punch(() => GameCamera.additionalPosition, x => GameCamera.additionalPosition = x, new Vector3(0, 0.75f, 0), + DOTween.Punch(() => GameCamera.AdditionalPosition, x => GameCamera.AdditionalPosition = x, new Vector3(0, 0.75f, 0), Conductor.instance.pitchedSecPerBeat*0.5f, 18, 1f); isStepping = true; diff --git a/Assets/Scripts/Games/FlipperFlop/FlipperFlop.cs b/Assets/Scripts/Games/FlipperFlop/FlipperFlop.cs index 1fc02f673..e8eb46f47 100644 --- a/Assets/Scripts/Games/FlipperFlop/FlipperFlop.cs +++ b/Assets/Scripts/Games/FlipperFlop/FlipperFlop.cs @@ -287,7 +287,7 @@ namespace HeavenStudio.Games { currentXPos = flippersMovement.position.x + (moveLeft ? -rollDistance : rollDistance); isMoving = true; - currentCameraXPos = GameCamera.additionalPosition.x + (moveLeft ? -rollDistance : rollDistance); + currentCameraXPos = GameCamera.AdditionalPosition.x + (moveLeft ? -rollDistance : rollDistance); if (moveLeft) { rightSnow.Play(); @@ -310,7 +310,7 @@ namespace HeavenStudio.Games { EasingFunction.Function funcCam = EasingFunction.GetEasingFunction(EasingFunction.Ease.EaseInOutQuad); float newCameraPosX = funcCam(lastCameraXPos, currentCameraXPos, normalizedCamBeat); - GameCamera.additionalPosition = new Vector3(newCameraPosX, 0, 0); + GameCamera.AdditionalPosition = new Vector3(newCameraPosX, 0, 0); } if (1f >= normalizedBeat) { diff --git a/Assets/Scripts/Games/KarateMan/KarateMan.cs b/Assets/Scripts/Games/KarateMan/KarateMan.cs index abbcf072c..06acb99d0 100644 --- a/Assets/Scripts/Games/KarateMan/KarateMan.cs +++ b/Assets/Scripts/Games/KarateMan/KarateMan.cs @@ -839,7 +839,7 @@ namespace HeavenStudio.Games } BackgroundColorUpdate(); - GameCamera.additionalPosition = cameraPosition - GameCamera.defaultPosition; + GameCamera.AdditionalPosition = cameraPosition - GameCamera.defaultPosition; BGEffect.transform.position = new Vector3(GameCamera.instance.transform.position.x, GameCamera.instance.transform.position.y, 0); } diff --git a/Assets/Scripts/Games/Lockstep/Lockstep.cs b/Assets/Scripts/Games/Lockstep/Lockstep.cs index 784726798..f425f735f 100644 --- a/Assets/Scripts/Games/Lockstep/Lockstep.cs +++ b/Assets/Scripts/Games/Lockstep/Lockstep.cs @@ -392,7 +392,7 @@ namespace HeavenStudio.Games public void SetZoom(int zoom) { - GameCamera.additionalPosition = new Vector3(0, 0, (ZoomPresets)zoom switch + GameCamera.AdditionalPosition = new Vector3(0, 0, (ZoomPresets)zoom switch { ZoomPresets.Regular => 0, ZoomPresets.NotThatFar => -4.5f, diff --git a/Assets/Scripts/Games/RhythmRally/RhythmRally.cs b/Assets/Scripts/Games/RhythmRally/RhythmRally.cs index 2a114fa65..28607ab70 100644 --- a/Assets/Scripts/Games/RhythmRally/RhythmRally.cs +++ b/Assets/Scripts/Games/RhythmRally/RhythmRally.cs @@ -159,6 +159,9 @@ namespace HeavenStudio.Games private void Awake() { + GameCamera.AdditionalPosition = cameraPos.position + (Quaternion.Euler(cameraPos.rotation.eulerAngles) * Vector3.forward * 10f); + GameCamera.AdditionalRotEuler = cameraPos.rotation.eulerAngles; + GameCamera.AdditionalFoV = cameraFOV; instance = this; paddlers.Init(); @@ -367,9 +370,9 @@ namespace HeavenStudio.Games opponentServing = false; //update camera - GameCamera.additionalPosition = cameraPos.position + (Quaternion.Euler(cameraPos.rotation.eulerAngles) * Vector3.forward * 10f); - GameCamera.additionalRotEluer = cameraPos.rotation.eulerAngles; - GameCamera.additionalFoV = cameraFOV; + GameCamera.AdditionalPosition = cameraPos.position + (Quaternion.Euler(cameraPos.rotation.eulerAngles) * Vector3.forward * 10f); + GameCamera.AdditionalRotEuler = cameraPos.rotation.eulerAngles; + GameCamera.AdditionalFoV = cameraFOV; } public void Bop(double beat, float length, bool bop, bool bopAuto) diff --git a/Assets/Scripts/Games/Ringside/Ringside.cs b/Assets/Scripts/Games/Ringside/Ringside.cs index 58b1e72f8..d70d7615e 100644 --- a/Assets/Scripts/Games/Ringside/Ringside.cs +++ b/Assets/Scripts/Games/Ringside/Ringside.cs @@ -293,11 +293,11 @@ namespace HeavenStudio.Games { if (normalizedShouldStopBeat > 1 && !keepZoomOut) { - GameCamera.additionalPosition = new Vector3(0, 0, 0); + GameCamera.AdditionalPosition = new Vector3(0, 0, 0); } else if (normalizedBeat > 1) { - GameCamera.additionalPosition = new Vector3(currentCamPos.x, currentCamPos.y, currentCamPos.z + 10); + GameCamera.AdditionalPosition = new Vector3(currentCamPos.x, currentCamPos.y, currentCamPos.z + 10); } else { @@ -305,7 +305,7 @@ namespace HeavenStudio.Games float newPosX = func(lastCamPos.x, currentCamPos.x, normalizedBeat); float newPosY = func(lastCamPos.y, currentCamPos.y, normalizedBeat); float newPosZ = func(lastCamPos.z + 10, currentCamPos.z + 10, normalizedBeat); - GameCamera.additionalPosition = new Vector3(newPosX, newPosY, newPosZ); + GameCamera.AdditionalPosition = new Vector3(newPosX, newPosY, newPosZ); } } } diff --git a/Assets/Scripts/Games/Rockers/Rockers.cs b/Assets/Scripts/Games/Rockers/Rockers.cs index 865897d44..ed180b9b8 100644 --- a/Assets/Scripts/Games/Rockers/Rockers.cs +++ b/Assets/Scripts/Games/Rockers/Rockers.cs @@ -670,7 +670,7 @@ namespace HeavenStudio.Games Util.EasingFunction.Function func = Util.EasingFunction.GetEasingFunction(Util.EasingFunction.Ease.EaseInOutQuad); float newX = func(lastTargetCameraX, targetCameraX, normalizedBeat); - GameCamera.additionalPosition = new Vector3(newX, 0, 0); + GameCamera.AdditionalPosition = new Vector3(newX, 0, 0); } } } @@ -680,7 +680,7 @@ namespace HeavenStudio.Games SoundByte.PlayOneShotGame("rockers/lastOne"); if (moveCamera) { - lastTargetCameraX = GameCamera.additionalPosition.x; + lastTargetCameraX = GameCamera.AdditionalPosition.x; targetCameraX = 0; cameraMoveBeat = beat + 2; } @@ -736,7 +736,7 @@ namespace HeavenStudio.Games SoundByte.PlayOneShotGame("rockers/cmon"); if (moveCamera) { - lastTargetCameraX = GameCamera.additionalPosition.x; + lastTargetCameraX = GameCamera.AdditionalPosition.x; targetCameraX = 0; cameraMoveBeat = beat + 2; } @@ -806,7 +806,7 @@ namespace HeavenStudio.Games List actions = new List(); if (moveCamera) { - lastTargetCameraX = GameCamera.additionalPosition.x; + lastTargetCameraX = GameCamera.AdditionalPosition.x; targetCameraX = 0; cameraMoveBeat = beat + goToMiddleBeat; } @@ -896,7 +896,7 @@ namespace HeavenStudio.Games private void MoveCamera(double beat) { - lastTargetCameraX = GameCamera.additionalPosition.x; + lastTargetCameraX = GameCamera.AdditionalPosition.x; targetCameraX = JJ.transform.localPosition.x; cameraMoveBeat = beat; @@ -1058,7 +1058,7 @@ namespace HeavenStudio.Games { if (moveCamera) { - lastTargetCameraX = GameCamera.additionalPosition.x; + lastTargetCameraX = GameCamera.AdditionalPosition.x; targetCameraX = Soshi.transform.localPosition.x; cameraMoveBeat = beat - 1; } diff --git a/Assets/Scripts/Games/SeeSaw/SeeSawGuy.cs b/Assets/Scripts/Games/SeeSaw/SeeSawGuy.cs index ae98ef43f..773995168 100644 --- a/Assets/Scripts/Games/SeeSaw/SeeSawGuy.cs +++ b/Assets/Scripts/Games/SeeSaw/SeeSawGuy.cs @@ -188,7 +188,7 @@ namespace HeavenStudio.Games.Scripts_SeeSaw public void Land(LandType landType, bool getUpOut) { transform.rotation = Quaternion.Euler(0, 0, 0); - GameCamera.additionalPosition = Vector3.zero; + GameCamera.AdditionalPosition = Vector3.zero; bool landedOut = false; switch (currentState) { diff --git a/Assets/Scripts/Games/Spaceball/Spaceball.cs b/Assets/Scripts/Games/Spaceball/Spaceball.cs index 2b7cde0b0..9ddd18c06 100644 --- a/Assets/Scripts/Games/Spaceball/Spaceball.cs +++ b/Assets/Scripts/Games/Spaceball/Spaceball.cs @@ -165,27 +165,27 @@ namespace HeavenStudio.Games { if (normalizedBeat > 1) { - GameCamera.additionalPosition = new Vector3(0, 0, currentZoomCamDistance + 10); + GameCamera.AdditionalPosition = new Vector3(0, 0, currentZoomCamDistance + 10); } else { if (currentZoomCamLength < 0) { - GameCamera.additionalPosition = new Vector3(0, 0, currentZoomCamDistance + 10); + GameCamera.AdditionalPosition = new Vector3(0, 0, currentZoomCamDistance + 10); } else { Util.EasingFunction.Function func = Util.EasingFunction.GetEasingFunction(lastEase); float newPosZ = func(lastCamDistance + 10, currentZoomCamDistance + 10, normalizedBeat); - GameCamera.additionalPosition = new Vector3(0, 0, newPosZ); + GameCamera.AdditionalPosition = new Vector3(0, 0, newPosZ); } } } else { // ? - GameCamera.additionalPosition = new Vector3(0, 0, 0); + GameCamera.AdditionalPosition = new Vector3(0, 0, 0); } } } diff --git a/Assets/Scripts/Games/TapTroupe/TapTroupe.cs b/Assets/Scripts/Games/TapTroupe/TapTroupe.cs index b377b8881..22af931c1 100644 --- a/Assets/Scripts/Games/TapTroupe/TapTroupe.cs +++ b/Assets/Scripts/Games/TapTroupe/TapTroupe.cs @@ -281,19 +281,19 @@ namespace HeavenStudio.Games { if (!keepZoomOut) { - GameCamera.additionalPosition = new Vector3(0, 0, 0); + GameCamera.AdditionalPosition = new Vector3(0, 0, 0); zoomOutAnim.Play("NoZoomOut", 0, 0); } else { Util.EasingFunction.Function func = Util.EasingFunction.GetEasingFunction(lastEase); if (normalizedBeat > 1) - GameCamera.additionalPosition = new Vector3(0, 30, -100); + GameCamera.AdditionalPosition = new Vector3(0, 30, -100); else { float newPosY = func(0, 30, normalizedBeat); float newPosZ = func(0, -100, normalizedBeat); - GameCamera.additionalPosition = new Vector3(0, newPosY, newPosZ); + GameCamera.AdditionalPosition = new Vector3(0, newPosY, newPosZ); } if (normalizedAnimBeat > 1) { diff --git a/Assets/Scripts/Games/TapTroupe/TapTroupeZoomOut.cs b/Assets/Scripts/Games/TapTroupe/TapTroupeZoomOut.cs index 612b9d276..ca278e418 100644 --- a/Assets/Scripts/Games/TapTroupe/TapTroupeZoomOut.cs +++ b/Assets/Scripts/Games/TapTroupe/TapTroupeZoomOut.cs @@ -17,7 +17,7 @@ namespace HeavenStudio.Games.Scripts_TapTroupe void Update() { - transform.localPosition = new Vector3(transform.localPosition.x, GameCamera.additionalPosition.y + yOffset, GameCamera.additionalPosition.z + zoomOffset); + transform.localPosition = new Vector3(transform.localPosition.x, GameCamera.AdditionalPosition.y + yOffset, GameCamera.AdditionalPosition.z + zoomOffset); } } } diff --git a/Assets/Scripts/StaticCamera.cs b/Assets/Scripts/StaticCamera.cs index c3f4b7b32..c92a1bc99 100644 --- a/Assets/Scripts/StaticCamera.cs +++ b/Assets/Scripts/StaticCamera.cs @@ -86,6 +86,10 @@ namespace HeavenStudio UpdatePan(); UpdateRotation(); UpdateScale(); + + canvas.localPosition = pan; + canvas.eulerAngles = new Vector3(0, 0, rotation); + canvas.localScale = scale; } // Update is called once per frame From 9334cb76abc7b427a38c78f938394acb046d49e6 Mon Sep 17 00:00:00 2001 From: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue, 21 Nov 2023 19:29:02 +0100 Subject: [PATCH 3/5] Blue Bear Story + Tweak/Fixes (#580) * Story Done * Persistant treats --- Assets/Resources/Games/blueBear.prefab | 578 ++++++++++++- .../Games/BlueBear/Animations/Breakup.anim | 784 ++++++++++++++++++ .../BlueBear/Animations/Breakup.anim.meta | 8 + .../BlueBear/Animations/BreakupExit.anim | 784 ++++++++++++++++++ .../BlueBear/Animations/BreakupExit.anim.meta | 8 + .../Games/BlueBear/Animations/Flashback0.anim | 247 ++++++ .../BlueBear/Animations/Flashback0.anim.meta | 8 + .../BlueBear/Animations/Flashback0Exit.anim | 247 ++++++ .../Animations/Flashback0Exit.anim.meta | 8 + .../Games/BlueBear/Animations/Flashback1.anim | 247 ++++++ .../BlueBear/Animations/Flashback1.anim.meta | 8 + .../BlueBear/Animations/Flashback1Exit.anim | 247 ++++++ .../Animations/Flashback1Exit.anim.meta | 8 + .../Games/BlueBear/Animations/Flashback2.anim | 247 ++++++ .../BlueBear/Animations/Flashback2.anim.meta | 8 + .../BlueBear/Animations/Flashback2Exit.anim | 247 ++++++ .../Animations/Flashback2Exit.anim.meta | 8 + .../Games/BlueBear/Animations/Flashback3.anim | 247 ++++++ .../BlueBear/Animations/Flashback3.anim.meta | 8 + .../BlueBear/Animations/Flashback3Exit.anim | 247 ++++++ .../Animations/Flashback3Exit.anim.meta | 8 + .../Games/BlueBear/Animations/NoCrumbs.anim | 2 +- .../Games/BlueBear/Animations/NoStory.anim | 53 ++ .../BlueBear/Animations/NoStory.anim.meta | 8 + .../BlueBear/Animations/Story.controller | 362 ++++++++ .../BlueBear/Animations/Story.controller.meta | 8 + Assets/Scripts/Games/BlueBear/BlueBear.cs | 111 ++- Assets/Scripts/Games/BlueBear/Treat.cs | 2 - 28 files changed, 4692 insertions(+), 56 deletions(-) create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Breakup.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Breakup.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/BreakupExit.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/BreakupExit.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0Exit.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0Exit.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1Exit.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1Exit.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2Exit.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2Exit.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3Exit.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3Exit.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/NoStory.anim create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/NoStory.anim.meta create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Story.controller create mode 100644 Assets/Resources/Sprites/Games/BlueBear/Animations/Story.controller.meta diff --git a/Assets/Resources/Games/blueBear.prefab b/Assets/Resources/Games/blueBear.prefab index 49b4fc3a2..20ae11370 100644 --- a/Assets/Resources/Games/blueBear.prefab +++ b/Assets/Resources/Games/blueBear.prefab @@ -26,6 +26,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.5, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5105679465306411440} - {fileID: 5017746873513982078} @@ -59,6 +60,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5421637543485503317} - {fileID: 3691807933677802949} @@ -114,6 +116,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 8.5, y: -5.96, z: 0} m_LocalScale: {x: 9.920722, y: 9.920722, z: 9.920722} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1786192994432166401} m_RootOrder: 3 @@ -129,6 +132,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -169,6 +173,90 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &519324430633027381 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8086662841372816991} + - component: {fileID: 8208959070019046447} + m_Layer: 0 + m_Name: heart_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8086662841372816991 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519324430633027381} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.1699997, z: 0} + m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 738467460505531434} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &8208959070019046447 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519324430633027381} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 3280955175608745582, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.58, y: 0.7} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &536226617134315783 GameObject: m_ObjectHideFlags: 0 @@ -195,6 +283,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2969645718598995040} - {fileID: 5637196227171860258} @@ -230,6 +319,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 716902796083954310} m_RootOrder: 2 @@ -241,19 +331,19 @@ ParticleSystem: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 556620163903033461} - serializedVersion: 7 + serializedVersion: 8 lengthInSec: 5 simulationSpeed: 2 stopAction: 2 cullingMode: 0 ringBufferMode: 0 ringBufferLoopRange: {x: 0, y: 1} + emitterVelocityMode: 0 looping: 0 prewarm: 0 playOnAwake: 0 useUnscaledTime: 0 autoRandomSeed: 1 - useRigidbodyForVelocity: 1 startDelay: serializedVersion: 2 minMaxState: 0 @@ -803,6 +893,7 @@ ParticleSystem: m_RotationOrder: 4 randomizeRotationDirection: 0 maxNumParticles: 1000 + customEmitterVelocity: {x: 0, y: 0, z: 0} size3D: 0 rotation3D: 0 gravityModifier: @@ -5010,6 +5101,7 @@ ParticleSystemRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 0 @@ -5040,6 +5132,7 @@ ParticleSystemRenderer: m_SortingLayer: 0 m_SortingOrder: 70 m_RenderMode: 0 + m_MeshDistribution: 0 m_SortMode: 0 m_MinParticleSize: 0 m_MaxParticleSize: 0.5 @@ -5063,6 +5156,10 @@ ParticleSystemRenderer: m_Mesh1: {fileID: 0} m_Mesh2: {fileID: 0} m_Mesh3: {fileID: 0} + m_MeshWeighting: 1 + m_MeshWeighting1: 1 + m_MeshWeighting2: 1 + m_MeshWeighting3: 1 m_MaskInteraction: 0 --- !u!1 &801187159700689650 GameObject: @@ -5091,6 +5188,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -2.15, y: -12.02, z: 0} m_LocalScale: {x: 9.920722, y: 9.920722, z: 9.920722} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1786192994432166401} m_RootOrder: 0 @@ -5106,6 +5204,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5172,6 +5271,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.252, y: -0.003, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7230865716363398547} - {fileID: 5946996383810936326} @@ -5206,6 +5306,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.199, y: -0.256, z: 0} m_LocalScale: {x: 1.04, y: 1.04, z: 1.04} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4509702097922074952} m_RootOrder: 0 @@ -5221,6 +5322,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5288,6 +5390,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -18.11, y: -11.89, z: 0} m_LocalScale: {x: 9.920722, y: 9.920722, z: 9.920722} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1786192994432166401} m_RootOrder: 4 @@ -5303,6 +5406,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5370,6 +5474,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.75, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7281100114088317483} - {fileID: 7816027614157800504} @@ -5388,6 +5493,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5455,6 +5561,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.02, y: 0.077, z: 0} m_LocalScale: {x: 0.56900513, y: 0.8241912, z: 0.04485395} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711658895220} m_RootOrder: 0 @@ -5470,6 +5577,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5536,6 +5644,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -2, z: 0} m_LocalScale: {x: 4, y: 4, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 636453562855450601} m_Father: {fileID: 5813499711186931250} @@ -5567,6 +5676,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6329961769281807094} - {fileID: 3593119893011264580} @@ -5600,6 +5710,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7577381734816330351} - {fileID: 3145709441744219950} @@ -5608,7 +5719,7 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &435615509351659063 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -5621,10 +5732,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &2367708131139839123 GameObject: m_ObjectHideFlags: 0 @@ -5652,6 +5765,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -5, y: -12.3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3593119893011264580} m_RootOrder: 2 @@ -5699,6 +5813,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: 0.7215024, w: 0.69241196} m_LocalPosition: {x: 0.065, y: -1.085, z: 0} m_LocalScale: {x: 0.23254994, y: 0.28655535, z: 0.40709332} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711658895220} m_RootOrder: 3 @@ -5714,6 +5829,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5780,6 +5896,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6960831429059082753} m_Father: {fileID: 636453562855450601} @@ -5812,6 +5929,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: 0.7215024, w: 0.69241196} m_LocalPosition: {x: 0.137, y: -0.827, z: 0} m_LocalScale: {x: 0.28709868, y: 0.35377204, z: 0.50258434} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711658895220} m_RootOrder: 2 @@ -5827,6 +5945,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5894,6 +6013,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.9811697, y: -9.0225525, z: 0} m_LocalScale: {x: 244.94406, y: 143.82986, z: 0.4696485} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711186931250} m_RootOrder: 8 @@ -5909,6 +6029,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5976,6 +6097,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.0125, y: 0.7375, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 636453562855450601} m_RootOrder: 1 @@ -5991,6 +6113,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6058,6 +6181,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.2, y: 3.9999998, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6329961769281807094} m_RootOrder: 1 @@ -6105,6 +6229,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.81191707, y: -14.454768, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 846890855353731875} - {fileID: 6040832969470045575} @@ -6116,7 +6241,7 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &1672690672723614704 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -6129,10 +6254,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &3386726751787149544 GameObject: m_ObjectHideFlags: 0 @@ -6160,6 +6287,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -3.3230858, y: 14.9, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3593119893011264580} m_RootOrder: 1 @@ -6207,6 +6335,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: -1.3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 636453562855450601} m_RootOrder: 3 @@ -6222,6 +6351,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6288,6 +6418,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2852734330052661752} - {fileID: 4509702097922074952} @@ -6322,6 +6453,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.8, y: -4, z: 0} m_LocalScale: {x: 4, y: 4, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 716902796083954310} m_RootOrder: 0 @@ -6337,6 +6469,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6389,17 +6522,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f7dae340f4a85ba44ab2f8cfd4429430, type: 3} m_Name: m_EditorClassIdentifier: - inList: 0 - state: - gameObject: {fileID: 0} - early: 0 - perfect: 0 - late: 0 - createBeat: 0 - eligibleHitsList: [] - aceTimes: 0 - isEligible: 0 - triggersAutoplay: 1 isCake: 0 startBeat: 0 --- !u!1 &4021263521913631461 @@ -6428,6 +6550,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2091241396517154924} - {fileID: 5264051465189154329} @@ -6462,6 +6585,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -1.8, y: -6.69, z: 0} m_LocalScale: {x: 9.920722, y: 9.920722, z: 9.920722} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1786192994432166401} m_RootOrder: 1 @@ -6477,6 +6601,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6544,6 +6669,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 13.69, y: -6.71, z: 0} m_LocalScale: {x: 9.920722, y: 9.920722, z: 9.920722} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1786192994432166401} m_RootOrder: 2 @@ -6559,6 +6685,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6626,6 +6753,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2288025294002058218} - {fileID: 1308885078639903341} @@ -6634,7 +6762,7 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &5964015178334651268 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -6647,10 +6775,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &4732423349660717250 GameObject: m_ObjectHideFlags: 0 @@ -6678,6 +6808,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5019461457677901195} - {fileID: 1189969421379328708} @@ -6706,6 +6837,90 @@ MonoBehaviour: - {fileID: 7051398189816610608} - {fileID: 4773903569383290023} normalizedTime: 0.75 +--- !u!1 &4851098416927797487 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2327696661996667804} + - component: {fileID: 6641598164577867445} + m_Layer: 0 + m_Name: flashback_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2327696661996667804 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4851098416927797487} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.403, y: 0.542, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 738467460505531434} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &6641598164577867445 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4851098416927797487} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -997 + m_Sprite: {fileID: 8573059910350240599, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.8, y: 1.44} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &5185123952885680762 GameObject: m_ObjectHideFlags: 0 @@ -6733,6 +6948,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.293, y: 0.01, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 636453562855450601} m_RootOrder: 5 @@ -6748,6 +6964,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6788,6 +7005,90 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &5206647684535152570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7022477793167285501} + - component: {fileID: 7321156436145464779} + m_Layer: 0 + m_Name: breakup_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7022477793167285501 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5206647684535152570} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.42, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 738467460505531434} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &7321156436145464779 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5206647684535152570} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 5768824089713594088, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.12, y: 1.18} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &5227421454194059898 GameObject: m_ObjectHideFlags: 0 @@ -6815,6 +7116,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1997559998088040406} - {fileID: 7120340470791402976} @@ -6827,7 +7129,7 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &2763058238026975647 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -6840,10 +7142,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &5251011089174362824 GameObject: m_ObjectHideFlags: 0 @@ -6871,6 +7175,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -1.5, y: -4, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3593119893011264580} m_RootOrder: 0 @@ -6918,6 +7223,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.404, y: -0.22199999, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7272545505794177805} m_RootOrder: 1 @@ -6933,6 +7239,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7000,6 +7307,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 542211752819136380} m_Father: {fileID: 8395031415588767776} @@ -7007,7 +7315,7 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &4404669675893967101 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -7020,10 +7328,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &5565740676811663418 GameObject: m_ObjectHideFlags: 0 @@ -7051,6 +7361,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.5, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6960831429059082753} m_RootOrder: 0 @@ -7066,6 +7377,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7133,6 +7445,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.228, y: -0.394, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2852734330052661752} m_RootOrder: 0 @@ -7148,6 +7461,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7215,6 +7529,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1910769386877084603} - {fileID: 716902796083954310} @@ -7225,6 +7540,7 @@ Transform: - {fileID: 1786192994432166401} - {fileID: 5860131706849385657} - {fileID: 9061701609461501601} + - {fileID: 738467460505531434} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -7241,9 +7557,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: SoundSequences: [] - EligibleHits: [] scheduledInputs: [] - firstEnable: 0 headAndBodyAnim: {fileID: 2763058238026975647} bagsAnim: {fileID: 5964015178334651268} donutBagAnim: {fileID: 727928680141255811} @@ -7251,6 +7565,7 @@ MonoBehaviour: windAnim: {fileID: 435615509351659063} leftCrumb: {fileID: 8219798266945921243} rightCrumb: {fileID: 5519696871992390998} + _storyAnim: {fileID: 920502940108507811} donutBase: {fileID: 3978360378071664502} cakeBase: {fileID: 5934916489524689261} crumbsBase: {fileID: 556620163903033461} @@ -7344,6 +7659,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.05, y: -1.03, z: 0} m_LocalScale: {x: 18.623394, y: 13.102545, z: 0.74871683} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3792206094993402673} - {fileID: 1782325534478875845} @@ -7355,7 +7671,7 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &6092762685894244170 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -7368,10 +7684,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &5934916489524689261 GameObject: m_ObjectHideFlags: 0 @@ -7400,6 +7718,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -1.8, y: -4, z: 0} m_LocalScale: {x: 4, y: 4, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 716902796083954310} m_RootOrder: 1 @@ -7415,6 +7734,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7467,17 +7787,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f7dae340f4a85ba44ab2f8cfd4429430, type: 3} m_Name: m_EditorClassIdentifier: - inList: 0 - state: - gameObject: {fileID: 0} - early: 0 - perfect: 0 - late: 0 - createBeat: 0 - eligibleHitsList: [] - aceTimes: 0 - isEligible: 0 - triggersAutoplay: 1 isCake: 1 startBeat: 0 --- !u!1 &5988159118627703275 @@ -7507,6 +7816,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.082, y: -0.465, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5637196227171860258} m_RootOrder: 2 @@ -7522,6 +7832,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7589,6 +7900,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.013, y: -0.02899998, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5637196227171860258} m_RootOrder: 0 @@ -7604,6 +7916,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7672,6 +7985,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.5, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1308885078639903341} m_RootOrder: 1 @@ -7687,6 +8001,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7729,7 +8044,7 @@ SpriteRenderer: m_SpriteSortPoint: 0 --- !u!95 &589975270741553205 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -7742,10 +8057,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &6715336872027509138 GameObject: m_ObjectHideFlags: 0 @@ -7773,6 +8090,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 636453562855450601} m_RootOrder: 2 @@ -7788,6 +8106,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7854,6 +8173,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6674056496145543984} - {fileID: 8732635067280461858} @@ -7888,6 +8208,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 5.64, y: 2.19, z: 0} m_LocalScale: {x: 4.128942, y: 4.128942, z: 4.128942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5860131706849385657} m_RootOrder: 1 @@ -7903,6 +8224,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7970,6 +8292,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 5.64, y: 2.19, z: 0} m_LocalScale: {x: 4.128942, y: 4.128942, z: 4.128942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5860131706849385657} m_RootOrder: 0 @@ -7985,6 +8308,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8052,6 +8376,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.417, y: -0.482, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7272545505794177805} m_RootOrder: 2 @@ -8067,6 +8392,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8107,6 +8433,63 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &7380007871185212689 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 738467460505531434} + - component: {fileID: 920502940108507811} + m_Layer: 0 + m_Name: Story + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &738467460505531434 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7380007871185212689} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 3.5, y: 3.5, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2327696661996667804} + - {fileID: 7022477793167285501} + - {fileID: 8086662841372816991} + - {fileID: 5542312890775929452} + m_Father: {fileID: 5813499711186931250} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &920502940108507811 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7380007871185212689} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: c5d1d2b63f1260746b9de9893f507dd8, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &7449113960255827625 GameObject: m_ObjectHideFlags: 0 @@ -8135,6 +8518,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.55, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1308885078639903341} m_RootOrder: 0 @@ -8150,6 +8534,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8192,7 +8577,7 @@ SpriteRenderer: m_SpriteSortPoint: 0 --- !u!95 &727928680141255811 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -8205,10 +8590,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &7731552787514907300 GameObject: m_ObjectHideFlags: 0 @@ -8236,6 +8623,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.048, y: 0.089, z: 0} m_LocalScale: {x: 0.9683405, y: 0.9683405, z: 0.9683405} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7816027614157800504} m_RootOrder: 0 @@ -8251,6 +8639,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8318,6 +8707,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.006, y: 0.005, z: 0} m_LocalScale: {x: 1.2634075, y: 1.0192415, z: 0.05824237} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711658895220} m_RootOrder: 4 @@ -8333,6 +8723,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8400,6 +8791,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 5.5, y: -12.1, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6329961769281807094} m_RootOrder: 2 @@ -8447,6 +8839,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.05, y: -0.06, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1997559998088040406} m_RootOrder: 0 @@ -8462,6 +8855,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8529,6 +8923,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4040823251004521375} m_Father: {fileID: 8395031415588767776} @@ -8536,7 +8931,7 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &7458193735261198617 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -8549,10 +8944,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &8273325390275236914 GameObject: m_ObjectHideFlags: 0 @@ -8580,6 +8977,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.386, y: -0.04599997, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7272545505794177805} m_RootOrder: 0 @@ -8595,6 +8993,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8662,6 +9061,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: 0.7215024, w: 0.69241196} m_LocalPosition: {x: 0.218, y: -0.639, z: 0} m_LocalScale: {x: 0.3244215, y: 0.39976242, z: 0.5679203} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711658895220} m_RootOrder: 1 @@ -8677,6 +9077,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8743,6 +9144,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711186931250} m_RootOrder: 2 @@ -8773,10 +9175,95 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711186931250} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8505445658133806794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5542312890775929452} + - component: {fileID: 990407939518390229} + m_Layer: 0 + m_Name: heart_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5542312890775929452 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8505445658133806794} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.1699996, z: 0} + m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 738467460505531434} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &990407939518390229 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8505445658133806794} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 5976689506463430472, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.58, y: 0.7} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &8671544535564718561 GameObject: m_ObjectHideFlags: 0 @@ -8804,6 +9291,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.5, y: -4, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6329961769281807094} m_RootOrder: 0 @@ -8851,6 +9339,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.051, y: -0.205, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5637196227171860258} m_RootOrder: 1 @@ -8866,6 +9355,7 @@ SpriteRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Breakup.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/Breakup.anim new file mode 100644 index 000000000..c4b7ccc80 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Breakup.anim @@ -0,0 +1,784 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Breakup + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1.211, y: 0.642, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: 1.211, y: 0.642, z: 0} + inSlope: {x: -0, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -1.075, y: 0.691, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: -1.075, y: 0.691, z: 0} + inSlope: {x: -0, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: breakup_0 + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -0.218, y: 0.965, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: -0.218, y: 0.965, z: 0} + inSlope: {x: -0, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: heart_0 + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0.11999999, y: 0.968, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: 0.11999999, y: 0.968, z: 0} + inSlope: {x: -0, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: heart_1 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: heart_1 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: heart_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: breakup_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 4926946401552112880, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 661517522 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1349174340 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 2647104329 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 2647104329 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1349174340 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 661517522 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: + - {fileID: 4926946401552112880, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: heart_1 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: heart_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: breakup_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.211 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1.211 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.642 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.642 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1.075 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: -1.075 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: breakup_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.691 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.691 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: breakup_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: breakup_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.218 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: -0.218 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: heart_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.965 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.965 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: heart_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: heart_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.11999999 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.11999999 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: heart_1 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.968 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.968 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: heart_1 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: heart_1 + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Breakup.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Breakup.anim.meta new file mode 100644 index 000000000..da28a5393 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Breakup.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 797680465f4f5aa4090dd8b10f533fe7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/BreakupExit.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/BreakupExit.anim new file mode 100644 index 000000000..174a162d8 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/BreakupExit.anim @@ -0,0 +1,784 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BreakupExit + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -1.075, y: 0.691, z: 0} + inSlope: {x: -0, y: -0, z: -0} + outSlope: {x: -2.0059996, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: -2.0779998, y: 0.691, z: 0} + inSlope: {x: -2.0059996, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: breakup_0 + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1.035, y: 0.687, z: 0} + inSlope: {x: -0, y: -0, z: -0} + outSlope: {x: 2.042, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: 2.056, y: 0.687, z: 0} + inSlope: {x: 2.042, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -0.218, y: 0.965, z: 0} + inSlope: {x: -0, y: -0, z: -0} + outSlope: {x: -2.006, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: -1.221, y: 0.965, z: 0} + inSlope: {x: -2.006, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: heart_0 + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0.11999999, y: 0.968, z: 0} + inSlope: {x: -0, y: -0, z: -0} + outSlope: {x: 2.042, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: 1.141, y: 0.968, z: 0} + inSlope: {x: 2.042, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: heart_1 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: breakup_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: heart_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: heart_1 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 5985396924984988805, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 2647104329 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1349174340 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 661517522 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 2647104329 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1349174340 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 661517522 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 5985396924984988805, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1.075 + inSlope: -0 + outSlope: -2.0059996 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: -2.0779998 + inSlope: -2.0059996 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: breakup_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.691 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.691 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: breakup_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: breakup_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: breakup_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.035 + inSlope: -0 + outSlope: 2.042 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 2.056 + inSlope: 2.042 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.687 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.687 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.218 + inSlope: -0 + outSlope: -2.006 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: -1.221 + inSlope: -2.006 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: heart_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.965 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.965 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: heart_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: heart_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: heart_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.11999999 + inSlope: -0 + outSlope: 2.042 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1.141 + inSlope: 2.042 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: heart_1 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.968 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.968 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: heart_1 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: heart_1 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: heart_1 + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/BreakupExit.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/BreakupExit.anim.meta new file mode 100644 index 000000000..ac1192e8f --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/BreakupExit.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d271b49b1524d5e49aa8100652eb7839 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0.anim new file mode 100644 index 000000000..ee9b9cb77 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0.anim @@ -0,0 +1,247 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback0 + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1.992, y: 0.68, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: 1.4, y: 0.68, z: 0} + inSlope: {x: -1.184, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: -2108287193192392123, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: -2108287193192392123, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.992 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1.4 + inSlope: -1.184 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.68 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.68 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0.anim.meta new file mode 100644 index 000000000..c823aacb3 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4daeaa34cdb75d2458f116fdad44acd9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0Exit.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0Exit.anim new file mode 100644 index 000000000..8f7c9271f --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0Exit.anim @@ -0,0 +1,247 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback0Exit + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1.258, y: 0.542, z: 0} + inSlope: {x: -1.4679999, y: -0, z: -0} + outSlope: {x: 0, y: 0.17200005, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: 1.258, y: 0.628, z: 0} + inSlope: {x: -0, y: 0.17200005, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: -2108287193192392123, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: -2108287193192392123, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.258 + inSlope: -1.4679999 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1.258 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.542 + inSlope: -0 + outSlope: 0.17200005 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.628 + inSlope: 0.17200005 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0Exit.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0Exit.anim.meta new file mode 100644 index 000000000..3e2e9a9c5 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback0Exit.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a88a522ef4133f44ba92816dca3da83 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1.anim new file mode 100644 index 000000000..d4551ca87 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1.anim @@ -0,0 +1,247 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback1 + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -2.34, y: 0.542, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: -1.47, y: 0.542, z: 0} + inSlope: {x: 1.7399998, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 8573059910350240599, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 8573059910350240599, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -2.34 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: -1.47 + inSlope: 1.7399998 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.542 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.542 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1.anim.meta new file mode 100644 index 000000000..d198061c1 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2da046623a5603f4299e87d41dae21a2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1Exit.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1Exit.anim new file mode 100644 index 000000000..ca1e8e894 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1Exit.anim @@ -0,0 +1,247 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback1Exit + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -1.47, y: 0.542, z: 0} + inSlope: {x: 1.7399998, y: -0, z: -0} + outSlope: {x: 0, y: 0.646, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: -1.47, y: 0.865, z: 0} + inSlope: {x: -0, y: 0.646, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 8573059910350240599, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 8573059910350240599, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1.47 + inSlope: 1.7399998 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: -1.47 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.542 + inSlope: -0 + outSlope: 0.646 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.865 + inSlope: 0.646 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: -2 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1Exit.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1Exit.anim.meta new file mode 100644 index 000000000..24dfb95ec --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback1Exit.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 788c6e5cf38f859428901e9cbdb39ab6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2.anim new file mode 100644 index 000000000..e706389a7 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2.anim @@ -0,0 +1,247 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback2 + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1.992, y: 0.68, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: 1.654, y: 0.68, z: 0} + inSlope: {x: -0.6759999, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 2696792977050154303, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 2696792977050154303, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.992 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1.654 + inSlope: -0.6759999 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.68 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.68 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2.anim.meta new file mode 100644 index 000000000..e4dc07b90 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: edec92ae501ae634b820cdb82f1cf948 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2Exit.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2Exit.anim new file mode 100644 index 000000000..9f646378e --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2Exit.anim @@ -0,0 +1,247 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback2Exit + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1.654, y: 0.68, z: 0} + inSlope: {x: -0.6759999, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: 1.654, y: 0.84, z: 0} + inSlope: {x: -0, y: 0.31999993, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 2696792977050154303, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 2696792977050154303, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.654 + inSlope: -0.6759999 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1.654 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.68 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.84 + inSlope: 0.31999993 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2Exit.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2Exit.anim.meta new file mode 100644 index 000000000..766b42d22 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback2Exit.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7423a62de5b1094489bbb198b96007a2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3.anim new file mode 100644 index 000000000..779a1cc81 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3.anim @@ -0,0 +1,247 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback3 + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -2.34, y: 0.75, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: -1.47, y: 0.75, z: 0} + inSlope: {x: 1.7399998, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 1781146796981568741, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 1781146796981568741, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -2.34 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: -1.47 + inSlope: 1.7399998 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.75 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.75 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3.anim.meta new file mode 100644 index 000000000..386ddbb5a --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a01468c32944bf4eb180639c880229e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3Exit.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3Exit.anim new file mode 100644 index 000000000..74480089a --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3Exit.anim @@ -0,0 +1,247 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback3Exit + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: -1.47, y: 0.75, z: 0} + inSlope: {x: 1.7399998, y: -0, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.5 + value: {x: -1.47, y: 0.865, z: 0} + inSlope: {x: -0, y: 0.23000002, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: flashback_0 + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 1781146796981568741, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + attribute: m_Sprite + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 1579611592 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 304273561 + script: {fileID: 0} + typeID: 212 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1579611592 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 1781146796981568741, guid: c543b7dbb3dbe364c956f857dc4004fb, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1.47 + inSlope: 1.7399998 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: -1.47 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.75 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0.865 + inSlope: 0.23000002 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: flashback_0 + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 5 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 0 + inSlope: -2 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.a + path: flashback_0 + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3Exit.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3Exit.anim.meta new file mode 100644 index 000000000..09113793b --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Flashback3Exit.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe3619e67755718478c02b31702cb054 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/NoCrumbs.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/NoCrumbs.anim index b868528ff..346df7dfd 100644 --- a/Assets/Resources/Sprites/Games/BlueBear/Animations/NoCrumbs.anim +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/NoCrumbs.anim @@ -36,7 +36,7 @@ AnimationClip: m_Level: 0 m_CycleOffset: 0 m_HasAdditiveReferencePose: 0 - m_LoopTime: 1 + m_LoopTime: 0 m_LoopBlend: 0 m_LoopBlendOrientation: 0 m_LoopBlendPositionY: 0 diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/NoStory.anim b/Assets/Resources/Sprites/Games/BlueBear/Animations/NoStory.anim new file mode 100644 index 000000000..4d493d400 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/NoStory.anim @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NoStory + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/NoStory.anim.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/NoStory.anim.meta new file mode 100644 index 000000000..b1ae41ec3 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/NoStory.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a1a73e9c4d8cc0842888955ca7b474ab +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Story.controller b/Assets/Resources/Sprites/Games/BlueBear/Animations/Story.controller new file mode 100644 index 000000000..c09020aff --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Story.controller @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-8436496043841364663 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback2Exit + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 7423a62de5b1094489bbb198b96007a2, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-7860832115615231655 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Breakup + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 797680465f4f5aa4090dd8b10f533fe7, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-7370848405885533553 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback3 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 0a01468c32944bf4eb180639c880229e, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-3053588396012558013 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback3Exit + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: fe3619e67755718478c02b31702cb054, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-2121041480234976651 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback1 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 2da046623a5603f4299e87d41dae21a2, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-458261816836722256 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BreakupExit + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: d271b49b1524d5e49aa8100652eb7839, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-82805575723182232 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: NoStory + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: a1a73e9c4d8cc0842888955ca7b474ab, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Story + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 3614379388069892977} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1102 &2218053776744929353 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback2 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: edec92ae501ae634b820cdb82f1cf948, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &3614379388069892977 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -82805575723182232} + m_Position: {x: 200, y: 0, z: 0} + - serializedVersion: 1 + m_State: {fileID: 5095526346417415248} + m_Position: {x: 235, y: 65, z: 0} + - serializedVersion: 1 + m_State: {fileID: 4126245315160247282} + m_Position: {x: 270, y: 130, z: 0} + - serializedVersion: 1 + m_State: {fileID: -2121041480234976651} + m_Position: {x: 305, y: 195, z: 0} + - serializedVersion: 1 + m_State: {fileID: 5052826165505474210} + m_Position: {x: 340, y: 260, z: 0} + - serializedVersion: 1 + m_State: {fileID: 2218053776744929353} + m_Position: {x: 375, y: 325, z: 0} + - serializedVersion: 1 + m_State: {fileID: -8436496043841364663} + m_Position: {x: 410, y: 390, z: 0} + - serializedVersion: 1 + m_State: {fileID: -7370848405885533553} + m_Position: {x: 445, y: 455, z: 0} + - serializedVersion: 1 + m_State: {fileID: -3053588396012558013} + m_Position: {x: 480, y: 520, z: 0} + - serializedVersion: 1 + m_State: {fileID: -7860832115615231655} + m_Position: {x: 515, y: 585, z: 0} + - serializedVersion: 1 + m_State: {fileID: -458261816836722256} + m_Position: {x: 550, y: 650, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -82805575723182232} +--- !u!1102 &4126245315160247282 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback0Exit + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 9a88a522ef4133f44ba92816dca3da83, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &5052826165505474210 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback1Exit + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 788c6e5cf38f859428901e9cbdb39ab6, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &5095526346417415248 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Flashback0 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 4daeaa34cdb75d2458f116fdad44acd9, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Resources/Sprites/Games/BlueBear/Animations/Story.controller.meta b/Assets/Resources/Sprites/Games/BlueBear/Animations/Story.controller.meta new file mode 100644 index 000000000..d6fcc8d16 --- /dev/null +++ b/Assets/Resources/Sprites/Games/BlueBear/Animations/Story.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5d1d2b63f1260746b9de9893f507dd8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/BlueBear/BlueBear.cs b/Assets/Scripts/Games/BlueBear/BlueBear.cs index 71afcbf05..2420c6e4a 100644 --- a/Assets/Scripts/Games/BlueBear/BlueBear.cs +++ b/Assets/Scripts/Games/BlueBear/BlueBear.cs @@ -17,12 +17,14 @@ namespace HeavenStudio.Games.Loaders { new GameAction("donut", "Donut") { - function = delegate { BlueBear.instance.SpawnTreat(eventCaller.currentEntity.beat, false); }, + preFunction = delegate { BlueBear.TreatSound(eventCaller.currentEntity.beat, false); }, + function = delegate { BlueBear.instance.SpawnTreat(eventCaller.currentEntity.beat, false, eventCaller.currentEntity.beat); }, defaultLength = 3, }, new GameAction("cake", "Cake") { - function = delegate { BlueBear.instance.SpawnTreat(eventCaller.currentEntity.beat, true); }, + preFunction = delegate { BlueBear.TreatSound(eventCaller.currentEntity.beat, true); }, + function = delegate { BlueBear.instance.SpawnTreat(eventCaller.currentEntity.beat, true, eventCaller.currentEntity.beat); }, defaultLength = 4, }, new GameAction("setEmotion", "Set Emotion") @@ -39,6 +41,16 @@ namespace HeavenStudio.Games.Loaders function = delegate { BlueBear.instance.Wind(); }, defaultLength = 0.5f }, + new GameAction("story", "Story") + { + defaultLength = 4, + parameters = new List() + { + new Param("story", BlueBear.StoryType.Date, "Story"), + new Param("enter", true, "Enter") + }, + resizable = true + }, new GameAction("crumb", "Set Crumb Threshold") { function = delegate { var e = eventCaller.currentEntity; BlueBear.instance.SetCrumbThreshold(e["right"], e["left"], e["reset"]); }, @@ -61,6 +73,7 @@ namespace HeavenStudio.Games.Loaders namespace HeavenStudio.Games { + using Jukebox; using Scripts_BlueBear; public class BlueBear : Minigame { @@ -74,6 +87,14 @@ namespace HeavenStudio.Games InstaSad, Sigh } + public enum StoryType + { + Date, + Gift, + Girl, + Eat, + BreakUp + } [Header("Animators")] public Animator headAndBodyAnim; // Head and body public Animator bagsAnim; // Both bags sprite @@ -84,6 +105,7 @@ namespace HeavenStudio.Games [Header("References")] [SerializeField] GameObject leftCrumb; [SerializeField] GameObject rightCrumb; + [SerializeField] private Animator _storyAnim; public GameObject donutBase; public GameObject cakeBase; public GameObject crumbsBase; @@ -99,6 +121,7 @@ namespace HeavenStudio.Games float emotionLength; string emotionAnimName; bool crying; + private List _allStoryEvents = new(); [Header("Curves")] public BezierCurve3D donutCurve; @@ -169,20 +192,63 @@ namespace HeavenStudio.Games void OnDestroy() { - if (Conductor.instance.isPlaying || Conductor.instance.isPaused) return; - rightCrumbAppearThreshold = 15; - leftCrumbAppearThreshold = 30; - eatenTreats = 0; foreach (var evt in scheduledInputs) { evt.Disable(); } + if (Conductor.instance.isPlaying || Conductor.instance.isPaused) return; + rightCrumbAppearThreshold = 15; + leftCrumbAppearThreshold = 30; + eatenTreats = 0; } private void Awake() { instance = this; if (Conductor.instance.isPlaying || Conductor.instance.isPaused) EatTreat(true); + _allStoryEvents = EventCaller.GetAllInGameManagerList("blueBear", new string[] { "story" }); + UpdateStory(); + } + + private int _storyIndex = 0; + + private void UpdateStory() + { + var cond = Conductor.instance; + + if (_storyIndex >= _allStoryEvents.Count) return; + + var currentStory = _allStoryEvents[_storyIndex]; + + if (cond.songPositionInBeatsAsDouble >= currentStory.beat + currentStory.length && _storyIndex + 1 != _allStoryEvents.Count) + { + _storyIndex++; + UpdateStory(); + return; + } + + float normalizedBeat = Mathf.Clamp01(cond.GetPositionFromBeat(currentStory.beat, currentStory.length)); + + bool enter = currentStory["enter"]; + + switch (currentStory["story"]) + { + case (int)StoryType.Date: + _storyAnim.DoNormalizedAnimation(enter ? "Flashback0" : "Flashback0Exit", normalizedBeat); + break; + case (int)StoryType.Gift: + _storyAnim.DoNormalizedAnimation(enter ? "Flashback1" : "Flashback1Exit", normalizedBeat); + break; + case (int)StoryType.Girl: + _storyAnim.DoNormalizedAnimation(enter ? "Flashback2" : "Flashback2Exit", normalizedBeat); + break; + case (int)StoryType.Eat: + _storyAnim.DoNormalizedAnimation(enter ? "Flashback3" : "Flashback3Exit", normalizedBeat); + break; + default: + _storyAnim.DoNormalizedAnimation(enter ? "Breakup" : "BreakupExit", normalizedBeat); + break; + } } private void Update() @@ -208,6 +274,30 @@ namespace HeavenStudio.Games //headAndBodyAnim.DoNormalizedAnimation(emotionAnimName, normalizedBeat); } } + UpdateStory(); + } + + public override void OnPlay(double beat) + { + HandleTreatsOnStart(beat); + } + + public override void OnGameSwitch(double beat) + { + HandleTreatsOnStart(beat); + } + + private void HandleTreatsOnStart(double gameswitchBeat) + { + var allTreatEvents = EventCaller.GetAllInGameManagerList("blueBear", new string[] { "donut", "cake" }); + + foreach (var e in allTreatEvents) + { + if (e.beat + e.length - 1 > gameswitchBeat && e.beat < gameswitchBeat) + { + SpawnTreat(e.beat, e.datamodel == "blueBear/cake", gameswitchBeat); + } + } } public void Wind() @@ -327,7 +417,7 @@ namespace HeavenStudio.Games } } - public void SpawnTreat(double beat, bool isCake) + public void SpawnTreat(double beat, bool isCake, double gameSwitchBeat) { var objectToSpawn = isCake ? cakeBase : donutBase; var newTreat = GameObject.Instantiate(objectToSpawn, foodHolder); @@ -338,9 +428,12 @@ namespace HeavenStudio.Games newTreat.SetActive(true); - SoundByte.PlayOneShotGame(isCake ? "blueBear/cake" : "blueBear/donut"); + if (beat >= gameSwitchBeat) SquashBag(isCake); + } - SquashBag(isCake); + public static void TreatSound(double beat, bool isCake) + { + SoundByte.PlayOneShot(isCake ? "games/blueBear/cake" : "games/blueBear/donut", beat); } public void SquashBag(bool isCake) diff --git a/Assets/Scripts/Games/BlueBear/Treat.cs b/Assets/Scripts/Games/BlueBear/Treat.cs index dcc981892..a4adcf517 100644 --- a/Assets/Scripts/Games/BlueBear/Treat.cs +++ b/Assets/Scripts/Games/BlueBear/Treat.cs @@ -91,8 +91,6 @@ namespace HeavenStudio.Games.Scripts_BlueBear EatFood(); } - private void Miss(PlayerActionEvent caller) { } - private void Out(PlayerActionEvent caller) { } void SpawnCrumbs() From a96879db8b2a6b6fd27b812b92c9e7abac98c533 Mon Sep 17 00:00:00 2001 From: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Wed, 22 Nov 2023 02:07:35 +0100 Subject: [PATCH 4/5] Blue Bear Final Tweaks (#581) * scaled animations + barely + new curves * emotion system revamped * Whiff sound!!! --- Assets/Resources/Games/blueBear.prefab | 485 ++---------------- Assets/Resources/Sfx/games/blueBear/whiff.wav | Bin 0 -> 13600 bytes .../Sfx/games/blueBear/whiff.wav.meta | 22 + Assets/Scripts/Games/BlueBear/BlueBear.cs | 207 +++++--- Assets/Scripts/Games/BlueBear/Treat.cs | 63 ++- Assets/Scripts/Util/AnimationHelpers.cs | 5 + 6 files changed, 244 insertions(+), 538 deletions(-) create mode 100644 Assets/Resources/Sfx/games/blueBear/whiff.wav create mode 100644 Assets/Resources/Sfx/games/blueBear/whiff.wav.meta diff --git a/Assets/Resources/Games/blueBear.prefab b/Assets/Resources/Games/blueBear.prefab index 20ae11370..c51714925 100644 --- a/Assets/Resources/Games/blueBear.prefab +++ b/Assets/Resources/Games/blueBear.prefab @@ -33,62 +33,6 @@ Transform: m_Father: {fileID: 6960831429059082753} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &290228492427971646 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6329961769281807094} - - component: {fileID: 4010886351829930261} - m_Layer: 0 - m_Name: DonutCurve - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6329961769281807094 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 290228492427971646} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 5421637543485503317} - - {fileID: 3691807933677802949} - - {fileID: 3150862288141982050} - m_Father: {fileID: 8746993661413993986} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4010886351829930261 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 290228492427971646} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 066a41e004f415b4eb74d5e61a2aadbe, type: 3} - m_Name: - m_EditorClassIdentifier: - curveColor: {r: 0, g: 1, b: 0, a: 1} - startPointColor: {r: 1, g: 0, b: 0, a: 1} - endPointColor: {r: 0, g: 0, b: 1, a: 1} - sampling: 25 - keyPoints: - - {fileID: 3229741095474240392} - - {fileID: 5844169753873806744} - - {fileID: 8573860549249418625} - normalizedTime: 0.6 --- !u!1 &471349468795412199 GameObject: m_ObjectHideFlags: 0 @@ -5650,39 +5594,6 @@ Transform: m_Father: {fileID: 5813499711186931250} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2117851015664542161 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8746993661413993986} - m_Layer: 0 - m_Name: Curves - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8746993661413993986 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2117851015664542161} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 6329961769281807094} - - {fileID: 3593119893011264580} - m_Father: {fileID: 5813499711186931250} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2128961569128384440 GameObject: m_ObjectHideFlags: 0 @@ -5715,7 +5626,7 @@ Transform: - {fileID: 7577381734816330351} - {fileID: 3145709441744219950} m_Father: {fileID: 5813499711186931250} - m_RootOrder: 7 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &435615509351659063 Animator: @@ -5738,54 +5649,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!1 &2367708131139839123 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6040988351714367052} - - component: {fileID: 4773903569383290023} - m_Layer: 0 - m_Name: Point 2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6040988351714367052 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2367708131139839123} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5, y: -12.3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3593119893011264580} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4773903569383290023 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2367708131139839123} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 5500614478733336177} - handleType: 0 - leftHandleLocalPosition: {x: 0.19151115, y: 6.0157824, z: 0} - rightHandleLocalPosition: {x: -0.19151115, y: -6.0157824, z: -0} --- !u!1 &2385043071357490508 GameObject: m_ObjectHideFlags: 0 @@ -6016,7 +5879,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5813499711186931250} - m_RootOrder: 8 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &8901463518339414129 SpriteRenderer: @@ -6154,54 +6017,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!1 &2972698800083633547 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3691807933677802949} - - component: {fileID: 5844169753873806744} - m_Layer: 0 - m_Name: Point 1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3691807933677802949 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2972698800083633547} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.2, y: 3.9999998, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6329961769281807094} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5844169753873806744 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2972698800083633547} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 4010886351829930261} - handleType: 0 - leftHandleLocalPosition: {x: -0.5, y: -0, z: -0} - rightHandleLocalPosition: {x: 0.5, y: 0, z: 0} --- !u!1 &3272805707290525802 GameObject: m_ObjectHideFlags: 0 @@ -6237,7 +6052,7 @@ Transform: - {fileID: 3912340903949694468} - {fileID: 2724047915994653680} m_Father: {fileID: 5813499711186931250} - m_RootOrder: 6 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &1672690672723614704 Animator: @@ -6260,54 +6075,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!1 &3386726751787149544 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1189969421379328708} - - component: {fileID: 7051398189816610608} - m_Layer: 0 - m_Name: Point 1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1189969421379328708 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3386726751787149544} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.3230858, y: 14.9, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3593119893011264580} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &7051398189816610608 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3386726751787149544} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 5500614478733336177} - handleType: 0 - leftHandleLocalPosition: {x: 0.5, y: 0, z: 0} - rightHandleLocalPosition: {x: -0.5, y: -0, z: -0} --- !u!1 &3577761986294505711 GameObject: m_ObjectHideFlags: 0 @@ -6522,6 +6289,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f7dae340f4a85ba44ab2f8cfd4429430, type: 3} m_Name: m_EditorClassIdentifier: + offset: {x: 0, y: 0, z: 0} isCake: 0 startBeat: 0 --- !u!1 &4021263521913631461 @@ -6781,62 +6549,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!1 &4732423349660717250 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3593119893011264580} - - component: {fileID: 5500614478733336177} - m_Layer: 0 - m_Name: CakeCurve - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3593119893011264580 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4732423349660717250} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 5019461457677901195} - - {fileID: 1189969421379328708} - - {fileID: 6040988351714367052} - m_Father: {fileID: 8746993661413993986} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5500614478733336177 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4732423349660717250} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 066a41e004f415b4eb74d5e61a2aadbe, type: 3} - m_Name: - m_EditorClassIdentifier: - curveColor: {r: 0, g: 1, b: 0, a: 1} - startPointColor: {r: 1, g: 0, b: 0, a: 1} - endPointColor: {r: 0, g: 0, b: 1, a: 1} - sampling: 25 - keyPoints: - - {fileID: 5655647647436070703} - - {fileID: 7051398189816610608} - - {fileID: 4773903569383290023} - normalizedTime: 0.75 --- !u!1 &4851098416927797487 GameObject: m_ObjectHideFlags: 0 @@ -7148,54 +6860,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!1 &5251011089174362824 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5019461457677901195} - - component: {fileID: 5655647647436070703} - m_Layer: 0 - m_Name: Point 0 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5019461457677901195 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5251011089174362824} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: -4, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3593119893011264580} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5655647647436070703 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5251011089174362824} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 5500614478733336177} - handleType: 0 - leftHandleLocalPosition: {x: 1.1635425, y: -13.234132, z: -0} - rightHandleLocalPosition: {x: -1.1635425, y: 13.234132, z: 0} --- !u!1 &5422684780013435000 GameObject: m_ObjectHideFlags: 0 @@ -7535,7 +7199,6 @@ Transform: - {fileID: 716902796083954310} - {fileID: 5011532919799571745} - {fileID: 4768386529512104537} - - {fileID: 8746993661413993986} - {fileID: 5813499711658895220} - {fileID: 1786192994432166401} - {fileID: 5860131706849385657} @@ -7572,8 +7235,43 @@ MonoBehaviour: foodHolder: {fileID: 5011532919799571745} crumbsHolder: {fileID: 4768386529512104537} individualBagHolder: {fileID: 199889193875870520} - donutCurve: {fileID: 4010886351829930261} - cakeCurve: {fileID: 5500614478733336177} + _treatCurves: + - name: Donut + preview: 1 + anchor: {fileID: 0} + positions: + - tag: + pos: {x: 1.496, y: -4.014, z: 0} + target: {fileID: 0} + height: 5 + duration: 2 + useLastRealPos: 0 + values: [] + - tag: + pos: {x: 4.9, y: 0.62, z: 0} + target: {fileID: 0} + height: 0 + duration: 0 + useLastRealPos: 0 + values: [] + - name: Cake + preview: 1 + anchor: {fileID: 0} + positions: + - tag: + pos: {x: -1.498, y: -4.01, z: 0} + target: {fileID: 0} + height: 18 + duration: 3 + useLastRealPos: 0 + values: [] + - tag: + pos: {x: -4.63, y: 0.63, z: 0} + target: {fileID: 0} + height: 0 + duration: 0 + useLastRealPos: 0 + values: [] donutGradient: serializedVersion: 2 key0: {r: 0.92941177, g: 0.69411767, b: 0.23921569, a: 1} @@ -7667,7 +7365,7 @@ Transform: - {fileID: 1065936263090570038} - {fileID: 3325397362945256426} m_Father: {fileID: 5813499711186931250} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &6092762685894244170 Animator: @@ -7787,6 +7485,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f7dae340f4a85ba44ab2f8cfd4429430, type: 3} m_Name: m_EditorClassIdentifier: + offset: {x: 0, y: 0, z: 0} isCake: 1 startBeat: 0 --- !u!1 &5988159118627703275 @@ -8467,7 +8166,7 @@ Transform: - {fileID: 8086662841372816991} - {fileID: 5542312890775929452} m_Father: {fileID: 5813499711186931250} - m_RootOrder: 9 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &920502940108507811 Animator: @@ -8764,54 +8463,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!1 &8021092099866450225 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3150862288141982050} - - component: {fileID: 8573860549249418625} - m_Layer: 0 - m_Name: Point 2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3150862288141982050 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8021092099866450225} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: -12.1, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6329961769281807094} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &8573860549249418625 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8021092099866450225} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 4010886351829930261} - handleType: 0 - leftHandleLocalPosition: {x: -0.45544052, y: 8.296009, z: 0} - rightHandleLocalPosition: {x: 0.45544052, y: -8.296009, z: -0} --- !u!1 &8074909055883004200 GameObject: m_ObjectHideFlags: 0 @@ -9264,54 +8915,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!1 &8671544535564718561 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5421637543485503317} - - component: {fileID: 3229741095474240392} - m_Layer: 0 - m_Name: Point 0 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5421637543485503317 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8671544535564718561} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: -4, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6329961769281807094} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3229741095474240392 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8671544535564718561} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b0cca3244f403c24f819a870f31cdc29, type: 3} - m_Name: - m_EditorClassIdentifier: - curve: {fileID: 4010886351829930261} - handleType: 0 - leftHandleLocalPosition: {x: -0.29808784, y: -4.615514, z: -0} - rightHandleLocalPosition: {x: 0.29808784, y: 4.615514, z: 0} --- !u!1 &9061361398430418040 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Resources/Sfx/games/blueBear/whiff.wav b/Assets/Resources/Sfx/games/blueBear/whiff.wav new file mode 100644 index 0000000000000000000000000000000000000000..3dec6f93babe95c04af9ac0f4dbb7e9d262fc9d4 GIT binary patch literal 13600 zcmXwg1zZ%}_x_#P+1XAyMGyrHKtVwP16#4XySo$hwez*RyRkbl5f#M*k*;OCXQ%G} ze&7G+$9#5oxI1&tx#v9Rxo7S@+pk;a&i;u23~oQD)1;XT!qfl&3>{!4I-vo;ff`I0 zyI`y%0sRjw@Eg1acf)PywG~c*jbJUG!~fwWFcG$eEnria0!N~6OWfH*c3LCc}WkU z-_!Tm0I*W*@+P^Od?tJ+Y%kJD7RX=8N60>ieMQU2AkjNfg2+o)jfF#! z59XKfz4<%bBlb4akiJH3r+n%4Y&N%*o5?<6S~6$p51!jpW6JK{;=bp~c1Ueg%$#AI zVS@36ImQMZGIs{`nL6pY#@vK=g&Nr}1*SYBA0!{B_^6Cl-Biw2+>__XnoBo`zldIm zuSvJbpDSi5;$+iAONp+;cd|+h#QB0K7{lQ(7*D}J@g<%Yt~B>R+Mms0rg{9_n_U_1 zrc|LDxTe|nSld`CO<~4?`rx`2`sb!@jxaikolTE-Pjh)Z6Twfip|q9EM>a(MPFYWr zu34%Ikgu0?lI)Z%P*lnvNUY>V(HPk})eiN3m0p>l`mVa8yd`sr4~f!6zM_AHv3MBw z*}cbh-Sk_3S2ww~wzi30XFO>)s}wYu~Oqa6-+490W+9`4Z-)~ZNOc+ z#u?x`%v{FRqOqhCKM8c8T2Lvp5qGhP$i_GE;gS=I){2c%hh(~#5xGwAwt`a2TsbDQD zWbSZ>@yo)Kf?@n8`Z<#Xb`x8KH}U2CTqd7RXBoa2J5IC`>BRoh>(UyjKsuA01Nzco z)Frwfa1ob9;Z8JizYbI^#a=?(UBEOyUk;m+(#CCVvL> z6mM4l_Fk=Bu52ZHC;cv2LADkof&F|cFXHU9&|`E{t`wKp_1hiDy0B!?d5J}QQn(cN z$9`hti83-y~{Cch%^MYFD zq1h_FoR8<$vnH@sd{bGbcB=L(TdARDvgW!Xhn$1aa3{_RV?;xVw!F&y!n(;+V*G1b zV%_4fQWXDN_+A>NaLIGz;i^I2!GRBgV*)9!j`C?_x*$^!CY&WcDt#|a7KyM}roAVb zPGo}UtL|s6-js~-V;9nyPJ?N^eyVY+;};#yZgMR)^{ETeUoyQk?$iyf99%KCW{~l@ z<%E5!r=?(`s=2=_mTsfTRGgU|oGn!#fQRL?Gw@(cEg7CvNI(a5$Gwy3FMSgl7n_&(E`EIEL+@)ux=Uq_H`>g{ z9R;36>{}+?Sz;h7LjDMUb^ST_XLONFpGGVXUzBtry}Z-B^zH5Xwd&PiqqK=#S~aCq zRLx1%00Pn%k*fLR#ow!ew}0sw+LFTW@_}-d|3Cx%GVPebs{*Z*~^Wb>%85 zLWaiVC(tSKvF=IUha2IWiWRRjH*fN?&*)W>`yBic6AG#(SUQ55IlZFSc6R?0NM*x5A0TIErRvVCUP z^8{tcdRtQqAAX*f`}|{C&h6LA_j$iZxQe`+Hp*ynqRFhdpjPiwbK0h)-cEYcq*1-I z+Lw|{;Y!Tlim#^f54`>Urp?DKKPrnFR)iULdcG2yBu`;SOKF9yNGa`R*>X%rnSQV4@6zY){}!ubq(- zVi(4rZ%(w@-X~s zmxXl22xl$bTOAnMKXg*i=AhGo*~&ZAiLz<=lXDNeZvAY_vtFP6(KV4IHtL+F>vdE{;D$}ciO!T z{F7`qsOuVsrPg%L%2+j2J9F%cm{k>vCQpF9nj{warnvh2?*HQL)q2Nn?up$OdTPT> z*R$uJrj}K*ySfAP*0E#w#Tt8s%QIB-LYaovyh3+ky!WtuS|p9pQm>9^e;Mn8S^ zYG3x#d(NBbkBs@NT^T{OE#9Rc>OQIa)NVI>D7(FERqH*rI_VAmn0hn#N7v%jwU4NU znuCqTCvEJC4_`mI-{faQQrcM~D6)&L=7a6V{bO0XCvV5MC+^#Srpw({FT-DTd38HC zzibR~B{sMJiK#iWPE0foYt(;rA9L?fT@qXS#eHuS7CaG;E!=QjwzGCq>drn#51bot z``5ce#nJYon9ln{+@HR)rX61}c23yT+|i5s9!?z*5l$pkMZZ#9IIw^I-it>MUwiVj z=ymXmw5-#|FCNXkwmsWYr;B*k$A41MwCl4{7Z$CETrqm?(|-Ese;NIsuV2Ieo^ln- zXKGSOx&39)+}sh*M%}BqaWAXYt%8?}i*E@t8qH4J*)lW9t4sSKgGP4l-8*4;$Sw5} z#bmszeoFqx_Y=N^mQ+<9FZ9XjlpX$d`{z;LhWuDokWk4xo{7_g-bSUzjceW`?n1MY z=m+(k{!O$B*)?XB&a3Eb@l4BP(3<~g*jaq4e6&54*r-|&C~9`3)9!vldj4&WYxmnT z%f0?iD0);N`d;#7$G00rjcVhJpLCPU))loZI_?l zZ?S9rd_`Je7P*c~uCaYif3@Ph`RB&+9;K6iY{@;D*Rv>Dchk7tu+P+q*{eJg-lLfy zj*iL-%$Lq!)vgHVC@PY_PmEM}2WG@Xr#$a;DP5OP5HbP^i>^LNzdZiZ&WAC-${Zue zuhKWt8dbU159K=Wk9mA`cI`4(6Y0Fr88J_yxuW;S9ToR#uE8L@r5}|y%Efn{zDveEvxGMBj)wt8yP1$@85XzU+gwi$44*FAk_MRc!n-D)-3aPY;{D8}W5>*%d545=&9_%pPPI zIeql%QRbn8GA^`x(+VU;CoYaZ(_n)(8!vG-(c4N2^YhPX)o9kt1Mjjh28<+HhE=Gd}fUj?ro zKZ<$S=P~_^dZo%cQ}&vgtt<)p8Qv+1h5G@P&((G5# zzLfK+1KKV~&+K%heRjgTP$-yNQ}E?%cILy>yZC+m(~$R;uO0qSHN)r*nq!FNE1R1V z*QJo1kM~&9{YaN?|mCfEszV!NJpW~X7lh2l1R@~FPZvXST z?jzexkq~q)I=%JmjM<}oXFi)ZeNNY@k)z)CoRpLoFwkP8?_1a7KI0Gv- zI=w($)5#@)k3bABffev5Y|6xTj*V#&*62!DU*Ayjnr(I&@hjkaNq%fT z_&V?F$?t;-HcHI% zY|UCH9cnuy-IDHXuSylRY|?Z}14Zy4?|$;zf(M>-)63GdZ|wW~uYP7fe@(ov{7~|F z{kLxgTgtlYdRW_ddf_7Z7{7oBuIWE57qvN@m!# zSYGhs%lq8$+~J?xU;KX9e~X3-rmYoTI*F+TluPHj{c3Ym8q|>p|QEiWqx4Iwcl|CupI>> zW$QFgysN$K+DEFhvKUdGK#x{4eu4QdLX&QfZXbUz#lr7dl`({m2>SIN~_zR6EbxHTGwYkM0Sy z%~R?uvUD>>86FsA);7-h)CJFG_ZgekwAqks>|-Wu!OpQBJ3oT>O)epq2szT4jkhPd0urG&iOhB?fQ(Ji`ymXLn<4opgkDncw`t z$l!|LwZXFjJ-(~GnyX#%yOLn?0=^n{VG0~S48yCQm5wgGUs132q26TdWfeNb)N`sO zwSt}q4vQbDHfvSd>6%FGWv?pl3?H%24eyU$wECpHG1-bQb9ZyRapbs%GA+18TngKs zzT|pgan&Z4QzcR5M{3#|!c2QiJuF(sR%#>Dlsktlkbd(OM*N6*+;muze$l4L9`&yU zF84AjDrB{CiK1HE6kF#WWBOBFQrfR@>W|g=_wq;lEGs-%Oq5P2-CKI5Jh28E0vr@` zkI0wb)L!*T^Q-i$=Re2)TfnU#cc?p@Y_uY}cg(t|lm=-bZ++ydB5907Emo5^@lV`8 zo*bvx*4ucb=1N)B-%mwd{~r1K;cr3l*|OtR5}mH@s(!I?qqVu)#PueYNC{0(KSS{C zFj06?*#3~Sfvp3&`v2p*L#tE_5Us;~_=1k^BV5e-^-+#pxh&QNeF?Rwm2A* zxo)_wneM)>Ko?$@TlZSe8G4x_EVpbgoZqPlOeoioU(fgC`*Mew`<@zisq2Glox7>$ zC^MB$#(2S1GFcKLyC4(F8c3t1+hk5fNA(142k*~5D|~zU1bD4h|5YX_|5ZGZ#fviq zXZWX{hR$e_SLke#B2wBb}@u)QMW& zoAoOQ>>1oX$j?98`@CAM^pc;Ewvcv}evyn9m1CS|ruA{%x*DuzOwFpAs;V)S|5R`l z*;R?P59^#p!rqA9gpCqClm3ydl#f#y)$P3AdDA{S{q6>4sTf z-_Z>AQTg8pj0-(c|9XR>$VQQaA_~KP1^fHCRT9Y*!XN(%9GsXYU2kl(`Lv;|_ILHS z>dmzYb=&J$-G#cN##)=3I?nY3$1$^DmFTW)t@5Vwn>FJ_-xRw-Sk>b&^QgC;3%n zta^(&T^*|atLmy8En6qj3ua&mU>o0%Rd_;NC+srY2g_S?wMlD=H}*6b^g9hPrgY0c zHmk$!zQwG7FK~>!A<-+kYj63q^w$N{4~h=b2L$=O(6&<8$Ya`-vis6UlEadXQmI^_n4vhPn5o>Q z@=~8u{*~Pp=L**fnqVP(GJVzA$U4aQTi3Jtd->Or;NmvL#U)|oDV3Skmvlv@nT~g! zN^UmhNA{JMc^L!W*9!=bi?|bUKSCDqvHre#1A^21-*_q13PrNCK-d5T)6X1~<&<$y zovS*$a&GywviwqgX|wVTm6jTZ{*vXnQ_Zvn(P;IvqvEbQ+54#9t-!^>w}OWT>HUZM zjMr4jKZt)5M==E)%~nud98z;o-Q?;nm1`@0Rs5=4P<^=ehF)#y>|9F!;z#0f!eydp z$t|f^u|qw?dzIfb{|LWL-Yd1cGy+Xa^?hZve27dYeS+qqk>ENzfWAzXy3!q~)=U#` zSYtSAIB7Uw&>7-PNtTVaH;%uqqn>cC4>ka;LsF7xX{O|-I92jiG7Ry`YDs{kQrt^? zm1G2a(0cK5tN>dB5;&d5;kLM+P);h2N^wtc#kz*M%3Lel6R6LgDeS-S6y9DKAd-vk zi8Ccnq)X*Tl-< z)Bn|f)SuLc8uUh$Rpy-O(eQ)uByzTdP$Z~NYB8^UnmScI)i_m#npcfgwvuN_C6du1 zBf((ZU@#{`(Q?^2z;?*2Ho1%sOnc0$EI+Kk@yq2+2XG~@1OA%WD>^KFu28E-Yc6YO z%|>mO_6O?okwPlpCfzC?BV3Bb@GLWnwo_kR8y#J3BQ38?2aI`!_6Ct*vEipN*ivkB zJDYn>uo94svjTr&DbZIb6opHkNx#b)$#J<}c3Re0woRHLy(X=Y#!5>>zQXzVXD}Pq z=jzk_+}oXx9jyJA?UA*&HPM#jSmEkM>%hx3jH5V_|}{m$Fp7Oxw^a*^Bf#grbMm zY*BYs=1Mz~6R|ODjXTUS&HB@P*<>=FH$>Uz~Ks6C>y)I}QpHA3@Udjyrt&V&2$ zuH;FnNh#5e^t$S`+?)3)^HT-<lhH#kzw|f5Dy>3_c)_3Oifw{+J{{HvGqFsZ#jEg6*eTx3?4zI2ADKIB8GD4)a54NU z7y~*1KkxyT@zXepS;}l-A{j0Hk{Ux@p=jy@wT6oFETs=KZ<$5RD5eK1;cMUkEDc|W zXW}{d2*DQOzA%m4D{Mp*;4|=7_!z+;L8@SgpdK+uIGMDO@5u^bHgOBJ-WMDs(uFC) z5d|HI6MOHfIWd#Twiu3Q;9N5t9!I_uKlXbVXLsMw?*5&+y2YfRnnRjWwN%|s)m^z;K3lp}Tt+4c z&)^xbfVo61bJkhgnnvma>a=yo(N5KLgRfa>ALlNjqq$u$4nHE4N& zYad&L{ffiO9Y-JHZi7dHf5?WCOxZMrSvf%Mrw#XB<1@+UxYv92dqs*YS#n)eEp!Ov zH~@YzngY*;I}Tt|)pvUxW7}?~DCqKFa2r zmtOHcdwm1^8wEV_KkehC=_HR5A168j88gFq(#o0Fm}^Z*#x44P>+0$<4CTg$X5RYC zan{|KUc_4XQmmTTAgYr*lH=+PUU@!~e3$#ky`O4}G?Ufqlt<)UrIBKx@H3dl%yiAP zr`i5mMb`Ibvk5c1%!HM;D(yzc1a~NXoxRVSU?#W=9s?IxfyLq*@z;1IenEfwoH8+aA#kiRut{E?Y>tP`@!wpaYb$kGfggf}2+!A&v3ph3B&90*td3t+R zcmh4uZqjXVWxG#Pq$kaj=c!}R&K=GYH2GQVlpd0=S8P+9kuQ=hlAf0|kgOEX5N#KF zq4~Qz+P_}ScjtyM>7G*eAUENbxi7la9y2|Mt>NCnA-J#5M|4}XP(+hfvWLh`_7Oh7 zbq{c0;zC%9y^zZupPD)_aYVxhm()V#pEwx zCGkkG2p@>G0w(?#H;FyY#51>;QS37oux**!%r`Crn?MXA(?xobQ`}4%E$c4(S2|oG z6dxpui8?$F%;MGTUC$GD3m4|x>VS@=t_t@@YKW&NJ)1oPf#96*nTU~WkQ1t7>Tc@c z$`$^R|E^+K} z=DEtp5;ejs#F;AMh`?Xa7{3WV@-}t>vxDwP z51^OP3()6QdKshOcJi6<5=bb`tZ#?t+&f3j2fg#Bsa; zw1i%K7I%Of&kf}g_*~c*vtyI6CEy=00lSA!5eyW(!#m?{>>ySO?!a_jf@~bkTA20B zWBQ!uE@g55aBrYCduGrQW)?GrHEFgP~t=4e&VyD z-K35~(q(Wp}o5w078?CFoi1nun(2xoWr!`;2AaX2E&k zZ{b2hfaagOL^Yuj$gnnGEm#h&!_~Zz^KeNh+ug=SG6U!e&wbBMkJWPlS+WJou-$nT zsKSN`))EJVPsn$o-s1k^3!=f~4`Q5P4*n9^@-95fH|3Y{ANfW64el=6itWm7X8Unh z`4q4RyM+f6^~j^*fzspB9LYc8FwsQeYrGg**`@Rc_X`JO^|E-ISDOM%;U>39VjX7h z=RD;KqgK(S++l13@h^E%93tDJxTX4~_R?S)gZi$zf%>X4Q~s|6l2ybGK?}SF6v7CY z#YggcQ7uR~-xjja0PDd6oS3EQX>>PQLjUV&=xOTt?)isqPD?%4-FjCa_f6`aC)dMM z^Qi@t+w+*MfWPn^#4WVXktOmM=ZO47N63+6i7=n|BWNxdhgX0L{9U#+<4sSX=DA)v z>N$2hb~#tLa@@;2xlA;F3#18hg-yiMrMKn1R4+CAywbc&ya=yk?KzEHlYmxq)`))) zzfmnq3_F`T;@E4QV-7K$GCnenGbzp8%%jY^%zrE*`*3G-cRE!-v7R36YS<5tBDN6Y zgo8wrrSIf36z}9)Wk;o~WSV4#_%E`+Rs0}W&9`Tdd%C*!Iy*VzT>`4g!_v2zrfeZ@s|U7}6VYPHKXm^xXxST2(R$!uX4uz~TT)UIU5IO`JA z3_~})qb|RWt*g=7jYdnPL*VZ0@n>GJ!Tc8(g})@;kS7rPHWkefJrk`GbtDH9!*CC1 z3qGQHqqY1CE`e*v-RFMu$zTyC#bx*qyr;lJTq55R>4m@FYPL@t#N&ZWHz(MWUr5NOl%p#H-9J#&|SLU~+4u5{OA7wL*}9&$W!NS)B}%<+RI(J=;*w;jEK%M{9wKidPm|x0y_Bw$JP^$k9>&8!3EvlHfE!>r z)Un?5W@@OXGs-lJnKSez`U!g+4#s+84Z$b43jD?{<2t+me~I#o*7#{G0rSCrfVZe- zY9hOY>Cbd!G)y@i#=K#kv4LD68_VW1BKA33%&msEuz4uTLPbqT1M!mRBn%-vLXOym za?vR8fv?~iabE00`jTg~$B)jY1DQ~!FO$WF!*2KsVj($7lq^n@luJ%a8cF;m^CZ_L zTgCNAxnLp4<4+gG1Suqn21RPS;PzBW%8h? zxwx75phzN`Nt%RtM1tT9_AhXwO1l<(6YdkLeye0N(CW$-G$)Zv6qCwyW~!KMb|<%; z{{+Wk3-M~)gHIPUK`3$%G|>gkZP$ch!ZhN5prxQ1ABtbcwAcuc4Bv9~*|#+Bnd?z` z{5*P3TV@zLnqA18rfcXR*3B(L)p&P+23vvcLU@p4O|fOzHEagvhsIU{Hh@al7dD3{ zU{A0MWP-t97We`dV~z1Ucw2!>U?m*FH)KmuXT)~rP$pDDlnP#>m7jZ%=T@;TnQG5) zs@nD1X>xQ!v&%8ZG-qd*$92t}OD&`qv(x!rpdPM3eUyvNN*L)e*$3HK*=!jvZ6y69 z4iL2ywi67&M!`&uXDC`lCwKy=ChkA3>F(>)VA_Yh#D&5eU_IWAC>17%{KUh=n0TXT zut+M3BIAgY*bao?t!x%Ogz|Bnc091pu=lXPv43@paY6TSPX^PI+XwTow}Q>WB++-V zQhH4KQd%T!ChI2?%Y3DJ@m^7haFt*exXTS<2789MQ=L8RUbZV%i}jK1uU+nJjBuGp zx#=BT7vRPh3LlA1OPa~Xp^Cs##aG2l#Y=fTc{5p+q)aqWxDQu=2V67e5Vg|P$eHJ; zb~JMCaJF>0T~>E}&t^K1JoFB|*@^^SAp8{8+6|JZ6 z6sii{0w2SM2n8R|owhRccFYgo!4`ZxE-91O=pGd zdUgWWo&UghM-mT$a%7Q1sPy$1dX~D4O~b$ACHM}!6>h{PU>CqHIDk*#9`OTb&=9J>Diiq+QGFD4NimeQ5~=o-TegJ*9j~` z8S6~25iy|zX|oOk_$j=#V4YySU=qsSlLSR*E%+o>1YA%9+w=Fi5u6@bYBypvA)3!D zXzk<^9l`uyh9X3-V$ZTkTnBytBoNbJs4nswzEbc)zzOCN0m5a%{=&yG5V{(% zT77t%_u!>{}yemKHrB+B38k$>B8 zm$>)bSG13k!*_vMP>EuyHFg<$i(SOlVoMPZpF-~qu=}VV3p|VT2!JL0BXkt=1eBsR zrSH59MNKWzE*_!tGSVXqYl3w{SYCk5$ND3b+y)atGgRaK32uht{yX}iO74cpcdKDO zj0OV`RxTrcS7HCVGX+b;>Z3i)OtfkhfFg1#ltUA*gbk3~5vXpuJwi?mf06IQcjKS) z8SpkjOK;!=8?pD;FRU7iz&qg*;2ey>^L?TRf=n{ZwOJ%5GQFt6A%M}fj3%7^F!}y;E!r} z(~%dG5tjC&wRR<>c>p0_%I`zok4LY0{2V@mkL5e_hf(eNK*U*>VIH)gD4GtQ01}JF zx?u4(y;ERnmrh+ zLzU|%5qFJ6w!H`!Aj>v{dHe=6((Pz`Banp#^4<9)bS&k~d`CDF)zjC)@u+6r4omOho7% zh$J6JUh9Ekv>YLO4T??)=8suG4)~66&;TQ`uizc>O&4U@2<$TG1A2hIpdPpaL*aF# z=|a8@;@FX#7Z=8j;j*|wu9lPXgZKvsQ=QO=?!(657VyPJU|X?ASPe#DF02kSp|j_R z$I>trdK!HNvcOSfH7{@uPDae~4B8-r;!T41XB*OQ4jNM#%!Lo(T9naPc_SYN+avrb zpqbb4cHYJR;BWA2`58!?Q^xb}#uA$Tz+C zi3pV^_-p)q{xeVU(Qq)b?q$Se(THshflJ^#dS#=ys6l*j7%V~vNJXd!_ci1tta60qxtm*VpKV3jyU7=e~j}L%~-{t4vp{?xBzyec%6pk z))B}$lM!mtKr1AD6w+`Bvi3MI3=BoOOhoAD4^mJJThK1lQ+Nxp#}0(SZm=2Rvse`U zJzyU=0FH+X(F)vV2nP+3U(_gnd;~AT^T;2ok=&th z653fCkF@BCM!gZWo<_1iK|A7m3bBeA*&q^eXCShAQzT~!lGX|NHX5;Z3Yvo&ASTct z+^GPAu605MlF}4;qB+uS6q3CiVP_$-MLLS%Ca9-CG-tWcFHW+NEzY6*W+TGbGB^*# zZ7*bt!AP6wD8l9=8*D=>J{J&@3lUpjNP0ZtgpSD0?Lbdt@4m?E-O=YLWa}~LH4Wt} zbN@SLqtW+4_GpMk9F8mxksbfQQiQ1jB=vuJ)m@Y~-9=|t;T6R8caS~qp!xbf!g@7Y zV`3o>Nn|GtkRY6i(8#ptP@xtzkO304Y7y2VkS(Loh?*k3nxoHfLo@kz6alZ%te*=%pzJ6Y>7s|!f3gUm_)mfs_#kZqkf$|BnhLc_5yBzT z$cV1}pKTrJ-GHpYApOuIK4Lr;oda~01YIiwa&(UjX^bPTMoUWQ#UlwEx&kGIs3!(` z{ySXAyLQwsjSdRB(d&QjPSisE*Tx_V;AqAq&|UxQTMm>+A0_HtfzJOYS%lgN)IUJI sBDzNhN)FNc|NrlQ=O}6VPxk-X{`dX=efPi5|958z~HbpQYW literal 0 HcmV?d00001 diff --git a/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta b/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta new file mode 100644 index 000000000..1ccc70674 --- /dev/null +++ b/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 2448776798073114dbaa07b1c4a83cd8 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/BlueBear/BlueBear.cs b/Assets/Scripts/Games/BlueBear/BlueBear.cs index 2420c6e4a..db5795390 100644 --- a/Assets/Scripts/Games/BlueBear/BlueBear.cs +++ b/Assets/Scripts/Games/BlueBear/BlueBear.cs @@ -27,13 +27,21 @@ namespace HeavenStudio.Games.Loaders function = delegate { BlueBear.instance.SpawnTreat(eventCaller.currentEntity.beat, true, eventCaller.currentEntity.beat); }, defaultLength = 4, }, - new GameAction("setEmotion", "Set Emotion") + new GameAction("setEmotion", "Emotion") { - function = delegate { var e = eventCaller.currentEntity; BlueBear.instance.SetEmotion(e.beat, e.length, e["type"]); }, - defaultLength = 0.5f, + function = delegate { var e = eventCaller.currentEntity; BlueBear.instance.SetEmotion(e["type"]); }, parameters = new List() { - new Param("type", BlueBear.EmotionType.ClosedEyes, "Type", "Which emotion should the blue bear use?") + new Param("type", BlueBear.EmotionType.ClosedEyes, "Emotion", "Which emotion should the blue bear use?") + } + }, + new GameAction("stretchEmotion", "Long Emotion") + { + defaultLength = 4, + resizable = true, + parameters = new List() + { + new Param("type", BlueBear.EmotionStretchType.LookUp, "Emotion", "Which emotion should the blue bear use?") } }, new GameAction("wind", "Wind") @@ -75,17 +83,21 @@ namespace HeavenStudio.Games { using Jukebox; using Scripts_BlueBear; + public class BlueBear : Minigame { public enum EmotionType { - Neutral, - ClosedEyes, - LookUp, - Smile, - Sad, - InstaSad, - Sigh + Neutral = 0, + ClosedEyes = 1, + Cry = 2, + Sigh = 3 + } + public enum EmotionStretchType + { + LookUp = 0, + Smile = 1, + StartCrying = 2, } public enum StoryType { @@ -117,15 +129,9 @@ namespace HeavenStudio.Games static int rightCrumbAppearThreshold = 15; static int leftCrumbAppearThreshold = 30; static int eatenTreats = 0; - double emotionStartBeat; - float emotionLength; - string emotionAnimName; bool crying; private List _allStoryEvents = new(); - - [Header("Curves")] - public BezierCurve3D donutCurve; - public BezierCurve3D cakeCurve; + [SerializeField] private SuperCurveObject.Path[] _treatCurves; [Header("Gradients")] public Gradient donutGradient; @@ -190,6 +196,31 @@ namespace HeavenStudio.Games new("CtrBearRight", new int[] { IARight, IARight, IARight }, IA_PadRight, IA_TouchRight, IA_BatonRight); + // Editor gizmo to draw trajectories + new void OnDrawGizmos() + { + base.OnDrawGizmos(); + foreach (SuperCurveObject.Path path in _treatCurves) + { + if (path.preview) + { + donutBase.GetComponent().DrawEditorGizmo(path); + } + } + } + + public SuperCurveObject.Path GetPath(string name) + { + foreach (SuperCurveObject.Path path in _treatCurves) + { + if (path.name == name) + { + return path; + } + } + return default(SuperCurveObject.Path); + } + void OnDestroy() { foreach (var evt in scheduledInputs) @@ -254,37 +285,100 @@ namespace HeavenStudio.Games private void Update() { headAndBodyAnim.SetBool("ShouldOpenMouth", foodHolder.childCount != 0); + if (headAndBodyAnim.GetBool("ShouldOpenMouth")) + { + _emotionCancelled = true; + } if (PlayerInput.GetIsAction(InputAction_Left) && !IsExpectingInputNow(InputAction_Left.inputLockCategory)) { + SoundByte.PlayOneShotGame("blueBear/whiff"); Bite(true); } else if (PlayerInput.GetIsAction(InputAction_Right) && !IsExpectingInputNow(InputAction_Right.inputLockCategory)) { + SoundByte.PlayOneShotGame("blueBear/whiff"); Bite(false); } - Conductor cond = Conductor.instance; + UpdateEmotions(); - if (cond.isPlaying && !cond.isPaused) - { - float normalizedBeat = cond.GetPositionFromBeat(emotionStartBeat, emotionLength); - if (normalizedBeat >= 0 && normalizedBeat <= 1f) - { - //headAndBodyAnim.DoNormalizedAnimation(emotionAnimName, normalizedBeat); - } - } UpdateStory(); + headAndBodyAnim.SetScaledAnimationSpeed(); + bagsAnim.SetScaledAnimationSpeed(); + cakeBagAnim.SetScaledAnimationSpeed(); + donutBagAnim.SetScaledAnimationSpeed(); + windAnim.SetScaledAnimationSpeed(); + } + + private bool _emotionCancelled = false; + private int _emotionIndex = 0; + private List _allEmotionsStretch = new(); + private EmotionStretchType _lastEmotion = EmotionStretchType.LookUp; + + private void UpdateEmotions() + { + var cond = Conductor.instance; + if (_allEmotionsStretch.Count == 0 || _emotionIndex >= _allEmotionsStretch.Count) return; + + var beat = cond.songPositionInBeatsAsDouble; + + var e = _allEmotionsStretch[_emotionIndex]; + + if (beat > e.beat + e.length) + { + _emotionIndex++; + _lastEmotion = (EmotionStretchType)_allEmotionsStretch[_emotionIndex - 1]["type"]; + crying = _lastEmotion == EmotionStretchType.StartCrying; + _emotionCancelled = false; + UpdateEmotions(); + return; + } + + if (beat >= e.beat && beat < e.beat + e.length && !_emotionCancelled) + { + _lastEmotion = (EmotionStretchType)e["type"]; + crying = _lastEmotion == EmotionStretchType.StartCrying; + float normalizedBeat = cond.GetPositionFromBeat(e.beat, e.length); + + string animName = (EmotionStretchType)e["type"] switch + { + EmotionStretchType.LookUp => "OpenEyes", + EmotionStretchType.Smile => "Smile", + EmotionStretchType.StartCrying => "Sad", + _ => throw new NotImplementedException(), + }; + headAndBodyAnim.DoNormalizedAnimation(animName, normalizedBeat); + } + } + + private void HandleEmotions(double beat) + { + _allEmotionsStretch = EventCaller.GetAllInGameManagerList("blueBear", new string[] { "stretchEmotion" }); + if (_allEmotionsStretch.Count == 0) return; + UpdateEmotions(); + var allEmosBeforeBeat = EventCaller.GetAllInGameManagerList("blueBear", new string[] { "stretchEmotion" }).FindAll(x => x.beat < beat); + + if ((EmotionStretchType)allEmosBeforeBeat[^1]["type"] == EmotionStretchType.StartCrying) + { + headAndBodyAnim.DoScaledAnimationAsync("CryIdle", 0.5f); + } + else if ((EmotionStretchType)allEmosBeforeBeat[^1]["type"] == EmotionStretchType.Smile) + { + headAndBodyAnim.DoScaledAnimationAsync("SmileIdle", 0.5f); + } } public override void OnPlay(double beat) { HandleTreatsOnStart(beat); + HandleEmotions(beat); } public override void OnGameSwitch(double beat) { HandleTreatsOnStart(beat); + HandleEmotions(beat); } private void HandleTreatsOnStart(double gameswitchBeat) @@ -302,18 +396,19 @@ namespace HeavenStudio.Games public void Wind() { - windAnim.Play("Wind", 0, 0); + windAnim.DoScaledAnimationAsync("Wind", 0.5f); } public void Bite(bool left) { + _emotionCancelled = true; if (crying) { - headAndBodyAnim.Play(left ? "CryBiteL" : "CryBiteR", 0, 0); + headAndBodyAnim.DoScaledAnimationAsync(left ? "CryBiteL" : "CryBiteR", 0.5f); } else { - headAndBodyAnim.Play(left ? "BiteL" : "BiteR", 0, 0); + headAndBodyAnim.DoScaledAnimationAsync(left ? "BiteL" : "BiteR", 0.5f); } } @@ -358,58 +453,31 @@ namespace HeavenStudio.Games if (noDonutSquash && noCakeSquash) { squashing = false; - bagsAnim.Play("Idle", 0, 0); + bagsAnim.DoScaledAnimationAsync("Idle", 0.5f); } } } - public void SetEmotion(double beat, float length, int emotion) + public void SetEmotion(int emotion) { + _emotionCancelled = true; switch (emotion) { case (int)EmotionType.Neutral: - if (emotionAnimName == "Smile") - { - headAndBodyAnim.Play("StopSmile", 0, 0); - emotionAnimName = ""; - } - else - { - headAndBodyAnim.Play("Idle", 0, 0); - } + //check if smiling then play "StopSmile" + headAndBodyAnim.DoScaledAnimationAsync("Idle", 0.5f); crying = false; break; case (int)EmotionType.ClosedEyes: - headAndBodyAnim.Play("EyesClosed", 0, 0); + headAndBodyAnim.DoScaledAnimationAsync("EyesClosed", 0.5f); crying = false; break; - case (int)EmotionType.LookUp: - emotionStartBeat = beat; - emotionLength = length; - emotionAnimName = "OpenEyes"; - headAndBodyAnim.Play(emotionAnimName, 0, 0); - crying = false; - break; - case (int)EmotionType.Smile: - emotionStartBeat = beat; - emotionLength = length; - emotionAnimName = "Smile"; - headAndBodyAnim.Play(emotionAnimName, 0, 0); - crying = false; - break; - case (int)EmotionType.Sad: - emotionStartBeat = beat; - emotionLength = length; - emotionAnimName = "Sad"; - headAndBodyAnim.Play(emotionAnimName, 0, 0); - crying = true; - break; - case (int)EmotionType.InstaSad: - headAndBodyAnim.Play("CryIdle", 0, 0); + case (int)EmotionType.Cry: + headAndBodyAnim.DoScaledAnimationAsync("CryIdle", 0.5f); crying = true; break; case (int)EmotionType.Sigh: - headAndBodyAnim.Play("Sigh", 0, 0); + headAndBodyAnim.DoScaledAnimationAsync("Sigh", 0.5f); crying = false; break; default: @@ -424,7 +492,6 @@ namespace HeavenStudio.Games var treatComp = newTreat.GetComponent(); treatComp.startBeat = beat; - treatComp.curve = isCake ? cakeCurve : donutCurve; newTreat.SetActive(true); @@ -439,17 +506,17 @@ namespace HeavenStudio.Games public void SquashBag(bool isCake) { squashing = true; - bagsAnim.Play("Squashing", 0, 0); + bagsAnim.DoScaledAnimationAsync("Squashing", 0.5f); individualBagHolder.SetActive(true); if (isCake) { - cakeBagAnim.Play("CakeSquash", 0, 0); + cakeBagAnim.DoScaledAnimationAsync("CakeSquash", 0.5f); } else { - donutBagAnim.Play("DonutSquash", 0, 0); + donutBagAnim.DoScaledAnimationAsync("DonutSquash", 0.5f); } } } diff --git a/Assets/Scripts/Games/BlueBear/Treat.cs b/Assets/Scripts/Games/BlueBear/Treat.cs index a4adcf517..5d5e3f872 100644 --- a/Assets/Scripts/Games/BlueBear/Treat.cs +++ b/Assets/Scripts/Games/BlueBear/Treat.cs @@ -8,17 +8,18 @@ using HeavenStudio.Util; namespace HeavenStudio.Games.Scripts_BlueBear { - public class Treat : MonoBehaviour + public class Treat : SuperCurveObject { - const float rotSpeed = 360f; + const float barelyDistX = 1.5f; + const float barelyDistY = -6f; + const float barelyHeight = 4f; + const float rotSpeed = 360f * 3; public bool isCake; public double startBeat; - - bool flying = true; double flyBeats; - [NonSerialized] public BezierCurve3D curve; + private Path path; private BlueBear game; @@ -30,33 +31,34 @@ namespace HeavenStudio.Games.Scripts_BlueBear private void Start() { flyBeats = isCake ? 3f : 2f; + Path pathToCopy = isCake ? game.GetPath("Cake") : game.GetPath("Donut"); + path = new(); + path.positions = new PathPos[2]; + path.positions[0].pos = pathToCopy.positions[0].pos; + path.positions[0].duration = pathToCopy.positions[0].duration; + path.positions[0].height = pathToCopy.positions[0].height; + path.positions[1].pos = pathToCopy.positions[1].pos; game.ScheduleInput(startBeat, flyBeats, isCake ? BlueBear.InputAction_Left : BlueBear.InputAction_Right, Just, Out, Out); + Update(); } private void Update() { - if (flying) + var cond = Conductor.instance; + transform.localPosition = GetPathPositionFromBeat(path, cond.songPositionInBeatsAsDouble, startBeat); + + float flyPos = cond.GetPositionFromBeat(startBeat, flyBeats); + if (flyPos > 2f) { - var cond = Conductor.instance; - - float flyPos = cond.GetPositionFromBeat(startBeat, flyBeats); - flyPos *= isCake ? 0.75f : 0.6f; - transform.position = curve.GetPoint(flyPos); - - if (flyPos > 1f) - { - Destroy(gameObject); - return; - } - - float rot = isCake ? rotSpeed : -rotSpeed; - transform.rotation = Quaternion.Euler(0, 0, transform.rotation.eulerAngles.z + (rot * Time.deltaTime)); + Destroy(gameObject); + return; } + + float rot = isCake ? rotSpeed : -rotSpeed; + transform.rotation = Quaternion.Euler(0, 0, transform.rotation.eulerAngles.z + (rot * Time.deltaTime * cond.pitchedSecPerBeat)); } void EatFood() { - flying = false; - if (isCake) { SoundByte.PlayOneShotGame("blueBear/chompCake"); @@ -71,21 +73,28 @@ namespace HeavenStudio.Games.Scripts_BlueBear SpawnCrumbs(); - GameObject.Destroy(gameObject); + Destroy(gameObject); } private void Just(PlayerActionEvent caller, float state) { if (state >= 1f || state <= -1f) - { //todo: proper near miss feedback + { + SoundByte.PlayOneShot("miss"); if (isCake) { - game.headAndBodyAnim.Play("BiteL", 0, 0); + game.headAndBodyAnim.DoScaledAnimationAsync("BiteL", 0, 0); } else { - game.headAndBodyAnim.Play("BiteR", 0, 0); + game.headAndBodyAnim.DoScaledAnimationAsync("BiteR", 0, 0); } + path.positions[0].pos = transform.localPosition; + path.positions[0].height = barelyHeight; + path.positions[0].duration = 1; + path.positions[1].pos = new Vector3(path.positions[0].pos.x + (isCake ? -barelyDistX : barelyDistX), path.positions[0].pos.y + barelyDistY); + startBeat = Conductor.instance.songPositionInBeatsAsDouble; + Update(); return; } EatFood(); @@ -104,7 +113,7 @@ namespace HeavenStudio.Games.Scripts_BlueBear var newGradient = new ParticleSystem.MinMaxGradient(isCake ? game.cakeGradient : game.donutGradient); newGradient.mode = ParticleSystemGradientMode.RandomColor; main.startColor = newGradient; - ps.Play(); + ps.PlayScaledAsync(1); } } } diff --git a/Assets/Scripts/Util/AnimationHelpers.cs b/Assets/Scripts/Util/AnimationHelpers.cs index 72351355a..093c9329d 100644 --- a/Assets/Scripts/Util/AnimationHelpers.cs +++ b/Assets/Scripts/Util/AnimationHelpers.cs @@ -90,6 +90,11 @@ namespace HeavenStudio.Util anim.speed = (1f / Conductor.instance.pitchedSecPerBeat) * timeScale; } + public static void SetScaledAnimationSpeed(this Animator anim, float timeScale = 0.5f) + { + anim.speed = (1f / Conductor.instance.pitchedSecPerBeat) * timeScale; + } + /// /// Plays animation on animator, at default speed /// this is the least nessecary function here lol From 9c37ec4216691f8650172b1d76f57edc9deabe5e Mon Sep 17 00:00:00 2001 From: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Thu, 23 Nov 2023 17:19:39 +0100 Subject: [PATCH 5/5] Bop Refactor + Tweaks/Fixes (#582) * blue bear tweaks * OnBeatPulse callback added * Fixing humming bug in BM + Metronome fix + Some games conversion to onbeatpulse * clappy trio to drumming practice * rest of the games converted * two minor changes --- Assets/Resources/Sfx/games/blueBear/whiff.wav | Bin 13600 -> 63404 bytes .../Sfx/games/blueBear/whiff.wav.meta | 4 +- Assets/Scripts/Conductor.cs | 15 +-- Assets/Scripts/GameManager.cs | 18 +++ Assets/Scripts/Games/BlueBear/BlueBear.cs | 26 ++-- .../Scripts/Games/BoardMeeting/BMExecutive.cs | 10 +- .../Games/BoardMeeting/BoardMeeting.cs | 14 +- Assets/Scripts/Games/CatchyTune/CatchyTune.cs | 50 +++---- .../Games/CheerReaders/CheerReaders.cs | 10 +- Assets/Scripts/Games/ClappyTrio/ClappyTrio.cs | 9 +- Assets/Scripts/Games/DJSchool/DJSchool.cs | 127 ++++++------------ Assets/Scripts/Games/DogNinja/DogNinja.cs | 34 +++-- Assets/Scripts/Games/DoubleDate/DoubleDate.cs | 9 +- .../DrummingPractice/DrummingPractice.cs | 15 ++- Assets/Scripts/Games/FanClub/FanClub.cs | 42 +++--- .../Scripts/Games/FlipperFlop/FlipperFlop.cs | 11 +- Assets/Scripts/Games/ForkLifter/ForkLifter.cs | 10 -- .../Games/ForkLifter/ForkLifterPlayer.cs | 11 -- Assets/Scripts/Games/KarateMan/KarateMan.cs | 5 + .../Scripts/Games/KarateMan/KarateManJoe.cs | 11 +- Assets/Scripts/Games/Lockstep/Lockstep.cs | 15 ++- .../Scripts/Games/MeatGrinder/MeatGrinder.cs | 5 +- Assets/Scripts/Games/Minigame.cs | 6 + Assets/Scripts/Games/MunchyMonk/MunchyMonk.cs | 28 ++-- .../Scripts/Games/OctopusMachine/Octopus.cs | 6 +- .../Games/OctopusMachine/OctopusMachine.cs | 29 ++-- .../Scripts/Games/RhythmRally/RhythmRally.cs | 19 ++- .../Scripts/Games/RhythmSomen/RhythmSomen.cs | 64 +++++---- Assets/Scripts/Games/Ringside/Ringside.cs | 29 ++-- .../Games/SamuraiSliceNtr/SamuraiSliceNtr.cs | 14 +- Assets/Scripts/Games/SpaceDance/SpaceDance.cs | 23 ++-- Assets/Scripts/Games/TapTrial/TapTrial.cs | 9 +- Assets/Scripts/Games/TheDazzles/TheDazzles.cs | 23 ++-- Assets/Scripts/Games/TossBoys/TossBoys.cs | 16 +-- Assets/Scripts/Games/TossBoys/TossKid.cs | 2 +- Assets/Scripts/Games/TrickClass/TrickClass.cs | 20 +-- 36 files changed, 365 insertions(+), 374 deletions(-) diff --git a/Assets/Resources/Sfx/games/blueBear/whiff.wav b/Assets/Resources/Sfx/games/blueBear/whiff.wav index 3dec6f93babe95c04af9ac0f4dbb7e9d262fc9d4..5c6bbd89958b514f7535e7df677ae9e4f6536b14 100644 GIT binary patch literal 63404 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 literal 13600 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 diff --git a/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta b/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta index 1ccc70674..f297b90b7 100644 --- a/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta +++ b/Assets/Resources/Sfx/games/blueBear/whiff.wav.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2448776798073114dbaa07b1c4a83cd8 +guid: b570a8e729c2e6c47bfe22048bcc0e8c AudioImporter: externalObjects: {} serializedVersion: 6 @@ -18,5 +18,5 @@ AudioImporter: ambisonic: 0 3D: 1 userData: - assetBundleName: + assetBundleName: ctrbear/common assetBundleVariant: diff --git a/Assets/Scripts/Conductor.cs b/Assets/Scripts/Conductor.cs index 0ec70500b..c32069a53 100644 --- a/Assets/Scripts/Conductor.cs +++ b/Assets/Scripts/Conductor.cs @@ -76,12 +76,10 @@ namespace HeavenStudio // Conductor is currently paused, but not fully stopped public bool isPaused; - // Last reported beat based on song position - private double lastReportedBeat = 0f; - // Metronome tick sound enabled public bool metronome = false; Util.Sound metronomeSound; + private int _metronomeTally = 0; // pitch values private float timelinePitch = 1f; @@ -204,6 +202,7 @@ namespace HeavenStudio songPosBeat = GetBeatFromSongPos(time); startBeat = songPosBeat; + _metronomeTally = 0; startTime = DateTime.Now; absTimeAdjust = 0; @@ -363,13 +362,10 @@ namespace HeavenStudio { if (metronome && isPlaying) { - if (ReportBeat(ref lastReportedBeat)) + if (songPositionInBeatsAsDouble >= Math.Ceiling(startBeat) + _metronomeTally) { - metronomeSound = Util.SoundByte.PlayOneShot("metronome", lastReportedBeat); - } - else if (songPositionInBeats < lastReportedBeat) - { - lastReportedBeat = Mathf.Round(songPositionInBeats); + metronomeSound = Util.SoundByte.PlayOneShot("metronome", Math.Ceiling(startBeat) + _metronomeTally); + _metronomeTally++; } } else @@ -382,6 +378,7 @@ namespace HeavenStudio } } + [Obsolete("Conductor.ReportBeat is deprecated. Please use the OnBeatPulse callback instead.")] public bool ReportBeat(ref double lastReportedBeat, double offset = 0, bool shiftBeatToOffset = true) { bool result = songPositionInBeats + (shiftBeatToOffset ? offset : 0f) >= (lastReportedBeat) + 1f; diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index 1496704e5..483430651 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -47,6 +47,7 @@ namespace HeavenStudio [NonSerialized] public bool playOnStart; [NonSerialized] public double startBeat; [NonSerialized] public GameObject currentGameO; + private Minigame _currentMinigame; [NonSerialized] public bool autoplay; [NonSerialized] public bool canInput = true; [NonSerialized] public RiqEntity currentSection, nextSection; @@ -70,6 +71,7 @@ namespace HeavenStudio public event Action onBeatChanged; public event Action onSectionChange; + public event Action onBeatPulse; public int BeatmapEntities() { @@ -493,6 +495,13 @@ namespace HeavenStudio } } + if (cond.songPositionInBeatsAsDouble >= Math.Ceiling(_playStartBeat) + _pulseTally) + { + if (_currentMinigame != null) _currentMinigame.OnBeatPulse(Math.Ceiling(_playStartBeat) + _pulseTally); + onBeatPulse?.Invoke(Math.Ceiling(_playStartBeat) + _pulseTally); + _pulseTally++; + } + float seekTime = 8f; //seek ahead to preload games that have assetbundles SeekAheadAndPreload(cond.songPositionInBeatsAsDouble, seekTime); @@ -580,10 +589,15 @@ namespace HeavenStudio #region Play Events + private double _playStartBeat = 0; + private int _pulseTally = 0; + public void Play(double beat, float delay = 0f) { bool paused = Conductor.instance.isPaused; Debug.Log("Playing at " + beat); + _playStartBeat = beat; + _pulseTally = 0; canInput = true; if (!paused) { @@ -951,6 +965,10 @@ namespace HeavenStudio Destroy(currentGameO); currentGameO = Instantiate(GetGame(game)); + if (currentGameO.TryGetComponent(out var minigame)) + { + _currentMinigame = minigame; + } currentGameO.transform.parent = eventCaller.GamesHolder.transform; currentGameO.name = game; diff --git a/Assets/Scripts/Games/BlueBear/BlueBear.cs b/Assets/Scripts/Games/BlueBear/BlueBear.cs index db5795390..3d908c539 100644 --- a/Assets/Scripts/Games/BlueBear/BlueBear.cs +++ b/Assets/Scripts/Games/BlueBear/BlueBear.cs @@ -126,9 +126,9 @@ namespace HeavenStudio.Games public GameObject individualBagHolder; [Header("Variables")] - static int rightCrumbAppearThreshold = 15; - static int leftCrumbAppearThreshold = 30; - static int eatenTreats = 0; + private int rightCrumbAppearThreshold = 15; + private int leftCrumbAppearThreshold = 30; + private int eatenTreats = 0; bool crying; private List _allStoryEvents = new(); [SerializeField] private SuperCurveObject.Path[] _treatCurves; @@ -236,7 +236,6 @@ namespace HeavenStudio.Games private void Awake() { instance = this; - if (Conductor.instance.isPlaying || Conductor.instance.isPaused) EatTreat(true); _allStoryEvents = EventCaller.GetAllInGameManagerList("blueBear", new string[] { "story" }); UpdateStory(); } @@ -292,12 +291,12 @@ namespace HeavenStudio.Games if (PlayerInput.GetIsAction(InputAction_Left) && !IsExpectingInputNow(InputAction_Left.inputLockCategory)) { - SoundByte.PlayOneShotGame("blueBear/whiff"); + SoundByte.PlayOneShotGame("blueBear/whiff", -1, SoundByte.GetPitchFromSemiTones(UnityEngine.Random.Range(-1, 2), false)); Bite(true); } else if (PlayerInput.GetIsAction(InputAction_Right) && !IsExpectingInputNow(InputAction_Right.inputLockCategory)) { - SoundByte.PlayOneShotGame("blueBear/whiff"); + SoundByte.PlayOneShotGame("blueBear/whiff", -1, SoundByte.GetPitchFromSemiTones(UnityEngine.Random.Range(-1, 2), false)); Bite(false); } @@ -373,12 +372,14 @@ namespace HeavenStudio.Games { HandleTreatsOnStart(beat); HandleEmotions(beat); + HandleCrumbs(beat); } public override void OnGameSwitch(double beat) { HandleTreatsOnStart(beat); HandleEmotions(beat); + HandleCrumbs(beat); } private void HandleTreatsOnStart(double gameswitchBeat) @@ -412,6 +413,15 @@ namespace HeavenStudio.Games } } + private void HandleCrumbs(double beat) + { + var allEventsBeforeBeat = EventCaller.GetAllInGameManagerList("blueBear", new string[] { "crumb" }).FindAll(x => x.beat < beat); + if (allEventsBeforeBeat.Count == 0) return; + var lastCrumbEvent = allEventsBeforeBeat[^1]; + SetCrumbThreshold(lastCrumbEvent["right"], lastCrumbEvent["left"], lastCrumbEvent["reset"]); + EatTreat(false); + } + public void SetCrumbThreshold(int rightThreshold, int leftThreshold, bool reset) { rightCrumbAppearThreshold = rightThreshold; @@ -419,9 +429,9 @@ namespace HeavenStudio.Games if (reset) eatenTreats = 0; } - public void EatTreat(bool onlyCheck = false) + public void EatTreat(bool appendTreats = true) { - if (!onlyCheck) eatenTreats++; + if (appendTreats) eatenTreats++; if (eatenTreats >= leftCrumbAppearThreshold) { leftCrumb.SetActive(true); diff --git a/Assets/Scripts/Games/BoardMeeting/BMExecutive.cs b/Assets/Scripts/Games/BoardMeeting/BMExecutive.cs index 560180489..6e4577760 100644 --- a/Assets/Scripts/Games/BoardMeeting/BMExecutive.cs +++ b/Assets/Scripts/Games/BoardMeeting/BMExecutive.cs @@ -22,6 +22,14 @@ namespace HeavenStudio.Games.Scripts_BoardMeeting game = BoardMeeting.instance; } + private void OnDestroy() + { + if (rollLoop != null) + { + rollLoop.Stop(); + } + } + public void Prepare() { if (spinning) return; @@ -78,7 +86,7 @@ namespace HeavenStudio.Games.Scripts_BoardMeeting public void Bop() { - if (!canBop || spinning || !anim.IsAnimationNotPlaying() || preparing) return; + if (!canBop || spinning || preparing) return; if (smileCounter > 0) { anim.DoScaledAnimationAsync("SmileBop", 0.5f); diff --git a/Assets/Scripts/Games/BoardMeeting/BoardMeeting.cs b/Assets/Scripts/Games/BoardMeeting/BoardMeeting.cs index f5efe82e0..845e6d2c1 100644 --- a/Assets/Scripts/Games/BoardMeeting/BoardMeeting.cs +++ b/Assets/Scripts/Games/BoardMeeting/BoardMeeting.cs @@ -92,8 +92,8 @@ namespace HeavenStudio.Games public BMExecutive firstSpinner; [SerializeField] float shakeIntensity = 0.5f; public bool shouldBop = true; - bool assistantCanBop = true; - bool executivesCanBop = true; + private bool assistantCanBop = true; + private bool executivesCanBop = true; public GameEvent bop = new GameEvent(); [NonSerialized] public Sound chairLoopSound = null; int missCounter = 0; @@ -126,10 +126,6 @@ namespace HeavenStudio.Games if (cond.isPlaying && !cond.isPaused) { - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1) && shouldBop) - { - SingleBop(); - } if (PlayerInput.GetIsAction(InputAction_BasicPressing) && !IsExpectingInputNow(InputAction_BasicPress.inputLockCategory)) { if (executives[executiveCount - 1].spinning) @@ -147,6 +143,12 @@ namespace HeavenStudio.Games } } + public override void OnBeatPulse(double beat) + { + if (!shouldBop) return; + SingleBop(); + } + void SingleBop() { if (assistantCanBop) diff --git a/Assets/Scripts/Games/CatchyTune/CatchyTune.cs b/Assets/Scripts/Games/CatchyTune/CatchyTune.cs index 9fca5387c..5f2503024 100644 --- a/Assets/Scripts/Games/CatchyTune/CatchyTune.cs +++ b/Assets/Scripts/Games/CatchyTune/CatchyTune.cs @@ -208,13 +208,13 @@ namespace HeavenStudio.Games // print("current beat: " + conductor.songPositionInBeatsAsDouble); if (stopCatchLeft > 0 && stopCatchLeft <= cond.songPositionInBeatsAsDouble) { - plalinAnim.Play("idle", 0, 0); + plalinAnim.DoScaledAnimationAsync("idle", 0.5f); stopCatchLeft = 0; } if (stopCatchRight > 0 && stopCatchRight <= cond.songPositionInBeatsAsDouble) { - alalinAnim.Play("idle", 0, 0); + alalinAnim.DoScaledAnimationAsync("idle", 0.5f); stopCatchRight = 0; } @@ -236,19 +236,6 @@ namespace HeavenStudio.Games heartMessage.SetActive(false); } - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (bopLeft && stopCatchLeft == 0) - { - plalinAnim.Play("bop", 0, 0); - } - - if (bopRight && stopCatchRight == 0) - { - alalinAnim.Play("bop", 0, 0); - } - } - if (PlayerInput.GetIsAction(InputAction_Left) && !IsExpectingInputNow(InputAction_Left.inputLockCategory)) { catchWhiff(false); @@ -260,6 +247,19 @@ namespace HeavenStudio.Games } } + public override void OnBeatPulse(double beat) + { + if (bopLeft && stopCatchLeft == 0) + { + plalinAnim.DoScaledAnimationAsync("bop", 0.5f); + } + + if (bopRight && stopCatchRight == 0) + { + alalinAnim.DoScaledAnimationAsync("bop", 0.5f); + } + } + public void DropFruit(double beat, int side, bool smile, bool isPineapple, float endSmile) { var objectToSpawn = isPineapple ? pineappleBase : orangeBase; @@ -344,23 +344,23 @@ namespace HeavenStudio.Games case (int)WhoBops.Plalin: if (stopCatchLeft == 0) { - plalinAnim.Play("bop", 0, 0); + plalinAnim.DoScaledAnimationAsync("bop", 0.5f); } break; case (int)WhoBops.Alalin: if (stopCatchRight == 0) { - alalinAnim.Play("bop", 0, 0); + alalinAnim.DoScaledAnimationAsync("bop", 0.5f); } break; case (int)WhoBops.Both: if (stopCatchRight == 0) { - alalinAnim.Play("bop", 0, 0); + alalinAnim.DoScaledAnimationAsync("bop", 0.5f); } if (stopCatchLeft == 0) { - plalinAnim.Play("bop", 0, 0); + plalinAnim.DoScaledAnimationAsync("bop", 0.5f); } break; default: @@ -374,12 +374,12 @@ namespace HeavenStudio.Games if (side) { - alalinAnim.Play(anim, 0, 0); + alalinAnim.DoScaledAnimationAsync(anim, 0.5f); stopCatchRight = beat + 0.9f; } else { - plalinAnim.Play(anim, 0, 0); + plalinAnim.DoScaledAnimationAsync(anim, 0.5f); stopCatchLeft = beat + 0.9f; } @@ -402,12 +402,12 @@ namespace HeavenStudio.Games if (side) { - alalinAnim.Play("miss" + fruitType, 0, 0); + alalinAnim.DoScaledAnimationAsync("miss" + fruitType, 0.5f); stopCatchRight = beat + 0.7f; } else { - plalinAnim.Play("miss" + fruitType, 0, 0); + plalinAnim.DoScaledAnimationAsync("miss" + fruitType, 0.5f); stopCatchLeft = beat + 0.7f; } } @@ -438,12 +438,12 @@ namespace HeavenStudio.Games if (side) { - alalinAnim.Play("whiff", 0, 0); + alalinAnim.DoScaledAnimationAsync("whiff", 0.5f); stopCatchRight = beat + 0.5f; } else { - plalinAnim.Play("whiff", 0, 0); + plalinAnim.DoScaledAnimationAsync("whiff", 0.5f); stopCatchLeft = beat + 0.5f; } } diff --git a/Assets/Scripts/Games/CheerReaders/CheerReaders.cs b/Assets/Scripts/Games/CheerReaders/CheerReaders.cs index c04ee4bb6..0af61ec29 100644 --- a/Assets/Scripts/Games/CheerReaders/CheerReaders.cs +++ b/Assets/Scripts/Games/CheerReaders/CheerReaders.cs @@ -262,13 +262,15 @@ namespace HeavenStudio.Games UpdateCameraZoom(); } + public override void OnBeatPulse(double beat) + { + if (!shouldBop) return; + BopSingle(); + } + void Update() { var cond = Conductor.instance; - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1) && shouldBop) - { - BopSingle(); - } if (cond.isPlaying && !cond.isPaused) { diff --git a/Assets/Scripts/Games/ClappyTrio/ClappyTrio.cs b/Assets/Scripts/Games/ClappyTrio/ClappyTrio.cs index b78cc9eb3..a3906fec2 100644 --- a/Assets/Scripts/Games/ClappyTrio/ClappyTrio.cs +++ b/Assets/Scripts/Games/ClappyTrio/ClappyTrio.cs @@ -135,13 +135,14 @@ namespace HeavenStudio.Games } } + public override void OnBeatPulse(double beat) + { + if (shouldBop) Bop(Conductor.instance.songPositionInBeatsAsDouble); + } + void Update() { var cond = Conductor.instance; - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (shouldBop) Bop(cond.songPositionInBeatsAsDouble); - } if (cond.isPlaying && !cond.isPaused) { float normalizedBeat = cond.GetPositionFromBeat(signStartBeat, signLength); diff --git a/Assets/Scripts/Games/DJSchool/DJSchool.cs b/Assets/Scripts/Games/DJSchool/DJSchool.cs index fdc3dcb6e..953c5239d 100644 --- a/Assets/Scripts/Games/DJSchool/DJSchool.cs +++ b/Assets/Scripts/Games/DJSchool/DJSchool.cs @@ -165,95 +165,48 @@ namespace HeavenStudio.Games } } + public override void OnBeatPulse(double beat) + { + if (!goBop) return; + if (student.isHolding) + { + student.anim.DoScaledAnimationAsync("HoldBop", 0.5f); + } + else if (!student.swiping && student.anim.IsAnimationNotPlaying()) + { + student.anim.DoScaledAnimationAsync("IdleBop", 0.5f); + } + + var yellowState = djYellowAnim.GetCurrentAnimatorStateInfo(0); + if (yellowState.IsName("Hey")) + { + //PostScratchoFace(); + } + if (!andStop && !djYellowHolding) + { + float normalizedSmileBeat = Conductor.instance.GetPositionFromBeat(smileBeat, 3f); + if (normalizedSmileBeat >= 0 && normalizedSmileBeat <= 1f) djYellowScript.ChangeHeadSprite(DJYellow.DJExpression.Happy); + else if (!djYellowScript.HeadSpriteCheck(DJYellow.DJExpression.CrossEyed)) djYellowScript.ChangeHeadSprite(DJYellow.DJExpression.NeutralLeft); + djYellowScript.Reverse(djYellowScript.HeadSpriteCheck(DJYellow.DJExpression.CrossEyed)); + if (djYellowBopLeft) + { + djYellowAnim.DoScaledAnimationAsync("IdleBop2", 0.5f); + } + else + { + djYellowAnim.DoScaledAnimationAsync("IdleBop", 0.5f); + } + djYellowBopLeft = !djYellowBopLeft; + + } + else if (djYellowHolding) + { + djYellowAnim.DoScaledAnimationAsync("HoldBop", 0.5f); + } + } + private void Update() { - #region old script - //var cond = Conductor.instance; - - //if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - //{ - // if (cond.songPositionInBeatsAsDouble >= bop.startBeat && cond.songPositionInBeatsAsDouble < bop.startBeat + bop.length) - // { - // if (student.anim.IsAnimationNotPlaying()) - // { - // if (student.isHolding) - // { - // student.anim.Play("HoldBop", 0, 0); - // } - // else - // { - // student.anim.Play("IdleBop", 0, 0); - // } - // } - // if (djYellowAnim.IsAnimationNotPlaying()) - // { - // var yellowState = djYellowAnim.GetCurrentAnimatorStateInfo(0); - // if (yellowState.IsName("Hey")) - // { - // PostScratchoFace(); - // } - - // if (djYellowHolding) - // { - // djYellowAnim.Play("HoldBop", 0, 0); - // } - // else - // { - // // todo: split between left and right bop based on beat - // djYellowAnim.Play("IdleBop", 0, 0); - // } - // } - // } - //} - #endregion - - if (Conductor.instance.ReportBeat(ref lastReportedBeat)) - { - if (goBop) - { - if (student.isHolding) - { - student.anim.DoScaledAnimationAsync("HoldBop", 0.5f); - } - else if (!student.swiping && student.anim.IsAnimationNotPlaying()) - { - student.anim.DoScaledAnimationAsync("IdleBop", 0.5f); - } - - var yellowState = djYellowAnim.GetCurrentAnimatorStateInfo(0); - if (yellowState.IsName("Hey")) - { - //PostScratchoFace(); - } - if (!andStop && !djYellowHolding) - { - float normalizedSmileBeat = Conductor.instance.GetPositionFromBeat(smileBeat, 3f); - if (normalizedSmileBeat >= 0 && normalizedSmileBeat <= 1f) djYellowScript.ChangeHeadSprite(DJYellow.DJExpression.Happy); - else if (!djYellowScript.HeadSpriteCheck(DJYellow.DJExpression.CrossEyed)) djYellowScript.ChangeHeadSprite(DJYellow.DJExpression.NeutralLeft); - djYellowScript.Reverse(djYellowScript.HeadSpriteCheck(DJYellow.DJExpression.CrossEyed)); - if (djYellowBopLeft) - { - djYellowAnim.DoScaledAnimationAsync("IdleBop2", 0.5f); - } - else - { - djYellowAnim.DoScaledAnimationAsync("IdleBop", 0.5f); - } - djYellowBopLeft = !djYellowBopLeft; - - } - else if (djYellowHolding) - { - djYellowAnim.DoScaledAnimationAsync("HoldBop", 0.5f); - } - } - - } - else if (Conductor.instance.songPositionInBeatsAsDouble < lastReportedBeat) - { - lastReportedBeat = Math.Round(Conductor.instance.songPositionInBeatsAsDouble); - } - if(PlayerInput.GetIsAction(InputAction_BasicPress) && !IsExpectingInputNow(InputAction_BasicPress) && !student.isHolding) //Start hold miss { student.OnMissHoldForPlayerInput(); diff --git a/Assets/Scripts/Games/DogNinja/DogNinja.cs b/Assets/Scripts/Games/DogNinja/DogNinja.cs index b14379f2b..388d8a62a 100644 --- a/Assets/Scripts/Games/DogNinja/DogNinja.cs +++ b/Assets/Scripts/Games/DogNinja/DogNinja.cs @@ -17,11 +17,12 @@ namespace HeavenStudio.Games.Loaders { new GameAction("Bop", "Bop") { - function = delegate { DogNinja.instance.Bop(eventCaller.currentEntity.beat, eventCaller.currentEntity["toggle"]); }, - defaultLength = 0.5f, + function = delegate { DogNinja.instance.Bop(eventCaller.currentEntity.beat, eventCaller.currentEntity.length, eventCaller.currentEntity["auto"], eventCaller.currentEntity["toggle"]); }, + resizable = true, parameters = new List() { - new Param("toggle", false, "Enable Bopping", "Whether to bop to the beat or not"), + new Param("toggle", true, "Enable Bopping", "Whether to bop to the beat or not"), + new Param("auto", false, "Enable Bopping (Auto)", "Whether to bop to the beat or not automatically"), } }, new GameAction("Prepare", "Prepare") @@ -141,7 +142,7 @@ namespace HeavenStudio.Games private double lastReportedBeat = 0f; private bool birdOnScreen = false; - static bool dontBop = false; + bool dontBop = false; private const string sfxNum = "dogNinja/"; public static DogNinja instance; @@ -213,6 +214,12 @@ namespace HeavenStudio.Games } } + public override void OnBeatPulse(double beat) + { + if (dontBop) return; + DogAnim.DoScaledAnimationAsync("Bop", 0.5f); + } + private void Update() { if (DogAnim.GetBool("needPrepare") && DogAnim.IsAnimationNotPlaying()) @@ -258,17 +265,18 @@ namespace HeavenStudio.Games } } - private void LateUpdate() + public void Bop(double beat, float length, bool auto, bool bop) { - if (Conductor.instance.ReportBeat(ref lastReportedBeat) && DogAnim.IsAnimationNotPlaying() && !dontBop) - { - DogAnim.DoScaledAnimationAsync("Bop", 0.5f); - } - } + dontBop = !auto; + if (!bop) return; + List actions = new(); - public void Bop(double beat, bool bop) - { - dontBop = !bop; + for (int i = 0; i < length; i++) + { + actions.Add(new(beat + i, delegate { DogAnim.DoScaledAnimationAsync("Bop", 0.5f); })); + } + + if (actions.Count > 0) BeatAction.New(this, actions); } public static void QueueObject(double beat, int direction, int typeL, int typeR, bool prepare, bool muteThrow) diff --git a/Assets/Scripts/Games/DoubleDate/DoubleDate.cs b/Assets/Scripts/Games/DoubleDate/DoubleDate.cs index e1f50fb7d..e82f6aa52 100644 --- a/Assets/Scripts/Games/DoubleDate/DoubleDate.cs +++ b/Assets/Scripts/Games/DoubleDate/DoubleDate.cs @@ -138,6 +138,11 @@ namespace HeavenStudio.Games clouds.transform.position = Vector3.left * ((Time.realtimeSinceStartup * cloudSpeed) % cloudDistance); } + public override void OnBeatPulse(double beat) + { + if (shouldBop) SingleBop(); + } + void Update() { var cond = Conductor.instance; @@ -162,10 +167,6 @@ namespace HeavenStudio.Games } queuedBalls.Clear(); } - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1) && shouldBop) - { - SingleBop(); - } } else { diff --git a/Assets/Scripts/Games/DrummingPractice/DrummingPractice.cs b/Assets/Scripts/Games/DrummingPractice/DrummingPractice.cs index 7ae3ddd66..071711e07 100644 --- a/Assets/Scripts/Games/DrummingPractice/DrummingPractice.cs +++ b/Assets/Scripts/Games/DrummingPractice/DrummingPractice.cs @@ -144,16 +144,17 @@ namespace HeavenStudio.Games PersistColor(beat); } + public override void OnBeatPulse(double beat) + { + if (goBop) + { + Bop(); + } + } + private void Update() { var cond = Conductor.instance; - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (goBop) - { - Bop(); - } - } if (isMoving && cond.isPlaying && !cond.isPaused) { diff --git a/Assets/Scripts/Games/FanClub/FanClub.cs b/Assets/Scripts/Games/FanClub/FanClub.cs index 6defe4d95..bdadd7419 100644 --- a/Assets/Scripts/Games/FanClub/FanClub.cs +++ b/Assets/Scripts/Games/FanClub/FanClub.cs @@ -204,8 +204,6 @@ namespace HeavenStudio.Games private List Spectators; //bop-type animations - private GameEvent bop = new GameEvent(); - private GameEvent specBop = new GameEvent(); private GameEvent noBop = new GameEvent(); private GameEvent noResponse = new GameEvent(); private GameEvent noCall = new GameEvent(); @@ -356,30 +354,28 @@ namespace HeavenStudio.Games } } + public override void OnBeatPulse(double beat) + { + var cond = Conductor.instance; + if (goBopIdol) + { + if (!(cond.songPositionInBeatsAsDouble >= noBop.startBeat && cond.songPositionInBeatsAsDouble < noBop.startBeat + noBop.length)) + { + idolAnimator.Play("IdolBeat" + GetPerformanceSuffix(), 0, 0); + Blue.PlayAnimState("Beat"); + Orange.PlayAnimState("Beat"); + } + } + if (goBopSpec) + { + if (!(cond.songPositionInBeatsAsDouble >= noSpecBop.startBeat && cond.songPositionInBeatsAsDouble < noSpecBop.startBeat + noSpecBop.length)) + BopAll(); + } + } + private void Update() { var cond = Conductor.instance; - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (goBopIdol) - { - if (!(cond.songPositionInBeatsAsDouble >= noBop.startBeat && cond.songPositionInBeatsAsDouble < noBop.startBeat + noBop.length)) - { - idolAnimator.Play("IdolBeat" + GetPerformanceSuffix(), 0, 0); - Blue.PlayAnimState("Beat"); - Orange.PlayAnimState("Beat"); - } - } - } - - if (cond.ReportBeat(ref specBop.lastReportedBeat, specBop.startBeat % 1)) - { - if (goBopSpec) - { - if (!(cond.songPositionInBeatsAsDouble >= noSpecBop.startBeat && cond.songPositionInBeatsAsDouble < noSpecBop.startBeat + noSpecBop.length)) - BopAll(); - } - } //idol jumping physics float jumpPos = cond.GetPositionFromBeat(idolJumpStartTime, 1f); diff --git a/Assets/Scripts/Games/FlipperFlop/FlipperFlop.cs b/Assets/Scripts/Games/FlipperFlop/FlipperFlop.cs index e8eb46f47..3af0b6a5a 100644 --- a/Assets/Scripts/Games/FlipperFlop/FlipperFlop.cs +++ b/Assets/Scripts/Games/FlipperFlop/FlipperFlop.cs @@ -230,16 +230,17 @@ namespace HeavenStudio.Games } } + public override void OnBeatPulse(double beat) + { + if (goBopFlip) SingleBop((int)WhoBops.Flippers); + if (goBopTuck) SingleBop((int)WhoBops.CaptainTuck); + } + private void Update() { var cond = Conductor.instance; if (cond.isPlaying && !cond.isPaused) { - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (goBopFlip) SingleBop((int)WhoBops.Flippers); - if (goBopTuck) SingleBop((int)WhoBops.CaptainTuck); - } if (isWalking) { float normalizedBeat = cond.GetPositionFromBeat(walkStartBeat, walkLength); diff --git a/Assets/Scripts/Games/ForkLifter/ForkLifter.cs b/Assets/Scripts/Games/ForkLifter/ForkLifter.cs index 26e904d00..b615576ab 100644 --- a/Assets/Scripts/Games/ForkLifter/ForkLifter.cs +++ b/Assets/Scripts/Games/ForkLifter/ForkLifter.cs @@ -69,16 +69,6 @@ namespace HeavenStudio.Games.Loaders }, resizable = true }, - new GameAction("bop", "Bop") - { - function = delegate { var e = eventCaller.currentEntity; ForkLifter.instance.Bop(e.beat, e.length, e["bop"], e["autoBop"]); }, - parameters = new List() - { - new Param("bop", true, "Keep Bopping", "Should Fork bop for the duration of the block?"), - new Param("autoBop", false, "Keep Bopping (Auto)", "Should Fork bop indefinitely?"), - }, - resizable = true, - }, }, new List() {"rvl", "normal"}, "rvlfork", "en", diff --git a/Assets/Scripts/Games/ForkLifter/ForkLifterPlayer.cs b/Assets/Scripts/Games/ForkLifter/ForkLifterPlayer.cs index d3eed38de..ec2a95818 100644 --- a/Assets/Scripts/Games/ForkLifter/ForkLifterPlayer.cs +++ b/Assets/Scripts/Games/ForkLifter/ForkLifterPlayer.cs @@ -27,7 +27,6 @@ namespace HeavenStudio.Games.Scripts_ForkLifter public int currentEarlyPeasOnFork; public int currentPerfectPeasOnFork; public int currentLatePeasOnFork; - private double lastReportedBeat; private bool isEating = false; @@ -49,16 +48,6 @@ namespace HeavenStudio.Games.Scripts_ForkLifter { Stab(null); } - - if (Conductor.instance.ReportBeat(ref lastReportedBeat) && anim.IsAnimationNotPlaying() && shouldBop) - { - SingleBop(); - } - } - - public void SingleBop() - { - anim.DoScaledAnimationAsync("Player_Bop", 0.5f); } public void Eat() diff --git a/Assets/Scripts/Games/KarateMan/KarateMan.cs b/Assets/Scripts/Games/KarateMan/KarateMan.cs index 06acb99d0..9fca97f8b 100644 --- a/Assets/Scripts/Games/KarateMan/KarateMan.cs +++ b/Assets/Scripts/Games/KarateMan/KarateMan.cs @@ -1166,6 +1166,11 @@ namespace HeavenStudio.Games Wind.windMain = windStrength; } + public override void OnBeatPulse(double beat) + { + Joe.RequestBop(); + } + public void ToggleBop(double beat, float length, bool toggle, bool autoBop) { Joe.bop.length = autoBop ? float.MaxValue : 0; diff --git a/Assets/Scripts/Games/KarateMan/KarateManJoe.cs b/Assets/Scripts/Games/KarateMan/KarateManJoe.cs index 75f163641..dbc543d38 100644 --- a/Assets/Scripts/Games/KarateMan/KarateManJoe.cs +++ b/Assets/Scripts/Games/KarateMan/KarateManJoe.cs @@ -51,6 +51,12 @@ namespace HeavenStudio.Games.Scripts_KarateMan } public bool inNuriLock { get { return (Conductor.instance.songPositionInBeatsAsDouble >= noNuriJabTime && Conductor.instance.songPositionInBeatsAsDouble < noNuriJabTime + 1f); } } + public void RequestBop() + { + var cond = Conductor.instance; + if (cond.songPositionInBeatsAsDouble > bop.startBeat && cond.songPositionInBeatsAsDouble < bop.startBeat + bop.length && cond.songPositionInBeatsAsDouble >= unPrepareTime && !inCombo) Bop(); + } + private void Update() { var cond = Conductor.instance; @@ -95,11 +101,6 @@ namespace HeavenStudio.Games.Scripts_KarateMan anim.Play("Beat", -1, 0); } - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1, false) && cond.songPositionInBeatsAsDouble > bop.startBeat && cond.songPositionInBeatsAsDouble < bop.startBeat + bop.length && cond.songPositionInBeatsAsDouble >= unPrepareTime && !inCombo) - { - Bop(); - } - if (inCombo && shouldComboId == -2) { float missProg = cond.GetPositionFromBeat(lastComboMissTime, 3f); diff --git a/Assets/Scripts/Games/Lockstep/Lockstep.cs b/Assets/Scripts/Games/Lockstep/Lockstep.cs index f425f735f..fad8de7ff 100644 --- a/Assets/Scripts/Games/Lockstep/Lockstep.cs +++ b/Assets/Scripts/Games/Lockstep/Lockstep.cs @@ -336,18 +336,19 @@ namespace HeavenStudio.Games } } + public override void OnBeatPulse(double beat) + { + if (goBop) + { + PlayStepperAnim("Bop", true, 0.5f); + } + } + private void Update() { var cond = Conductor.instance; if (cond.isPlaying && !cond.isPaused) { - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (goBop) - { - PlayStepperAnim("Bop", true, 0.5f); - } - } if (queuedInputs.Count > 0) { foreach (var input in queuedInputs) diff --git a/Assets/Scripts/Games/MeatGrinder/MeatGrinder.cs b/Assets/Scripts/Games/MeatGrinder/MeatGrinder.cs index 934b2eab9..f03d79db6 100644 --- a/Assets/Scripts/Games/MeatGrinder/MeatGrinder.cs +++ b/Assets/Scripts/Games/MeatGrinder/MeatGrinder.cs @@ -157,10 +157,9 @@ namespace HeavenStudio.Games } } - private void LateUpdate() + public override void OnBeatPulse(double beat) { - if (Conductor.instance.ReportBeat(ref lastReportedBeat) - && !BossAnim.IsPlayingAnimationName("BossCall") + if (!BossAnim.IsPlayingAnimationName("BossCall") && !BossAnim.IsPlayingAnimationName("BossSignal") && bossBop) { diff --git a/Assets/Scripts/Games/Minigame.cs b/Assets/Scripts/Games/Minigame.cs index 24cc4c8bf..632bb8810 100644 --- a/Assets/Scripts/Games/Minigame.cs +++ b/Assets/Scripts/Games/Minigame.cs @@ -412,6 +412,12 @@ namespace HeavenStudio.Games } } + // mainly for bopping logic + public virtual void OnBeatPulse(double beat) + { + + } + public static MultiSound PlaySoundSequence(string game, string name, double startBeat, params SoundSequence.SequenceParams[] args) { Minigames.Minigame gameInfo = GameManager.instance.GetGameInfo(game); diff --git a/Assets/Scripts/Games/MunchyMonk/MunchyMonk.cs b/Assets/Scripts/Games/MunchyMonk/MunchyMonk.cs index 699ab5bd2..9de0976dc 100644 --- a/Assets/Scripts/Games/MunchyMonk/MunchyMonk.cs +++ b/Assets/Scripts/Games/MunchyMonk/MunchyMonk.cs @@ -349,24 +349,24 @@ namespace HeavenStudio.Games } } - private void LateUpdate() + public override void OnBeatPulse(double beat) { - if (Conductor.instance.ReportBeat(ref lastReportedBeat)) { - if ((MonkAnim.IsAnimationNotPlaying() || MonkAnim.IsPlayingAnimationName("Bop") || MonkAnim.IsPlayingAnimationName("Idle")) + if ((MonkAnim.IsAnimationNotPlaying() || MonkAnim.IsPlayingAnimationName("Bop") || MonkAnim.IsPlayingAnimationName("Idle")) && monkBop - && !isStaring) - { - MonkAnim.DoScaledAnimationAsync("Bop", 0.5f); - } + && !isStaring) + { + MonkAnim.DoScaledAnimationAsync("Bop", 0.5f); + } - if (!MonkAnim.IsPlayingAnimationName("Blush") || !MonkAnim.IsPlayingAnimationName("Stare")) { - if (growLevel == 4) BrowAnim.DoScaledAnimationAsync("Bop", 0.5f); - if (growLevel > 0) StacheAnim.DoScaledAnimationAsync($"Bop{growLevel}", 0.5f); - } + if (!MonkAnim.IsPlayingAnimationName("Blush") || !MonkAnim.IsPlayingAnimationName("Stare")) + { + if (growLevel == 4) BrowAnim.DoScaledAnimationAsync("Bop", 0.5f); + if (growLevel > 0) StacheAnim.DoScaledAnimationAsync($"Bop{growLevel}", 0.5f); + } - if (CloudMonkey.activeInHierarchy) { - CloudMonkey.GetComponent().DoScaledAnimationAsync("Bop", 0.5f); - } + if (CloudMonkey.activeInHierarchy) //Why activeInHierarchy? - Rasmus + { + CloudMonkey.GetComponent().DoScaledAnimationAsync("Bop", 0.5f); //DONT DO THIS!!! GetComponent is a really expensive operation - Rasmus } } diff --git a/Assets/Scripts/Games/OctopusMachine/Octopus.cs b/Assets/Scripts/Games/OctopusMachine/Octopus.cs index 532a4bfd5..b00e04977 100644 --- a/Assets/Scripts/Games/OctopusMachine/Octopus.cs +++ b/Assets/Scripts/Games/OctopusMachine/Octopus.cs @@ -17,7 +17,6 @@ namespace HeavenStudio.Games.Scripts_OctopusMachine public bool isSqueezed; public bool isPreparing; public double queuePrepare; - public double lastReportedBeat = 0f; double lastSqueezeBeat; bool isActive = true; @@ -65,10 +64,9 @@ namespace HeavenStudio.Games.Scripts_OctopusMachine } } - void LateUpdate() + public void RequestBop() { - if (Conductor.instance.ReportBeat(ref lastReportedBeat) - && !anim.IsPlayingAnimationName("Bop") + if (!anim.IsPlayingAnimationName("Bop") && !anim.IsPlayingAnimationName("Happy") && !anim.IsPlayingAnimationName("Angry") && !anim.IsPlayingAnimationName("Oops") diff --git a/Assets/Scripts/Games/OctopusMachine/OctopusMachine.cs b/Assets/Scripts/Games/OctopusMachine/OctopusMachine.cs index 2127d53d0..18fdf4eeb 100644 --- a/Assets/Scripts/Games/OctopusMachine/OctopusMachine.cs +++ b/Assets/Scripts/Games/OctopusMachine/OctopusMachine.cs @@ -206,7 +206,6 @@ namespace HeavenStudio.Games bool autoAction; double intervalStartBeat; float beatInterval = 1f; - double lastReportedBeat; static List queuedSqueezes = new(); static List queuedReleases = new(); @@ -253,6 +252,23 @@ namespace HeavenStudio.Games } } + public override void OnBeatPulse(double beat) + { + if (bopIterate >= 3) + { + bopStatus = + bopIterate = 0; + autoAction = false; + } + + if (autoAction) bopIterate++; + + foreach (var octo in octopodes) + { + octo.RequestBop(); + } + } + private void Update() { BackgroundColorUpdate(); @@ -261,17 +277,6 @@ namespace HeavenStudio.Games if (Text.text is "Wrong! Try Again!" or "Good!") Text.text = ""; queuePrepare = double.MaxValue; } - - if (Conductor.instance.ReportBeat(ref lastReportedBeat)) - { - if (bopIterate >= 3) { - bopStatus = - bopIterate = 0; - autoAction = false; - } - - if (autoAction) bopIterate++; - } } public void ChangeText(string text, string youText) diff --git a/Assets/Scripts/Games/RhythmRally/RhythmRally.cs b/Assets/Scripts/Games/RhythmRally/RhythmRally.cs index 28607ab70..0b808c355 100644 --- a/Assets/Scripts/Games/RhythmRally/RhythmRally.cs +++ b/Assets/Scripts/Games/RhythmRally/RhythmRally.cs @@ -152,7 +152,6 @@ namespace HeavenStudio.Games public Paddlers paddlers; - public GameEvent bop = new GameEvent(); private bool goBop = true; public static RhythmRally instance; @@ -357,16 +356,6 @@ namespace HeavenStudio.Games } } - - // Paddler bop animation. - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (goBop && !inPose) - { - BopSingle(); - } - } - opponentServing = false; //update camera @@ -375,6 +364,14 @@ namespace HeavenStudio.Games GameCamera.AdditionalFoV = cameraFOV; } + public override void OnBeatPulse(double beat) + { + if (goBop && !inPose) + { + BopSingle(); + } + } + public void Bop(double beat, float length, bool bop, bool bopAuto) { goBop = bopAuto; diff --git a/Assets/Scripts/Games/RhythmSomen/RhythmSomen.cs b/Assets/Scripts/Games/RhythmSomen/RhythmSomen.cs index 71b453230..ec54051b5 100644 --- a/Assets/Scripts/Games/RhythmSomen/RhythmSomen.cs +++ b/Assets/Scripts/Games/RhythmSomen/RhythmSomen.cs @@ -84,22 +84,20 @@ namespace HeavenStudio.Games instance = this; } - // Update is called once per frame + public override void OnBeatPulse(double beat) + { + if (shouldBop) SomenPlayer.DoScaledAnimationAsync("HeadBob", 0.5f); + } + void Update() { - var cond = Conductor.instance; - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1) && shouldBop) - { - SomenPlayer.Play("HeadBob", -1, 0); - } - if (PlayerInput.GetIsAction(InputAction_BasicPress) && !IsExpectingInputNow(InputAction_BasicPress)) { SoundByte.PlayOneShotGame("rhythmSomen/somen_mistake"); - FrontArm.Play("ArmPluck", -1, 0); - backArm.Play("BackArmNothing", 0, 0); + FrontArm.DoScaledAnimationAsync("ArmPluck", 0.5f); + backArm.DoScaledAnimationAsync("BackArmNothing", 0.5f); hasSlurped = false; - EffectSweat.Play("BlobSweating", -1, 0); + EffectSweat.DoScaledAnimationAsync("BlobSweating", 0.5f); ScoreMiss(); } } @@ -108,7 +106,7 @@ namespace HeavenStudio.Games { if (!missed) { - backArm.Play("BackArmLift", 0, 0); + backArm.DoScaledAnimationAsync("BackArmLift", 0.5f); FrontArm.DoScaledAnimationAsync("ArmSlurp", 0.5f); hasSlurped = true; BeatAction.New(instance, new List() @@ -117,8 +115,8 @@ namespace HeavenStudio.Games { if (hasSlurped) { - backArm.Play("BackArmNothing", 0, 0); - FrontArm.Play("ArmNothing", 0, 0); + backArm.DoScaledAnimationAsync("BackArmNothing", 0.5f); + FrontArm.DoScaledAnimationAsync("ArmNothing", 0.5f); } }) }); @@ -136,7 +134,7 @@ namespace HeavenStudio.Games { new BeatAction.Action(beat + i, delegate { - SomenPlayer.Play("HeadBob", -1, 0); + SomenPlayer.DoScaledAnimationAsync("HeadBob", 0.5f); }) }); } @@ -155,9 +153,9 @@ namespace HeavenStudio.Games BeatAction.New(instance, new List() { - new BeatAction.Action(beat, delegate { FarCrane.Play("Drop", -1, 0);}), - new BeatAction.Action(beat + 1.0f, delegate { FarCrane.Play("Open", -1, 0);}), - new BeatAction.Action(beat + 1.5f, delegate { FarCrane.Play("Lift", -1, 0);}), + new BeatAction.Action(beat, delegate { FarCrane.DoScaledAnimationAsync("Drop", 0.5f);}), + new BeatAction.Action(beat + 1.0f, delegate { FarCrane.DoScaledAnimationAsync("Open", 0.5f);}), + new BeatAction.Action(beat + 1.5f, delegate { FarCrane.DoScaledAnimationAsync("Lift", 0.5f);}), }); } @@ -174,9 +172,9 @@ namespace HeavenStudio.Games BeatAction.New(instance, new List() { - new BeatAction.Action(beat, delegate { CloseCrane.Play("DropClose", -1, 0);}), - new BeatAction.Action(beat + 1.0f, delegate { CloseCrane.Play("OpenClose", -1, 0);}), - new BeatAction.Action(beat + 1.5f, delegate { CloseCrane.Play("LiftClose", -1, 0);}), + new BeatAction.Action(beat, delegate { CloseCrane.DoScaledAnimationAsync("DropClose", 0.5f);}), + new BeatAction.Action(beat + 1.0f, delegate { CloseCrane.DoScaledAnimationAsync("OpenClose", 0.5f);}), + new BeatAction.Action(beat + 1.5f, delegate { CloseCrane.DoScaledAnimationAsync("LiftClose", 0.5f);}), }); } @@ -195,12 +193,12 @@ namespace HeavenStudio.Games BeatAction.New(instance, new List() { - new BeatAction.Action(beat, delegate { CloseCrane.Play("DropClose", -1, 0);}), - new BeatAction.Action(beat, delegate { FarCrane.Play("Drop", -1, 0);}), - new BeatAction.Action(beat + 1.0f, delegate { CloseCrane.Play("OpenClose", -1, 0);}), - new BeatAction.Action(beat + 1.0f, delegate { FarCrane.Play("Open", -1, 0);}), - new BeatAction.Action(beat + 1.5f, delegate { CloseCrane.Play("LiftClose", -1, 0);}), - new BeatAction.Action(beat + 1.5f, delegate { FarCrane.Play("Lift", -1, 0);}), + new BeatAction.Action(beat, delegate { CloseCrane.DoScaledAnimationAsync("DropClose", 0.5f);}), + new BeatAction.Action(beat, delegate { FarCrane.DoScaledAnimationAsync("Drop", 0.5f);}), + new BeatAction.Action(beat + 1.0f, delegate { CloseCrane.DoScaledAnimationAsync("OpenClose", 0.5f);}), + new BeatAction.Action(beat + 1.0f, delegate { FarCrane.DoScaledAnimationAsync("Open", 0.5f);}), + new BeatAction.Action(beat + 1.5f, delegate { CloseCrane.DoScaledAnimationAsync("LiftClose", 0.5f);}), + new BeatAction.Action(beat + 1.5f, delegate { FarCrane.DoScaledAnimationAsync("Lift", 0.5f);}), }); } @@ -212,35 +210,35 @@ namespace HeavenStudio.Games BeatAction.New(instance, new List() { - new BeatAction.Action(beat, delegate { EffectExclam.Play("ExclamAppear", -1, 0);}), + new BeatAction.Action(beat, delegate { EffectExclam.DoScaledAnimationAsync("ExclamAppear", 0.5f);}), }); } public void CatchSuccess(PlayerActionEvent caller, float state) { - backArm.Play("BackArmNothing", 0, 0); + backArm.DoScaledAnimationAsync("BackArmNothing", 0, 0); hasSlurped = false; splashEffect.Play(); if (state >= 1f || state <= -1f) { SoundByte.PlayOneShotGame("rhythmSomen/somen_splash"); - FrontArm.Play("ArmPluckNG", -1, 0); - EffectSweat.Play("BlobSweating", -1, 0); + FrontArm.DoScaledAnimationAsync("ArmPluckNG", 0.5f); + EffectSweat.DoScaledAnimationAsync("BlobSweating", 0.5f); missed = true; return; } SoundByte.PlayOneShotGame("rhythmSomen/somen_catch"); SoundByte.PlayOneShotGame("rhythmSomen/somen_catch_old", volume: 0.25f); - FrontArm.Play("ArmPluckOK", -1, 0); - EffectHit.Play("HitAppear", -1, 0); + FrontArm.DoScaledAnimationAsync("ArmPluckOK", 0.5f); + EffectHit.DoScaledAnimationAsync("HitAppear", 0.5f); missed = false; } public void CatchMiss(PlayerActionEvent caller) { missed = true; - EffectShock.Play("ShockAppear", -1, 0); + EffectShock.DoScaledAnimationAsync("ShockAppear", 0.5f); } public void CatchEmpty(PlayerActionEvent caller) diff --git a/Assets/Scripts/Games/Ringside/Ringside.cs b/Assets/Scripts/Games/Ringside/Ringside.cs index d70d7615e..5da8b759b 100644 --- a/Assets/Scripts/Games/Ringside/Ringside.cs +++ b/Assets/Scripts/Games/Ringside/Ringside.cs @@ -218,26 +218,27 @@ namespace HeavenStudio.Games ReporterBlink(); } + public override void OnBeatPulse(double beat) + { + if (shouldBop && canBop) + { + if (UnityEngine.Random.Range(1, 18) == 1) + { + wrestlerAnim.DoScaledAnimationAsync("BopPec"); + } + else + { + wrestlerAnim.DoScaledAnimationAsync("Bop"); + } + } + } + void Update() { var cond = Conductor.instance; if (cond.isPlaying && !cond.isPaused) { - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (shouldBop && canBop) - { - if (UnityEngine.Random.Range(1, 18) == 1) - { - wrestlerAnim.DoScaledAnimationAsync("BopPec"); - } - else - { - wrestlerAnim.DoScaledAnimationAsync("Bop"); - } - } - } if (PlayerInput.GetIsAction(InputAction_BasicPress) && !IsExpectingInputNow(InputAction_BasicPress) && !shouldNotInput) { if ((PlayerInput.CurrentControlStyle != InputController.ControlStyles.Touch) diff --git a/Assets/Scripts/Games/SamuraiSliceNtr/SamuraiSliceNtr.cs b/Assets/Scripts/Games/SamuraiSliceNtr/SamuraiSliceNtr.cs index e50fe1559..13d41c7e2 100644 --- a/Assets/Scripts/Games/SamuraiSliceNtr/SamuraiSliceNtr.cs +++ b/Assets/Scripts/Games/SamuraiSliceNtr/SamuraiSliceNtr.cs @@ -169,16 +169,14 @@ namespace HeavenStudio.Games instance = this; } - // Update is called once per frame + public override void OnBeatPulse(double beat) + { + if (goBopSamurai) player.Bop(); + if (goBopChild) childParent.GetComponent().Bop(); + } + void Update() { - var cond = Conductor.instance; - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (goBopSamurai) player.Bop(); - if (goBopChild) childParent.GetComponent().Bop(); - } - if (PlayerInput.GetIsAction(InputAction_AltDown)) DoStep(); if (PlayerInput.GetIsAction(InputAction_AltUp) && player.isStepping()) diff --git a/Assets/Scripts/Games/SpaceDance/SpaceDance.cs b/Assets/Scripts/Games/SpaceDance/SpaceDance.cs index 978a4d3eb..45668df13 100644 --- a/Assets/Scripts/Games/SpaceDance/SpaceDance.cs +++ b/Assets/Scripts/Games/SpaceDance/SpaceDance.cs @@ -228,6 +228,18 @@ namespace HeavenStudio.Games colorEnd = defaultBGColor; } + public override void OnBeatPulse(double beat) + { + if (shouldBop) + { + Bop(); + } + if (spaceGrampsShouldBop) + { + GrampsBop(); + } + } + // Update is called once per frame void Update() { @@ -237,17 +249,6 @@ namespace HeavenStudio.Games { scroll.NormalizedX -= xBaseSpeed * xScrollMultiplier * Time.deltaTime; scroll.NormalizedY -= yBaseSpeed * yScrollMultiplier * Time.deltaTime; - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (shouldBop) - { - Bop(); - } - if (spaceGrampsShouldBop) - { - GrampsBop(); - } - } if (isShootingStar) { float normalizedBeat = cond.GetPositionFromBeat(shootingStarStartBeat, shootingStarLength); diff --git a/Assets/Scripts/Games/TapTrial/TapTrial.cs b/Assets/Scripts/Games/TapTrial/TapTrial.cs index dd69a99a6..0d43147b5 100644 --- a/Assets/Scripts/Games/TapTrial/TapTrial.cs +++ b/Assets/Scripts/Games/TapTrial/TapTrial.cs @@ -123,15 +123,16 @@ namespace HeavenStudio.Games instance = this; } + public override void OnBeatPulse(double beat) + { + if (shouldBop) SingleBop(); + } + private void Update() { var cond = Conductor.instance; if (cond.isPlaying && !cond.isPaused) { - if (shouldBop && cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - SingleBop(); - } GiraffeUpdate(cond); JumpUpdate(cond); ScrollUpdate(cond); diff --git a/Assets/Scripts/Games/TheDazzles/TheDazzles.cs b/Assets/Scripts/Games/TheDazzles/TheDazzles.cs index b1ef7e9a6..2a35b7e28 100644 --- a/Assets/Scripts/Games/TheDazzles/TheDazzles.cs +++ b/Assets/Scripts/Games/TheDazzles/TheDazzles.cs @@ -257,23 +257,24 @@ namespace HeavenStudio.Games instance = this; } + public override void OnBeatPulse(double beat) + { + if (shouldBop) + { + foreach (var girl in npcGirls) + { + girl.Bop(); + } + player.Bop(); + } + } + void Update() { var cond = Conductor.instance; if (cond.isPlaying && !cond.isPaused) { - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (shouldBop) - { - foreach (var girl in npcGirls) - { - girl.Bop(); - } - player.Bop(); - } - } if (queuedPoses.Count > 0) { foreach (var pose in queuedPoses) diff --git a/Assets/Scripts/Games/TossBoys/TossBoys.cs b/Assets/Scripts/Games/TossBoys/TossBoys.cs index 92ba26420..31c46cd3e 100644 --- a/Assets/Scripts/Games/TossBoys/TossBoys.cs +++ b/Assets/Scripts/Games/TossBoys/TossBoys.cs @@ -262,20 +262,20 @@ namespace HeavenStudio.Games return default(SuperCurveObject.Path); } + public override void OnBeatPulse(double beat) + { + if (shouldBop) + { + SingleBop(); + } + } + private void Update() { var cond = Conductor.instance; BackgroundColorUpdate(); if (cond.isPlaying && !cond.isPaused) { - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1)) - { - if (shouldBop) - { - SingleBop(); - } - } - if (PlayerInput.CurrentControlStyle == InputController.ControlStyles.Touch) { TossKid next = GetCurrentReceiver(); diff --git a/Assets/Scripts/Games/TossBoys/TossKid.cs b/Assets/Scripts/Games/TossBoys/TossKid.cs index deba5d36c..d7d6a4f79 100644 --- a/Assets/Scripts/Games/TossBoys/TossKid.cs +++ b/Assets/Scripts/Games/TossBoys/TossKid.cs @@ -41,7 +41,7 @@ namespace HeavenStudio.Games.Scripts_TossBoys public void Bop() { - if (!anim.IsAnimationNotPlaying() || crouch || preparing) return; + if (crouch || preparing) return; DoAnimationScaledAsync("Bop", 0.5f); } diff --git a/Assets/Scripts/Games/TrickClass/TrickClass.cs b/Assets/Scripts/Games/TrickClass/TrickClass.cs index 4fb962988..31dda092e 100644 --- a/Assets/Scripts/Games/TrickClass/TrickClass.cs +++ b/Assets/Scripts/Games/TrickClass/TrickClass.cs @@ -116,18 +116,20 @@ namespace HeavenStudio.Games instance = this; } + public override void OnBeatPulse(double beat) + { + var cond = Conductor.instance; + if (!goBop) return; + if ((!playerReady) && cond.songPositionInBeatsAsDouble > playerBopStart) + playerAnim.DoScaledAnimationAsync("Bop"); + + if (cond.songPositionInBeatsAsDouble > girlBopStart) + girlAnim.DoScaledAnimationAsync("Bop"); + } + private void Update() { var cond = Conductor.instance; - if (cond.ReportBeat(ref bop.lastReportedBeat, bop.startBeat % 1) && goBop) - { - if ((!playerReady) && cond.songPositionInBeatsAsDouble > playerBopStart) - playerAnim.DoScaledAnimationAsync("Bop"); - - if (cond.songPositionInBeatsAsDouble > girlBopStart) - girlAnim.DoScaledAnimationAsync("Bop"); - } - if (cond.isPlaying && !cond.isPaused) { if (queuedInputs.Count > 0)