Collapsing Properties Update + Animation From Beat Method (#575)

* add entity to collapse function, start on new animation thingy

im gonna use fork lifter to demonstrate DoScaledAnimationFromBeatAsync() cuz it uses animations to cue the peas

also i fixed that months old bug where the fork lifter sfx wasn't playing correctly :/

* animation from beat functional, octo machine converted

this looks fantastic i can't wait to implement this into more things

* better anim function

this is more efficient AND it'll produce more consistent results when starting an animation between tempo changes :D
(it no longer iterates through a list twice)
This commit is contained in:
AstrlJelly
2023-10-27 16:19:11 -04:00
committed by GitHub
parent 7624ea6e88
commit b22de5abdb
28 changed files with 624 additions and 622 deletions

View File

@ -15,7 +15,7 @@ namespace HeavenStudio.Games.Scripts_OctopusMachine
public bool cantBop;
public bool isSqueezed;
public bool isPreparing;
public bool queuePrepare;
public double queuePrepare;
public double lastReportedBeat = 0f;
double lastSqueezeBeat;
bool isActive = true;
@ -25,16 +25,17 @@ namespace HeavenStudio.Games.Scripts_OctopusMachine
void Awake()
{
game = OctopusMachine.instance;
queuePrepare = double.MaxValue;
}
void Update()
{
if (queuePrepare && Conductor.instance.NotStopped()) {
if (queuePrepare <= Conductor.instance.songPositionInBeatsAsDouble && Conductor.instance.NotStopped()) {
if (!(isPreparing || isSqueezed || anim.IsPlayingAnimationName("Release") || anim.IsPlayingAnimationName("Pop")))
{
anim.DoScaledAnimationAsync("Prepare", 0.5f);
anim.DoScaledAnimationFromBeatAsync("Prepare", 0.5f, queuePrepare);
isPreparing = true;
queuePrepare = false;
queuePrepare = double.MaxValue;
}
}
@ -98,15 +99,15 @@ namespace HeavenStudio.Games.Scripts_OctopusMachine
isActive = enable;
}
public void OctoAction(string action)
public void OctoAction(string action)
{
if (action != "Release" || (Conductor.instance.songPositionInBeatsAsDouble - lastSqueezeBeat) > 0.15f) SoundByte.PlayOneShotGame($"octopusMachine/{action.ToLower()}");
if (action == "Squeeze") lastSqueezeBeat = Conductor.instance.songPositionInBeatsAsDouble;
anim.DoScaledAnimationAsync(action, 0.5f);
isSqueezed = (action == "Squeeze");
isPreparing =
queuePrepare = false;
isSqueezed = action == "Squeeze";
isPreparing = false;
queuePrepare = double.MaxValue;
}
public void AnimationColor(int poppingColor)