diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index ba270264a..9e4aca16b 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -133,12 +133,12 @@ GameObject: m_Component: - component: {fileID: 49975355} m_Layer: 0 - m_Name: ClappyTrio + m_Name: clappyTrio m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &49975355 Transform: m_ObjectHideFlags: 0 @@ -146,14 +146,14 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 49975354} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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_Children: - {fileID: 1962334732} - {fileID: 1739654936} - m_Father: {fileID: 0} - m_RootOrder: 5 + m_Father: {fileID: 1923614611} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &142958109 GameObject: @@ -906,7 +906,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 1161847961} - m_RootOrder: 6 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &325946115 GameObject: @@ -1148,8 +1148,8 @@ Transform: m_Children: - {fileID: 1855769657} - {fileID: 1765874089} - m_Father: {fileID: 1161847961} - m_RootOrder: 4 + m_Father: {fileID: 0} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &411650320 GameObject: @@ -1479,7 +1479,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &490794386 GameObject: @@ -3290,7 +3290,7 @@ RectTransform: m_Children: - {fileID: 709067356} m_Father: {fileID: 1161847961} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -3879,12 +3879,12 @@ GameObject: - component: {fileID: 1161847961} - component: {fileID: 1161847962} m_Layer: 0 - m_Name: Fork Lifter + m_Name: forkLifter m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &1161847961 Transform: m_ObjectHideFlags: 0 @@ -3892,7 +3892,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1161847960} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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_Children: @@ -3900,12 +3900,11 @@ Transform: - {fileID: 1594730740} - {fileID: 1144790344} - {fileID: 1671500047} - - {fileID: 389255204} - {fileID: 978514681} - {fileID: 311483437} - {fileID: 1495387615} - m_Father: {fileID: 0} - m_RootOrder: 4 + m_Father: {fileID: 1923614611} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1161847962 MonoBehaviour: @@ -3919,7 +3918,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b91bd072f874c8746bee1afaf6dac3b4, type: 3} m_Name: m_EditorClassIdentifier: - allPlayerActions: [] + ForkLifterHand: {fileID: 1144790346} handAnim: {fileID: 1144790345} flickedObject: {fileID: 1671500045} peaPreview: {fileID: 2132733992} @@ -4813,7 +4812,7 @@ Transform: m_LocalScale: {x: 18.9426, y: 11.7704, z: 1} m_Children: [] m_Father: {fileID: 1161847961} - m_RootOrder: 7 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1531143822 GameObject: @@ -5049,7 +5048,7 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 0 + m_SortingOrder: 3 m_Sprite: {fileID: 5006612820273086949, guid: bfb4e4bb08acdb14792cdd4c46253ab0, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 @@ -6173,6 +6172,38 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1923614610 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1923614611} + m_Layer: 0 + m_Name: Games + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1923614611 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1923614610} + 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_Children: + - {fileID: 1161847961} + - {fileID: 49975355} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1924956155 GameObject: m_ObjectHideFlags: 0 @@ -6562,6 +6593,9 @@ GameObject: m_Component: - component: {fileID: 2072389416} - component: {fileID: 2072389417} + - component: {fileID: 2072389418} + - component: {fileID: 2072389419} + - component: {fileID: 2072389420} m_Layer: 0 m_Name: GameManager m_TagString: Untagged @@ -6577,11 +6611,11 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2072389415} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -4.2372236, y: 2.3456008, z: -32.89208} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 25, y: 15, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &2072389417 MonoBehaviour: @@ -6595,10 +6629,89 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: fd86589935fb46c4db0d3d23d52743a9, type: 3} m_Name: m_EditorClassIdentifier: - Events: [] + Beatmap: + bpm: 0 + entities: [] currentEvent: 0 txt: {fileID: 4900000, guid: cbe1a43c8ddc790498fde2e01e66d23e, type: 3} startOffset: 1 +--- !u!212 &2072389418 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072389415} + m_Enabled: 0 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + 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: 32767 + m_Sprite: {fileID: 7482667652216324306, guid: ef2fa2a75dc283e40b9d4fe1f20dc6fb, type: 3} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &2072389419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072389415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 07e916edcdacfd744913fda312ab186c, type: 3} + m_Name: + m_EditorClassIdentifier: + GamesHolder: {fileID: 1923614611} + minigames: [] +--- !u!114 &2072389420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072389415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b526b8bc5e3c6894a9d30b072c68fa27, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &2127056958 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Beatmap.cs b/Assets/Scripts/Beatmap.cs index b098ceba8..75c9886d0 100644 --- a/Assets/Scripts/Beatmap.cs +++ b/Assets/Scripts/Beatmap.cs @@ -1,18 +1,25 @@ -using System.Collections; +using System; using System.Collections.Generic; -using UnityEngine; -public class Beatmap : MonoBehaviour +namespace RhythmHeavenMania { - // Start is called before the first frame update - void Start() + [Serializable] + public class Beatmap { - - } + public double bpm; + public List entities; - // Update is called once per frame - void Update() - { - + [Serializable] + public class Entity : ICloneable + { + public float beat; + public int track; + public string datamodel; + + public object Clone() + { + return this.MemberwiseClone(); + } + } } -} +} \ No newline at end of file diff --git a/Assets/Scripts/EventCaller.cs b/Assets/Scripts/EventCaller.cs new file mode 100644 index 000000000..f7e90c033 --- /dev/null +++ b/Assets/Scripts/EventCaller.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; + +using RhythmHeavenMania.Games.ForkLifter; +using RhythmHeavenMania.Games.ClappyTrio; +using RhythmHeavenMania.Util; + +namespace RhythmHeavenMania +{ + public class EventCaller : MonoBehaviour + { + public Transform GamesHolder; + private float currentBeat; + + public delegate void EventCallback(); + + public List minigames = new List() + { + }; + + [Serializable] + public class MiniGame + { + public string name; + public GameObject holder; + public List actions = new List(); + + public MiniGame(string name, List actions) + { + this.name = name; + this.actions = actions; + } + } + + public class GameAction + { + public string actionName; + public EventCallback function; + + public GameAction(string actionName, EventCallback function) + { + this.actionName = actionName; + this.function = function; + } + } + + public void Init() + { + minigames = new List() + { + new MiniGame("forkLifter", new List() + { + new GameAction("pea", delegate { ForkLifter.instance.Flick(currentBeat, 0); } ), + new GameAction("topbun", delegate { ForkLifter.instance.Flick(currentBeat, 1); } ), + new GameAction("burger", delegate { ForkLifter.instance.Flick(currentBeat, 2); } ), + new GameAction("bottombun", delegate { ForkLifter.instance.Flick(currentBeat, 3); } ), + new GameAction("prepare", delegate { ForkLifter.instance.ForkLifterHand.Prepare(); }), + new GameAction("gulp", delegate { ForkLifterPlayer.instance.Eat(); }), + new GameAction("sigh", delegate { Jukebox.PlayOneShot("sigh"); }) + }) + }; + + for (int i = 0; i < minigames.Count; i++) + { + minigames[i].holder = GamesHolder.Find(minigames[i].name).gameObject; + } + } + + private void Update() + { + if (GameManager.instance.currentEvent > 0 && GameManager.instance.currentEvent < GameManager.instance.Beatmap.entities.Count) + currentBeat = GameManager.instance.Beatmap.entities[GameManager.instance.currentEvent].beat; + } + + public void CallEvent(string event_, float beat) + { + string[] details = event_.Split('/'); + MiniGame game = minigames.Find(c => c.name == details[0]); + + try + { + GameAction action = game.actions.Find(c => c.actionName == details[1]); + action.function.Invoke(); + } + catch (Exception ex) + { + Debug.LogWarning("Event not found! May be spelled wrong or it is not implemented."); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/EventCaller.cs.meta b/Assets/Scripts/EventCaller.cs.meta new file mode 100644 index 000000000..ff770da76 --- /dev/null +++ b/Assets/Scripts/EventCaller.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07e916edcdacfd744913fda312ab186c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index d218cf8fd..503d554c9 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -12,8 +12,9 @@ namespace RhythmHeavenMania public class GameManager : MonoBehaviour { public static GameManager instance; + private EventCaller eventCaller; - public List Events = new List(); + public Beatmap Beatmap; public int currentEvent; @@ -21,17 +22,6 @@ namespace RhythmHeavenMania public float startOffset; - [Serializable] - public class Event : ICloneable - { - public float spawnTime; - public string eventName; - - public object Clone() - { - return this.MemberwiseClone(); - } - } private void Awake() { @@ -43,13 +33,16 @@ namespace RhythmHeavenMania SortEventsList(); string json = txt.text; - Events = JsonConvert.DeserializeObject>(json); + Beatmap.entities = JsonConvert.DeserializeObject>(json); SortEventsList(); StartCoroutine(Begin()); GlobalGameManager.Init(); + + eventCaller = GetComponent(); + eventCaller.Init(); } private IEnumerator Begin() @@ -60,15 +53,17 @@ namespace RhythmHeavenMania private void Update() { - if (Events.Count < 1) + if (Beatmap.entities.Count < 1) return; - List floats = Events.Select(c => c.spawnTime).ToList(); + List entities = Beatmap.entities.Select(c => c.beat).ToList(); - if (currentEvent < Events.Count && currentEvent >= 0) + if (currentEvent < Beatmap.entities.Count && currentEvent >= 0) { - if (Conductor.instance.songPositionInBeats >= floats[currentEvent]) + if (Conductor.instance.songPositionInBeats >= entities[currentEvent]) { + eventCaller.CallEvent(Beatmap.entities[currentEvent].datamodel, Beatmap.entities[currentEvent].beat); + currentEvent++; } } @@ -76,15 +71,15 @@ namespace RhythmHeavenMania public void SortEventsList() { - Events.Sort((x, y) => x.spawnTime.CompareTo(y.spawnTime)); + Beatmap.entities.Sort((x, y) => x.beat.CompareTo(y.beat)); } public void SetCurrentEventToClosest() { - if (Events.Count > 0) + if (Beatmap.entities.Count > 0) { - List floats = Events.Select(c => c.spawnTime).ToList(); - currentEvent = floats.IndexOf(Mathp.GetClosestInList(floats, Conductor.instance.songPositionInBeats)); + List entities = Beatmap.entities.Select(c => c.beat).ToList(); + currentEvent = entities.IndexOf(Mathp.GetClosestInList(entities, Conductor.instance.songPositionInBeats)); } } diff --git a/Assets/Scripts/Games/ForkLifter/ForkLifter.cs b/Assets/Scripts/Games/ForkLifter/ForkLifter.cs index 53a893675..c9dbaa6a7 100644 --- a/Assets/Scripts/Games/ForkLifter/ForkLifter.cs +++ b/Assets/Scripts/Games/ForkLifter/ForkLifter.cs @@ -4,15 +4,18 @@ using UnityEngine; using RhythmHeavenMania.Util; +using DG.Tweening; + namespace RhythmHeavenMania.Games.ForkLifter { public class ForkLifter : MonoBehaviour { public static ForkLifter instance; - GameManager GameManager; + [Header("References")] + public ForkLifterHand ForkLifterHand; + private GameManager GameManager; - public List allPlayerActions = new List(); [Header("Objects")] public Animator handAnim; @@ -22,6 +25,9 @@ namespace RhythmHeavenMania.Games.ForkLifter public Sprite[] peaSprites; public Sprite[] peaHitSprites; + + private List allPlayerActions = new List(); + private void Awake() { instance = this; @@ -30,7 +36,7 @@ namespace RhythmHeavenMania.Games.ForkLifter private void Start() { GameManager = GameManager.instance; - allPlayerActions = GameManager.Events.FindAll(c => c.eventName != "gulp" && c.eventName != "sigh" && c.eventName != "prepare" && c.eventName != "end"); + // allPlayerActions = GameManager.Events.FindAll(c => c.eventName != "gulp" && c.eventName != "sigh" && c.eventName != "prepare" && c.eventName != "end"); /*List temp = new List(); for (int i = 0; i < allPlayerActions.Count; i++) diff --git a/Assets/Scripts/Games/ForkLifter/ForkLifterHand.cs b/Assets/Scripts/Games/ForkLifter/ForkLifterHand.cs index 1fb12705b..5b324907d 100644 --- a/Assets/Scripts/Games/ForkLifter/ForkLifterHand.cs +++ b/Assets/Scripts/Games/ForkLifter/ForkLifterHand.cs @@ -13,18 +13,11 @@ namespace RhythmHeavenMania.Games.ForkLifter public Sprite[] fastSprites; - List allPlayerActions; - - public static ForkLifterHand instance { get; set; } - - private void Awake() - { - instance = this; - } + // List allPlayerActions; public void CheckNextFlick() { - allPlayerActions = GameManager.instance.Events.FindAll(c => c.eventName != "gulp" && c.eventName != "sigh" && c.eventName != "prepare"); + // allPlayerActions = GameManager.instance.Events.FindAll(c => c.eventName != "gulp" && c.eventName != "sigh" && c.eventName != "prepare"); /*if (GameManager.instance.currentEventPlayer < allPlayerActions.Count) { diff --git a/Assets/Scripts/Games/ForkLifter/ForkLifterPlayer.cs b/Assets/Scripts/Games/ForkLifter/ForkLifterPlayer.cs index 2d8771484..de1289ca9 100644 --- a/Assets/Scripts/Games/ForkLifter/ForkLifterPlayer.cs +++ b/Assets/Scripts/Games/ForkLifter/ForkLifterPlayer.cs @@ -10,6 +10,8 @@ namespace RhythmHeavenMania.Games.ForkLifter { public class ForkLifterPlayer : MonoBehaviour { + public static ForkLifterPlayer instance { get; set; } + [Header("Objects")] public GameObject fork; public Sprite peaSprite; @@ -27,7 +29,6 @@ namespace RhythmHeavenMania.Games.ForkLifter public List EligibleHits = new List(); private int currentHitInList = 0; - public static ForkLifterPlayer instance { get; set; } public float timescale = 1; @@ -204,7 +205,6 @@ namespace RhythmHeavenMania.Games.ForkLifter RemovePea(); - GoForAPerfect.instance.Hit(); GameProfiler.instance.IncreaseScore(); } else if (EligibleHits[currentHitInList].early) @@ -235,8 +235,6 @@ namespace RhythmHeavenMania.Games.ForkLifter currentEarlyPeasOnFork++; RemovePea(); - - GoForAPerfect.instance.Miss(); } else if (EligibleHits[currentHitInList].late) { @@ -266,8 +264,6 @@ namespace RhythmHeavenMania.Games.ForkLifter currentLatePeasOnFork++; RemovePea(); - - GoForAPerfect.instance.Miss(); } } else diff --git a/Assets/Scripts/Games/ForkLifter/Pea.cs b/Assets/Scripts/Games/ForkLifter/Pea.cs index a1e95f865..93fd8fea0 100644 --- a/Assets/Scripts/Games/ForkLifter/Pea.cs +++ b/Assets/Scripts/Games/ForkLifter/Pea.cs @@ -74,7 +74,6 @@ namespace RhythmHeavenMania.Games.ForkLifter { endstate++; Jukebox.PlayOneShot("disappointed"); - GoForAPerfect.instance.Miss(); } if (normalizedBeat > 1.35f) diff --git a/Assets/forklifter.json b/Assets/forklifter.json index 37f6f34b6..df7983e13 100644 --- a/Assets/forklifter.json +++ b/Assets/forklifter.json @@ -1,432 +1,432 @@ [ { - "spawnTime": 9, - "eventName": "pea" + "beat": 9, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 13, - "eventName": "pea" + "beat": 13, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 18, - "eventName": "pea" + "beat": 18, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 21, - "eventName": "pea" + "beat": 21, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 25, - "eventName": "pea" + "beat": 25, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 29, - "eventName": "pea" + "beat": 29, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 34, - "eventName": "pea" + "beat": 34, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 37, - "eventName": "pea" + "beat": 37, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 41, - "eventName": "pea" + "beat": 41, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 42, - "eventName": "pea" + "beat": 42, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 45, - "eventName": "pea" + "beat": 45, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 45.5, - "eventName": "pea" + "beat": 45.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 49, - "eventName": "pea" + "beat": 49, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 50, - "eventName": "pea" + "beat": 50, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 53, - "eventName": "pea" + "beat": 53, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 53.5, - "eventName": "pea" + "beat": 53.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 57, - "eventName": "pea" + "beat": 57, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 58, - "eventName": "pea" + "beat": 58, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 62, - "eventName": "pea" + "beat": 62, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 65, - "eventName": "pea" + "beat": 65, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 66, - "eventName": "pea" + "beat": 66, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 69, - "eventName": "pea" + "beat": 69, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 69.5, - "eventName": "pea" + "beat": 69.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 73, - "eventName": "pea" + "beat": 73, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 74, - "eventName": "pea" + "beat": 74, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 77, - "eventName": "pea" + "beat": 77, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 81, - "eventName": "pea" + "beat": 81, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 82, - "eventName": "pea" + "beat": 82, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 85.5, - "eventName": "pea" + "beat": 85.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 86, - "eventName": "pea" + "beat": 86, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 86.5, - "eventName": "pea" + "beat": 86.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 90, - "eventName": "pea" + "beat": 90, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 93, - "eventName": "pea" + "beat": 93, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 94, - "eventName": "pea" + "beat": 94, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 98, - "eventName": "pea" + "beat": 98, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 101, - "eventName": "pea" + "beat": 101, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 105, - "eventName": "pea" + "beat": 105, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 106, - "eventName": "pea" + "beat": 106, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 109, - "eventName": "pea" + "beat": 109, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 114, - "eventName": "pea" + "beat": 114, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 117, - "eventName": "pea" + "beat": 117, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 118, - "eventName": "pea" + "beat": 118, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 121, - "eventName": "pea" + "beat": 121, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 122, - "eventName": "pea" + "beat": 122, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 125, - "eventName": "pea" + "beat": 125, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 126, - "eventName": "pea" + "beat": 126, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 130, - "eventName": "pea" + "beat": 130, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 133, - "eventName": "pea" + "beat": 133, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 137.5, - "eventName": "pea" + "beat": 137.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 138, - "eventName": "pea" + "beat": 138, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 141, - "eventName": "pea" + "beat": 141, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 145.5, - "eventName": "pea" + "beat": 145.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 146, - "eventName": "pea" + "beat": 146, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 149, - "eventName": "pea" + "beat": 149, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 153.5, - "eventName": "pea" + "beat": 153.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 154, - "eventName": "pea" + "beat": 154, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 157, - "eventName": "pea" + "beat": 157, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 161.5, - "eventName": "pea" + "beat": 161.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 162, - "eventName": "pea" + "beat": 162, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 165, - "eventName": "topbun" + "beat": 165, + "datamodel": "forkLifter/topbun" }, { - "spawnTime": 165.65, - "eventName": "burger" + "beat": 165.65, + "datamodel": "forkLifter/burger" }, { - "spawnTime": 166.25, - "eventName": "bottombun" + "beat": 166.25, + "datamodel": "forkLifter/bottombun" }, { - "spawnTime": 169.5, - "eventName": "pea" + "beat": 169.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 170, - "eventName": "pea" + "beat": 170, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 173, - "eventName": "pea" + "beat": 173, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 177.5, - "eventName": "pea" + "beat": 177.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 178, - "eventName": "pea" + "beat": 178, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 181, - "eventName": "pea" + "beat": 181, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 185.5, - "eventName": "pea" + "beat": 185.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 186, - "eventName": "pea" + "beat": 186, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 188.5, - "eventName": "pea" + "beat": 188.5, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 189, - "eventName": "pea" + "beat": 189, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 193, - "eventName": "pea" + "beat": 193, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 196, - "eventName": "pea" + "beat": 196, + "datamodel": "forkLifter/pea" }, { - "spawnTime": 16, - "eventName": "gulp" + "beat": 16, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 24, - "eventName": "gulp" + "beat": 24, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 32, - "eventName": "gulp" + "beat": 32, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 39.75, - "eventName": "gulp" + "beat": 39.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 44.25, - "eventName": "gulp" + "beat": 44.25, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 48, - "eventName": "gulp" + "beat": 48, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 52.25, - "eventName": "gulp" + "beat": 52.25, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 56, - "eventName": "gulp" + "beat": 56, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 64.25, - "eventName": "gulp" + "beat": 64.25, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 68.5, - "eventName": "gulp" + "beat": 68.5, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 72, - "eventName": "gulp" + "beat": 72, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 80, - "eventName": "gulp" + "beat": 80, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 84.5, - "eventName": "gulp" + "beat": 84.5, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 88.75, - "eventName": "gulp" + "beat": 88.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 96.75, - "eventName": "gulp" + "beat": 96.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 103.5, - "eventName": "gulp" + "beat": 103.5, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 112, - "eventName": "gulp" + "beat": 112, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 120.5, - "eventName": "gulp" + "beat": 120.5, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 124.5, - "eventName": "gulp" + "beat": 124.5, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 128.75, - "eventName": "gulp" + "beat": 128.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 135.75, - "eventName": "gulp" + "beat": 135.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 143.75, - "eventName": "gulp" + "beat": 143.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 151.75, - "eventName": "gulp" + "beat": 151.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 160, - "eventName": "gulp" + "beat": 160, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 164.25, - "eventName": "gulp" + "beat": 164.25, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 168.75, - "eventName": "gulp" + "beat": 168.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 175.75, - "eventName": "gulp" + "beat": 175.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 183.75, - "eventName": "gulp" + "beat": 183.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 188.5, - "eventName": "gulp" + "beat": 188.5, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 191.75, - "eventName": "gulp" + "beat": 191.75, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 199, - "eventName": "gulp" + "beat": 199, + "datamodel": "forkLifter/gulp" }, { - "spawnTime": 201, - "eventName": "sigh" + "beat": 201, + "datamodel": "sigh" }, - {"spawnTime":8.0,"eventName":"prepare"},{"spawnTime":12.0,"eventName":"prepare"},{"spawnTime":17.0,"eventName":"prepare"},{"spawnTime":20.0,"eventName":"prepare"},{"spawnTime":24.0,"eventName":"prepare"},{"spawnTime":28.0,"eventName":"prepare"},{"spawnTime":33.0,"eventName":"prepare"},{"spawnTime":36.0,"eventName":"prepare"},{"spawnTime":40.0,"eventName":"prepare"},{"spawnTime":44.0,"eventName":"prepare"},{"spawnTime":48.0,"eventName":"prepare"},{"spawnTime":52.0,"eventName":"prepare"},{"spawnTime":56.0,"eventName":"prepare"},{"spawnTime":61.0,"eventName":"prepare"},{"spawnTime":64.0,"eventName":"prepare"},{"spawnTime":68.0,"eventName":"prepare"},{"spawnTime":72.0,"eventName":"prepare"},{"spawnTime":76.0,"eventName":"prepare"},{"spawnTime":80.0,"eventName":"prepare"},{"spawnTime":84.5,"eventName":"prepare"},{"spawnTime":89.0,"eventName":"prepare"},{"spawnTime":92.0,"eventName":"prepare"},{"spawnTime":97.0,"eventName":"prepare"},{"spawnTime":100.0,"eventName":"prepare"},{"spawnTime":104.0,"eventName":"prepare"},{"spawnTime":108.0,"eventName":"prepare"},{"spawnTime":113.0,"eventName":"prepare"},{"spawnTime":116.0,"eventName":"prepare"},{"spawnTime":120.0,"eventName":"prepare"},{"spawnTime":124.0,"eventName":"prepare"},{"spawnTime":129.0,"eventName":"prepare"},{"spawnTime":132.0,"eventName":"prepare"},{"spawnTime":136.5,"eventName":"prepare"},{"spawnTime":140.0,"eventName":"prepare"},{"spawnTime":144.5,"eventName":"prepare"},{"spawnTime":148.0,"eventName":"prepare"},{"spawnTime":152.5,"eventName":"prepare"},{"spawnTime":156.0,"eventName":"prepare"},{"spawnTime":160.5,"eventName":"prepare"},{"spawnTime":164.0,"eventName":"prepare"},{"spawnTime":168.5,"eventName":"prepare"},{"spawnTime":172.0,"eventName":"prepare"},{"spawnTime":176.5,"eventName":"prepare"},{"spawnTime":180.0,"eventName":"prepare"},{"spawnTime":184.5,"eventName":"prepare"},{"spawnTime":187.5,"eventName":"prepare"},{"spawnTime":192.0,"eventName":"prepare"},{"spawnTime":195.0,"eventName":"prepare"} + {"beat":8.0,"datamodel":"forkLifter/prepare"},{"beat":12.0,"datamodel":"forkLifter/prepare"},{"beat":17.0,"datamodel":"forkLifter/prepare"},{"beat":20.0,"datamodel":"forkLifter/prepare"},{"beat":24.0,"datamodel":"forkLifter/prepare"},{"beat":28.0,"datamodel":"forkLifter/prepare"},{"beat":33.0,"datamodel":"forkLifter/prepare"},{"beat":36.0,"datamodel":"forkLifter/prepare"},{"beat":40.0,"datamodel":"forkLifter/prepare"},{"beat":44.0,"datamodel":"forkLifter/prepare"},{"beat":48.0,"datamodel":"forkLifter/prepare"},{"beat":52.0,"datamodel":"forkLifter/prepare"},{"beat":56.0,"datamodel":"forkLifter/prepare"},{"beat":61.0,"datamodel":"forkLifter/prepare"},{"beat":64.0,"datamodel":"forkLifter/prepare"},{"beat":68.0,"datamodel":"forkLifter/prepare"},{"beat":72.0,"datamodel":"forkLifter/prepare"},{"beat":76.0,"datamodel":"forkLifter/prepare"},{"beat":80.0,"datamodel":"forkLifter/prepare"},{"beat":84.5,"datamodel":"forkLifter/prepare"},{"beat":89.0,"datamodel":"forkLifter/prepare"},{"beat":92.0,"datamodel":"forkLifter/prepare"},{"beat":97.0,"datamodel":"forkLifter/prepare"},{"beat":100.0,"datamodel":"forkLifter/prepare"},{"beat":104.0,"datamodel":"forkLifter/prepare"},{"beat":108.0,"datamodel":"forkLifter/prepare"},{"beat":113.0,"datamodel":"forkLifter/prepare"},{"beat":116.0,"datamodel":"forkLifter/prepare"},{"beat":120.0,"datamodel":"forkLifter/prepare"},{"beat":124.0,"datamodel":"forkLifter/prepare"},{"beat":129.0,"datamodel":"forkLifter/prepare"},{"beat":132.0,"datamodel":"forkLifter/prepare"},{"beat":136.5,"datamodel":"forkLifter/prepare"},{"beat":140.0,"datamodel":"forkLifter/prepare"},{"beat":144.5,"datamodel":"forkLifter/prepare"},{"beat":148.0,"datamodel":"forkLifter/prepare"},{"beat":152.5,"datamodel":"forkLifter/prepare"},{"beat":156.0,"datamodel":"forkLifter/prepare"},{"beat":160.5,"datamodel":"forkLifter/prepare"},{"beat":164.0,"datamodel":"forkLifter/prepare"},{"beat":168.5,"datamodel":"forkLifter/prepare"},{"beat":172.0,"datamodel":"forkLifter/prepare"},{"beat":176.5,"datamodel":"forkLifter/prepare"},{"beat":180.0,"datamodel":"forkLifter/prepare"},{"beat":184.5,"datamodel":"forkLifter/prepare"},{"beat":187.5,"datamodel":"forkLifter/prepare"},{"beat":192.0,"datamodel":"forkLifter/prepare"},{"beat":195.0,"datamodel":"forkLifter/prepare"} , { - "spawnTime": 206, - "eventName": "end" + "beat": 206, + "datamodel": "end" } ] \ No newline at end of file