public override void Process(ProcessCapability capability) { if (Resource == null) { return; } if (_currentCapability != capability) { // Switch the capability; if we fail to do so, remove all other capabilities from the available ones and // trigger a reconfiguration if (Robot.SwitchCapability(capability)) { _currentCapability = capability; } else { AvailableCapabilities.RemoveAll(c => c != _currentCapability); CheckConstraints(); return; } } // Apply the capability; if we fail to do so, remove it from the available ones and trigger a reconfiguration if (!Robot.ApplyCapability()) { AvailableCapabilities.Remove(capability); CheckConstraints(); } else { if (Resource.State.Count() == Resource.Task.Capabilities.Length) { throw new InvalidOperationException(); } Resource.OnCapabilityApplied(); } }
public override void Process(ProcessCapability capability) { if (Resource == null) return; if (_currentCapability != capability) { // Switch the capability; if we fail to do so, remove all other capabilities from the available ones and // trigger a reconfiguration if (Robot.SwitchCapability(capability)) _currentCapability = capability; else { AvailableCapabilities.RemoveAll(c => c != _currentCapability); CheckConstraints(); return; } } // Apply the capability; if we fail to do so, remove it from the available ones and trigger a reconfiguration if (!Robot.ApplyCapability()) { AvailableCapabilities.Remove(capability); CheckConstraints(); } else { if (Resource.State.Count() == Resource.Task.Capabilities.Length) throw new InvalidOperationException(); Resource.OnCapabilityApplied(); } }
public virtual void Process(ProcessCapability capability) { }
public virtual void Process(ProcessCapability capability) { }