public ShipController(ShipModel model, ShipView view) { _view = view; // Init Player Controls BindDirKeys(); Observable .EveryUpdate() .Where(_ => Input.GetMouseButtonDown(0) && !Utils.IsPointerOverGameObject()) .Subscribe(_ => model.Fire()) .AddTo(_disposables); // Bind View view.Direction = MergeDirKeys(); view.Speed = model.Speed.ToReadOnlyReactiveProperty(); // Bind Model { model.Position = Observable.EveryFixedUpdate() .Select(_ => view.Position) .ToReadOnlyReactiveProperty(); view.TriggerEnterEvents .Subscribe(_ => model.TakeDamage()); model.OnDestroyed += Destroy; } }