public void Update() { if (!Enabled) { return; } UpdateExtraBeat(); if (!IsPlanning && _currentBeat != null && _currentPlan != null) { if (!_currentBeat.Update(_worldState)) { OnBeatFinishedExecution(_currentBeat); _currentBeat = _currentPlan.NextBeat(); if (_currentBeat == null || !_currentBeat.MeetsPreconditions(_worldState)) { Replan(); } else { _currentBeat.Perform(); } } } }
private void OnFinishedPlanning() { if (_currentPlan != null) { _currentBeat = _currentPlan.NextBeat(); _currentBeat.Perform(); } }
private void UpdateExtraBeat() { if (_extraBeat == null) { if (!IsPlanning && Time.time - _lastRunExtraBeat > _frequencyToRunExtraBeats) { _extraBeat = SelectExtraBeat(); if (_extraBeat != null) { _extraBeat.Perform(); } } } else if (!_extraBeat.Update(_worldState)) { OnBeatFinishedExecution(_extraBeat); _extraBeat = null; _lastRunExtraBeat = Time.time; } }