protected override void Update() { if (!GameSession.IsPlaying) { return; } curTime = MusicController.CurrentTime; // Allocate next frame data nextFrame = null; if (replayWriter != null) { nextFrame = replayWriter.NextWriteItem; nextFrame?.Reset(); } // Process update for other game modules. inputter.UpdateInputs(curTime); HitObjectHolder.UpdateObjects(curTime); // Record replay frame if (nextFrame != null) { nextFrame.Time = curTime; replayWriter.WriteData(nextFrame); } }
protected override void Update() { if (!GameSession.IsPlaying) { return; } float musicTime = MusicController.CurrentTime; while (true) { var frame = replayReader.PeekData(); if (frame == null || frame.Time > musicTime) { if (didSkip) { lastFrameTime = musicTime; } break; } lastFrameTime = frame.Time; didSkip = frame.IsSkipped; // Process update for other game modules. inputter.UpdateInputs(frame.Time, frame.Inputs); HitObjectHolder.UpdateObjects(musicTime); UpdateJudgements(frame); replayReader.AdvanceIndex(); } }
private void Init() { // Init inputter inputter = CreateGameInputter(); TouchEffectDisplay.SetInputter(inputter); // Assign processor instance to other game modules. HitObjectHolder.SetGameProcessor(this); }
protected BaseInputter(HitBarDisplay hitBar, HitObjectHolder hitObjectHolder) { this.hitBar = hitBar; this.hitObjectHolder = hitObjectHolder; hitBarCursor = CreateCursor(); hitBar.LinkCursor(hitBarCursor); keyRecycler = new ManagedRecycler <BeatsKey>(CreateKey); keyRecycler.Precook(3); }
/// <summary> /// Event called on game session hard disposal. /// </summary> protected virtual void OnHardDispose() { GameSession.OnSoftInit -= OnSoftInit; GameSession.OnSoftDispose -= OnSoftDispose; GameSession.OnHardDispose -= OnHardDispose; hitBar.UnlinkCursor(); hitBar = null; hitObjectHolder = null; hitBarCursor = null; keyRecycler = null; pointerEvent = null; raycastResults = null; }
public ReplayInputter(FileInfo replayFile, HitBarDisplay hitBar, HitObjectHolder hitObjectHolder) : base(hitBar, hitObjectHolder) { base.replayFile = replayFile; }
public LocalPlayerInputter(HitBarDisplay hitBar, HitObjectHolder hitObjectHolder) : base(hitBar, hitObjectHolder) { }