private void _NextSequence(Action actionOnFail) { _DisposeSequenceExecutor(); try { if (_state != RunState.Stopping && _sequenceEnumerator.MoveNext()) { _sequenceExecutor = _sequenceEnumerator.Current; _AssignEventHandlers(); _state = RunState.Playing; _sequenceExecutor.Start(); } } catch (Exception ex) { Logging.ErrorException(ex.Message, ex); _DisposeSequenceExecutor(); } finally { // Allow an exception to propogate after the caller's failure action // has had a chance to execute. if (_sequenceExecutor == null) { actionOnFail(); } } }
private void _DisposeSequenceExecutor() { if (_sequenceExecutor != null) { _RemoveEventHandlers(); _sequenceExecutor.Dispose(); _sequenceExecutor = null; } }
public ISequenceContext CreateSequenceContext(ContextFeatures contextFeatures, ISequence sequence) { ISequenceExecutor executor = Vixen.Services.SequenceTypeService.Instance.CreateSequenceExecutor(sequence); ISequenceContext context = (ISequenceContext)_CreateContext(ContextTargetType.Sequence, contextFeatures); if (executor != null && context != null) { context.Executor = executor; context.Sequence = sequence; _AddContext(context); } return(context); }
public ISequenceContext CreateSequenceContext(ContextFeatures contextFeatures, ISequence sequence) { ISequenceExecutor executor = Vixen.Services.SequenceTypeService.Instance.CreateSequenceExecutor(sequence); ISequenceContext context = (ISequenceContext)_CreateContext(ContextTargetType.Sequence, contextFeatures); if (executor != null && context != null) { context.Executor = executor; context.Sequence = sequence; _AddContext(context); } VixenSystem.Instrumentation.AddValue(_contextUpdateTimeValue); return(context); }
public ISequenceExecutor CreateSequenceExecutor(ISequence sequence) { SequenceTypeModuleManagement manager = Modules.GetManager <ISequenceTypeModuleInstance, SequenceTypeModuleManagement>(); var sequenceTypeFactory = manager.GetFactory(sequence); if (sequenceTypeFactory != null) { ISequenceExecutor sequenceExecutor = sequenceTypeFactory.CreateExecutor(); if (sequenceExecutor == null) { throw new InvalidOperationException("No executor exists for sequence of type " + sequence.GetType() + "."); } return(sequenceExecutor); } return(null); }
private void _NextSequence(Action actionOnFail) { _DisposeSequenceExecutor(); try { if (_state != RunState.Stopping && _sequenceEnumerator.MoveNext()) { _sequenceExecutor = _sequenceEnumerator.Current; _AssignEventHandlers(); _state = RunState.Playing; _sequenceExecutor.Start(); } } catch (Exception ex) { Logging.Error(ex.Message,ex); _DisposeSequenceExecutor(); } finally { // Allow an exception to propogate after the caller's failure action // has had a chance to execute. if (_sequenceExecutor == null) { actionOnFail(); } } }
private void _DisposeSequenceExecutor() { if (_sequenceExecutor != null) { _RemoveEventHandlers(); _sequenceExecutor.Dispose(); _sequenceExecutor = null; } }