void Init(ShipInfo _shipInfo)
 {
     if (_shipTransform == null)
     {
         _shipTransform = GameObject.Instantiate <GameObject>(ShipPrefab).transform;
     }
     _shipInfo.Position.ObserveEveryValueChanged(value => value.Value)
     .Subscribe(value => {
         _shipTransform.transform.position = value;
     }).AddTo(_disposables);
 }
        void OnEnable()
        {
            _camera = Camera.main;

            MessageBroker.Default
            .Receive <SharedMessage>()
            .Where(msg => msg.Type == SharedMessage.MessageType.INIT_SHIP)
            .Subscribe(msg => {
                _shipInfo = (ShipInfo)msg.Context;
            }).AddTo(_disposables);
        }
        void OnEnable()
        {
            MessageBroker.Default
            .Receive <SharedMessage>()
            .Where(msg => msg.Type == SharedMessage.MessageType.INIT_ASTEROIDS)
            .Subscribe(msg => {
                _asteroids = (AsteroidInfo[])msg.Context;
            }).AddTo(_disposables);

            MessageBroker.Default
            .Receive <SharedMessage>()
            .Where(msg => msg.Type == SharedMessage.MessageType.INIT_SHIP)
            .Subscribe(msg => {
                _shipInfo = (ShipInfo)msg.Context;
            }).AddTo(_disposables);
        }
        void OnEnable()
        {
            _explosions = new List<EffectInfo>();

            MessageBroker.Default
            .Receive<SharedMessage>()
            .Where(msg => msg.Type == SharedMessage.MessageType.INIT_SHIP)
            .Subscribe(msg => {
                _shipInfo = (ShipInfo) msg.Context;
            }).AddTo(_disposables);

            MessageBroker.Default
            .Receive<SharedMessage>()
            .Where(msg => msg.Type == SharedMessage.MessageType.CREATE_EXPLOSION)
            .Subscribe(msg => {
                var position = (Vector3) msg.Context;
                CreateExplosion(position);
            }).AddTo(_disposables);
        }