protected void Pulse() { if (_onPulseControl != null) { _onPulseControl(_pulseInfo); } _pulseInfo.WillPulse(_Period); if (onWillPulse != null) { onWillPulse(_pulseInfo); } if (_onPulse == null) //early exit { _pulseInfo.DidPulse(); return; } bool doByPass = _Bypass; if (_Steps[_pulseInfo.StepIndex] == false) { doByPass = true; } if (doByPass == false) { if (_RandomBypassStep) { doByPass = (Random.value < _StepBypassChance); } } if (doByPass == false) { _onPulse(_pulseInfo); } _pulseInfo.DidPulse(); }