public void RemovePresenter(IPresenterEvents presenter)
        {
            var loop = PlayerLoop.GetCurrentPlayerLoop();

            for (var i = 0; i < loop.subSystemList.Length; i++)
            {
                var system = loop.subSystemList[i];

                if (system.type == typeof(PlayerLoopTypes.Update))
                {
                    for (var j = 0; j < system.subSystemList.Length; j++)
                    {
                        if (system.subSystemList[j].type == typeof(Presenter) && system.updateDelegate?.Target == presenter)
                        {
                            var newSubSystems = new PlayerLoopSystem[system.subSystemList.Length - 1];
                            var n             = 0;

                            for (var k = 0; k < system.subSystemList.Length; k++)
                            {
                                if (k != j)
                                {
                                    newSubSystems[n++] = system.subSystemList[k];
                                }
                            }

                            system.subSystemList  = newSubSystems;
                            loop.subSystemList[i] = system;
                            PlayerLoop.SetPlayerLoop(loop);
                            break;
                        }
                    }
                }
            }
        }
        public void AddPresenter(IPresenterEvents presenter)
        {
            var success       = false;
            var loop          = PlayerLoop.GetCurrentPlayerLoop();
            var presentSystem = new PlayerLoopSystem()
            {
                type           = typeof(Presenter),
                updateDelegate = presenter.Update
            };

            for (var i = 0; i < loop.subSystemList.Length; i++)
            {
                var system = loop.subSystemList[i];

                if (system.type == typeof(PlayerLoopTypes.Update))
                {
                    // Add new update system right at the start of the group.
                    var newSubSystems = new PlayerLoopSystem[system.subSystemList.Length + 1];
                    system.subSystemList.CopyTo(newSubSystems, 1);
                    system.subSystemList    = newSubSystems;
                    system.subSystemList[0] = presentSystem;
                    loop.subSystemList[i]   = system;
                    success = true;

                    break;
                }
            }

            if (success)
            {
                PlayerLoop.SetPlayerLoop(loop);
            }
            else
            {
                throw new InvalidOperationException("PlayerLoop does not contain Update group.");
            }
        }
Beispiel #3
0
 public void RemovePresenter(IPresenterEvents presenter)
 {
     _presenters.Remove(presenter);
 }
Beispiel #4
0
 public void AddPresenter(IPresenterEvents presenter)
 {
     _presenters.Add(presenter);
 }
Beispiel #5
0
 void IView.SetPresenter(IPresenterEvents presenter)
 {
     this.presenter = presenter;
 }
Beispiel #6
0
 public OptionsDialog(IPresenterEvents presenter)
 {
     this.presenter = presenter;
     InitializeComponent();
 }