public VideoState(string name, FrameOverlayManager mainWindow, string video, State parent, ITransitionStyle transition, IMediaPlayer player) : base(name, mainWindow.Manager, DefaultBG) { mPlayer = player; mMainWindow = mainWindow; mVideo = Path.GetFullPath(video); mPlayer.PlaybackFinished += mPlayer_VideoFinished; mTrigger = new SimpleTrigger(); AddTransition(new StateTransition(Manager, this, parent, mTrigger, transition)); }
/// <summary> /// Start the transition transition one state to another. /// </summary> /// <param name="transition">The transition to begin.</param> public void BeginTransition(StateTransition transition) { if (Transitioning) throw new InvalidOperationException("Unable to start transition transition " + transition.From.Name + " to " + transition.To.Name + ". There is already a transition in progress."); lock (this) { mCurrentState = null; mCurrentTransition = transition; transition.Finished += mTransitionCompleteListener; } if (TransitionStarting != null) TransitionStarting(transition); transition.Begin(); }
/// <summary> /// Add a state to the manager. /// </summary> public void AddState(State state) { state.Init(); if (!mStates.ContainsKey(state.Name)) mStates.Add(state.Name, state); if (StateAdded != null) StateAdded(state); }
private void OnStart() { mState = Plugins.State.Running; mRoute.Clear(); mRoute.Add(mPrev); mStart = DateTime.Now; mCore.Tick += mTickListener; mPrep = false; if (StateChanged != null) StateChanged(); }
private void OnFinish() { mCore.Tick -= mTickListener; mFinish = DateTime.Now; mState = Plugins.State.Finished; if (StateChanged != null) StateChanged(); if (TimeChanged != null) TimeChanged(); }
public TickStatistics this[State state] { get { return mStatistics[state.Name]; } }
private void StateActivated(State state) { if (mCurrentStats != null) mCurrentStats.End(); mCurrentStats = mStatistics[state.Name]; mCurrentStats.Begin(); }