curves for meat trajectory

This commit is contained in:
minenice55 2023-12-18 23:04:45 -05:00
parent 376bbcdc9e
commit 52d3ca57bd
3 changed files with 281 additions and 37 deletions

View file

@ -31,7 +31,7 @@ Transform:
m_Children: m_Children:
- {fileID: 6108272155782336078} - {fileID: 6108272155782336078}
m_Father: {fileID: 544937591884515791} m_Father: {fileID: 544937591884515791}
m_RootOrder: 4 m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &8490229799144356405 --- !u!95 &8490229799144356405
Animator: Animator:
@ -207,8 +207,13 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f5e4b8f117d68e142ae364804ec945d3, type: 3} m_Script: {fileID: 11500000, guid: f5e4b8f117d68e142ae364804ec945d3, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
startBeat: 0 startPosition: {fileID: 7449121522870419912}
meatType: 0 startPositionALt: {fileID: 4782971190098862075}
hitPosition: {fileID: 2492873460742809070}
missPosition: {fileID: 7533979600266239065}
meatFlyHeight: 4.4
meatFlyHeightAlt: 3.64
showAltCurve: 0
meats: meats:
- {fileID: -9124615959790710355, guid: adbc5b443bdc23e469209cc4f602d17d, type: 3} - {fileID: -9124615959790710355, guid: adbc5b443bdc23e469209cc4f602d17d, type: 3}
- {fileID: -4224877059003839859, guid: adbc5b443bdc23e469209cc4f602d17d, type: 3} - {fileID: -4224877059003839859, guid: adbc5b443bdc23e469209cc4f602d17d, type: 3}
@ -234,6 +239,37 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1 m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0 m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0 m_WriteDefaultValuesOnDisable: 0
--- !u!1 &344575782839395223
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4782971190098862075}
m_Layer: 0
m_Name: MeatStartPosAlt
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4782971190098862075
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 344575782839395223}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -25, y: 4, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 544937591884515791}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &471691632641964123 --- !u!1 &471691632641964123
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -354,7 +390,7 @@ Transform:
- {fileID: 8401927975952338944} - {fileID: 8401927975952338944}
- {fileID: 4149366084315632544} - {fileID: 4149366084315632544}
m_Father: {fileID: 544937591884515791} m_Father: {fileID: 544937591884515791}
m_RootOrder: 2 m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &8591333713642157499 --- !u!95 &8591333713642157499
Animator: Animator:
@ -491,7 +527,7 @@ Transform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1113279616887289042} m_Father: {fileID: 1113279616887289042}
m_RootOrder: 1 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &1495044360246153142 --- !u!212 &1495044360246153142
SpriteRenderer: SpriteRenderer:
@ -1268,6 +1304,9 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 7449121522870419912}
- {fileID: 4782971190098862075}
- {fileID: 2492873460742809070}
- {fileID: 2932735252070355021} - {fileID: 2932735252070355021}
- {fileID: 4773680412020886884} - {fileID: 4773680412020886884}
- {fileID: 7318783844351071632} - {fileID: 7318783844351071632}
@ -1299,6 +1338,37 @@ MonoBehaviour:
cartBeat: 1.7976931348623157e+308 cartBeat: 1.7976931348623157e+308
cartLength: 0 cartLength: 0
cartSpider: 0 cartSpider: 0
--- !u!1 &2707801222513399487
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2492873460742809070}
m_Layer: 0
m_Name: MeatHitPos
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2492873460742809070
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2707801222513399487}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 2.67, y: -0.29, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 544937591884515791}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &3432557403964010436 --- !u!1 &3432557403964010436
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1413,7 +1483,7 @@ Transform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1113279616887289042} m_Father: {fileID: 1113279616887289042}
m_RootOrder: 3 m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &5553728808981219509 --- !u!212 &5553728808981219509
SpriteRenderer: SpriteRenderer:
@ -1805,7 +1875,7 @@ Transform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1113279616887289042} m_Father: {fileID: 1113279616887289042}
m_RootOrder: 0 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &2744829955141411905 --- !u!212 &2744829955141411905
SpriteRenderer: SpriteRenderer:
@ -2003,7 +2073,7 @@ Transform:
- {fileID: 6181761682720629539} - {fileID: 6181761682720629539}
- {fileID: 267186869494077813} - {fileID: 267186869494077813}
m_Father: {fileID: 544937591884515791} m_Father: {fileID: 544937591884515791}
m_RootOrder: 3 m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &8611037719571569512 --- !u!95 &8611037719571569512
Animator: Animator:
@ -2055,6 +2125,7 @@ Transform:
m_LocalScale: {x: 0.71, y: 0.71, z: 0.71} m_LocalScale: {x: 0.71, y: 0.71, z: 0.71}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 7533979600266239065}
- {fileID: 612581083556194476} - {fileID: 612581083556194476}
- {fileID: 5343923506035710304} - {fileID: 5343923506035710304}
- {fileID: 789457928850181753} - {fileID: 789457928850181753}
@ -2213,7 +2284,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 0 m_IsActive: 1
--- !u!4 &2932735252070355021 --- !u!4 &2932735252070355021
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2228,6 +2299,37 @@ Transform:
m_Children: m_Children:
- {fileID: 4035877382569997717} - {fileID: 4035877382569997717}
m_Father: {fileID: 544937591884515791} m_Father: {fileID: 544937591884515791}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5713667132269415626
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7533979600266239065}
m_Layer: 0
m_Name: MeatMissPos
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7533979600266239065
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5713667132269415626}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -1.7, y: -0.11, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1113279616887289042}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5905250936621372194 --- !u!1 &5905250936621372194
@ -2260,7 +2362,7 @@ Transform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1113279616887289042} m_Father: {fileID: 1113279616887289042}
m_RootOrder: 2 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &8851705103136115615 --- !u!212 &8851705103136115615
SpriteRenderer: SpriteRenderer:
@ -2541,7 +2643,7 @@ Transform:
- {fileID: 3600842165078314753} - {fileID: 3600842165078314753}
- {fileID: 4316543350587402345} - {fileID: 4316543350587402345}
m_Father: {fileID: 544937591884515791} m_Father: {fileID: 544937591884515791}
m_RootOrder: 1 m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6809729426963480446 --- !u!1 &6809729426963480446
GameObject: GameObject:
@ -3083,6 +3185,37 @@ SpriteRenderer:
m_WasSpriteAssigned: 1 m_WasSpriteAssigned: 1
m_MaskInteraction: 0 m_MaskInteraction: 0
m_SpriteSortPoint: 0 m_SpriteSortPoint: 0
--- !u!1 &8541881261740536524
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7449121522870419912}
m_Layer: 0
m_Name: MeatStartPos
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7449121522870419912
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8541881261740536524}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -16, y: -4, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 544937591884515791}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8600032524474789486 --- !u!1 &8600032524474789486
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View file

@ -9,8 +9,16 @@ namespace HeavenStudio.Games.Scripts_MeatGrinder
{ {
public class Meat : MonoBehaviour public class Meat : MonoBehaviour
{ {
public double startBeat; [SerializeField] Transform startPosition;
public MeatType meatType; [SerializeField] Transform startPositionALt;
[SerializeField] Transform hitPosition;
[SerializeField] Transform missPosition;
[SerializeField] float meatFlyHeight = 1f;
[SerializeField] float meatFlyHeightAlt = 1f;
[SerializeField] bool showAltCurve;
[NonSerialized] public double startBeat;
[NonSerialized] public MeatType meatType;
private string meatTypeStr; private string meatTypeStr;
private bool isHit = false; private bool isHit = false;
@ -52,15 +60,41 @@ namespace HeavenStudio.Games.Scripts_MeatGrinder
private void Update() private void Update()
{ {
Conductor cond = Conductor.instance;
// if (Input.GetKey(KeyCode.G)) { // Insane. // if (Input.GetKey(KeyCode.G)) { // Insane.
// anim.enabled = true; // anim.enabled = true;
// } // }
Debug.Log(sr.sprite.name); Debug.Log(sr.sprite.name);
if (!isHit) { if (!isHit)
float normalizedBeat = Conductor.instance.GetPositionFromBeat(startBeat, 1); {
float newX = Mathf.LerpUnclamped(-14f, 1.7f, normalizedBeat); double startTime = cond.GetSongPosFromBeat(startBeat);
Debug.Log(newX); double hitTime = cond.GetSongPosFromBeat(startBeat + 1);
transform.position = new Vector3(newX, -1.2f); double missTime = cond.GetSongPosFromBeat(startBeat + 1) + MeatGrinder.ngLateTime;
double currentTime = cond.songPositionAsDouble;
Vector3 lastPos = transform.position;
Vector3 startPos = meatType == MeatType.LightMeat ? startPositionALt.position : startPosition.position;
float hitAlongMissRatio = Vector3.Dot((startPos - missPosition.position), (startPos - hitPosition.position));
hitAlongMissRatio /= Vector3.Dot((startPos - missPosition.position), (startPos - missPosition.position));
Vector3 hitOnMissPos = startPos + (missPosition.position - startPos) * hitAlongMissRatio;
float totalProg = (float)((currentTime - startTime) / (missTime - startTime));
if (currentTime >= hitTime)
{
float prog = (float)((currentTime - hitTime) / (missTime - hitTime));
transform.position = Vector3.Lerp(hitOnMissPos, missPosition.position, prog);
}
else
{
float prog = (float)((currentTime - startTime) / (hitTime - startTime));
transform.position = Vector3.Lerp(startPos, hitOnMissPos, prog);
}
float yMul = totalProg * 2f - 1f;
float yWeight = -(yMul * yMul) + 1f;
transform.position += Vector3.up * (meatType == MeatType.LightMeat ? meatFlyHeightAlt : meatFlyHeight) * yWeight;
// point towards the next position
transform.right = transform.position - lastPos;
// anim.DoNormalizedAnimation("MeatThrown", normalizedBeat); // anim.DoNormalizedAnimation("MeatThrown", normalizedBeat);
} }
@ -72,7 +106,7 @@ namespace HeavenStudio.Games.Scripts_MeatGrinder
isHit = true; isHit = true;
game.TackAnim.SetBool("tackMeated", false); game.TackAnim.SetBool("tackMeated", false);
anim.DoScaledAnimationAsync(meatTypeStr + "Hit", 0.5f); anim.DoScaledAnimationAsync(meatTypeStr + "Hit", 0.5f);
bool isBarely = state is >= 1f or <= -1f; bool isBarely = state is >= 1f or <= -1f;
game.bossAnnoyed = isBarely; game.bossAnnoyed = isBarely;
@ -95,12 +129,72 @@ namespace HeavenStudio.Games.Scripts_MeatGrinder
private void Nothing(PlayerActionEvent caller) { } private void Nothing(PlayerActionEvent caller) { }
public void SetSprite() { public void SetSprite()
{
sr.sprite = meats[(int)meatType]; sr.sprite = meats[(int)meatType];
} }
public void DestroySelf() { public void DestroySelf()
{
Destroy(gameObject); Destroy(gameObject);
} }
/// <summary>
/// Callback to draw gizmos that are pickable and always drawn.
/// </summary>
private void OnDrawGizmos()
{
// draw a line showing the direction from the miss position to the hit position
if (startPosition == null) return;
if (startPositionALt == null) return;
Vector3 startPos = showAltCurve ? startPositionALt.position : startPosition.position;
if (hitPosition != null && missPosition != null && startPos != null)
{
Gizmos.color = Color.red;
Gizmos.DrawLine(startPos, hitPosition.position);
Gizmos.color = Color.blue;
Gizmos.DrawLine(startPos, missPosition.position);
Gizmos.color = Color.green;
Vector3 direction = (hitPosition.position - missPosition.position).normalized;
Gizmos.DrawRay(missPosition.position, direction * 10);
// project start position -> hit position onto start position -> miss position
float hitAlongMissRatio = Vector3.Dot((startPos - missPosition.position), (startPos - hitPosition.position));
hitAlongMissRatio /= Vector3.Dot((startPos - missPosition.position), (startPos - missPosition.position));
Gizmos.color = Color.yellow;
Gizmos.DrawRay(startPos, (missPosition.position - startPos) * hitAlongMissRatio);
DrawCurveGizmo(startPos, missPosition.position, Vector3.up * (showAltCurve ? meatFlyHeightAlt : meatFlyHeight), Color.yellow, 0.1f);
}
}
void DrawCurveGizmo(Vector3 start, Vector3 end, Vector3 height, Color colour, float interval)
{
Gizmos.color = colour;
Vector3 lastPos = start;
Vector3 pos;
float t, yMul, yWeight;
for (float i = 0; i < 1; i += interval)
{
t = i;
pos = Vector3.Lerp(start, end, t);
yMul = t * 2f - 1f;
yWeight = -(yMul * yMul) + 1f;
pos += height * yWeight;
Gizmos.DrawLine(lastPos, pos);
lastPos = pos;
}
t = 1f;
pos = end;
yMul = t * 2f - 1f;
yWeight = -(yMul * yMul) + 1f;
pos += height * yWeight;
Gizmos.DrawLine(lastPos, pos);
}
} }
} }

View file

@ -83,9 +83,9 @@ namespace HeavenStudio.Games.Loaders
MeatGrinder.instance.CartGuy(e.beat, e.length, e["spider"]); MeatGrinder.instance.CartGuy(e.beat, e.length, e["spider"]);
}, },
resizable = true, resizable = true,
defaultLength = 8, defaultLength = 16,
parameters = new List<Param>() { parameters = new List<Param>() {
new Param("spider", false, "Spider", "Put a spider in the box?"), new Param("spider", false, "On Phone", "Put a spider in the box?"),
} }
}, },
} }
@ -151,13 +151,14 @@ namespace HeavenStudio.Games
} }
public static PlayerInput.InputAction InputAction_Press = public static PlayerInput.InputAction InputAction_Press =
new("PcoMeatPress", new int[] { IAPressCat, IAFlickCat, IAPressCat }, new("PcoMeatPress", new int[] { IAPressCat, IAPressCat, IAPressCat },
IA_PadAny, IA_TouchBasicPress, IA_BatonBasicPress); IA_PadAny, IA_TouchBasicPress, IA_BatonBasicPress);
private void Awake() private void Awake()
{ {
instance = this; instance = this;
SetupBopRegion("meatGrinder", "bop", "bossBop"); SetupBopRegion("meatGrinder", "bop", "bossBop");
MeatBase.SetActive(false);
} }
private void Update() private void Update()
@ -174,13 +175,15 @@ namespace HeavenStudio.Games
if (passedTurns.Count > 0) if (passedTurns.Count > 0)
{ {
foreach (var pass in passedTurns) { foreach (var pass in passedTurns)
{
PassTurnStandalone(pass); PassTurnStandalone(pass);
} }
passedTurns.Clear(); passedTurns.Clear();
} }
if (cartLength != 0) { if (cartLength != 0)
{
// CartGuyParentAnim.gameObject.SetActive(true); // CartGuyParentAnim.gameObject.SetActive(true);
if (cartSpider) CartGuyAnim.Play("Phone", 0, 0); if (cartSpider) CartGuyAnim.Play("Phone", 0, 0);
float beatPos = Conductor.instance.GetPositionFromBeat(cartBeat, cartLength); float beatPos = Conductor.instance.GetPositionFromBeat(cartBeat, cartLength);
@ -194,7 +197,8 @@ namespace HeavenStudio.Games
{ {
BossAnim.DoScaledAnimationAsync(bossAnnoyed ? "BossMiss" : "Bop", 0.5f); BossAnim.DoScaledAnimationAsync(bossAnnoyed ? "BossMiss" : "Bop", 0.5f);
} }
if (!cartSpider && CartGuyParentAnim.gameObject.activeSelf) { if (!cartSpider && CartGuyParentAnim.gameObject.activeSelf)
{
CartGuyAnim.DoScaledAnimationAsync("Bop", 0.5f); CartGuyAnim.DoScaledAnimationAsync("Bop", 0.5f);
} }
} }
@ -217,7 +221,8 @@ namespace HeavenStudio.Games
public override void OnPlay(double beat) public override void OnPlay(double beat)
{ {
RiqEntity cg = GameManager.instance.Beatmap.Entities.Find(c => c.datamodel == "meatGrinder/cartGuy"); RiqEntity cg = GameManager.instance.Beatmap.Entities.Find(c => c.datamodel == "meatGrinder/cartGuy");
if (cg != null) { if (cg != null)
{
CartGuy(cg.beat, cg.length, cg["spider"]); CartGuy(cg.beat, cg.length, cg["spider"]);
} }
} }
@ -263,10 +268,14 @@ namespace HeavenStudio.Games
{ {
SoundByte.PlayOneShotGame(sfxName + "startSignal", beat - 1, forcePlay: true); SoundByte.PlayOneShotGame(sfxName + "startSignal", beat - 1, forcePlay: true);
if (GameManager.instance.currentGame == "meatGrinder") { if (GameManager.instance.currentGame == "meatGrinder")
{
instance.StartInterval(beat, length, beat, autoPassTurn); instance.StartInterval(beat, length, beat, autoPassTurn);
} else { }
queuedIntervals.Add(new QueuedInterval() { else
{
queuedIntervals.Add(new QueuedInterval()
{
beat = beat, beat = beat,
length = length, length = length,
autoPassTurn = autoPassTurn autoPassTurn = autoPassTurn
@ -286,8 +295,10 @@ namespace HeavenStudio.Games
{ {
double eventBeat = allCallEvents[i].beat; double eventBeat = allCallEvents[i].beat;
if (eventBeat >= gameSwitchBeat) { if (eventBeat >= gameSwitchBeat)
actions.Add(new BeatAction.Action(eventBeat, delegate { {
actions.Add(new BeatAction.Action(eventBeat, delegate
{
BossAnim.DoScaledAnimationAsync("BossCall", 0.5f); BossAnim.DoScaledAnimationAsync("BossCall", 0.5f);
SoundByte.PlayOneShotGame(sfxName + "signal"); SoundByte.PlayOneShotGame(sfxName + "signal");
})); }));
@ -312,15 +323,19 @@ namespace HeavenStudio.Games
SoundByte.PlayOneShotGame(sfxName + "toss"); SoundByte.PlayOneShotGame(sfxName + "toss");
Meat meat = Instantiate(MeatBase, transform).GetComponent<Meat>(); Meat meat = Instantiate(MeatBase, transform).GetComponent<Meat>();
meat.gameObject.SetActive(true);
meat.startBeat = beat; meat.startBeat = beat;
meat.meatType = bacon ? Meat.MeatType.BaconBall : Meat.MeatType.DarkMeat; meat.meatType = bacon ? Meat.MeatType.BaconBall : Meat.MeatType.DarkMeat;
} }
public static void PrePassTurn(double beat) public static void PrePassTurn(double beat)
{ {
if (GameManager.instance.currentGame == "meatGrinder") { if (GameManager.instance.currentGame == "meatGrinder")
{
instance.PassTurnStandalone(beat); instance.PassTurnStandalone(beat);
} else { }
else
{
passedTurns.Add(beat); passedTurns.Add(beat);
} }
} }
@ -341,8 +356,10 @@ namespace HeavenStudio.Games
for (int i = 0; i < allCallEvents.Count; i++) for (int i = 0; i < allCallEvents.Count; i++)
{ {
double relativeBeat = allCallEvents[i].beat - intervalBeat; double relativeBeat = allCallEvents[i].beat - intervalBeat;
meatCalls.Add(new BeatAction.Action(beat + relativeBeat - 1, delegate { meatCalls.Add(new BeatAction.Action(beat + relativeBeat - 1, delegate
{
Meat Meat = Instantiate(MeatBase, transform).GetComponent<Meat>(); Meat Meat = Instantiate(MeatBase, transform).GetComponent<Meat>();
Meat.gameObject.SetActive(true);
Meat.startBeat = beat + relativeBeat - 1; Meat.startBeat = beat + relativeBeat - 1;
Meat.meatType = Meat.MeatType.LightMeat; Meat.meatType = Meat.MeatType.LightMeat;
})); }));