private void Awake()
        {
            _user             = StreamClient.Instance;
            _webclientManager = WebClientManager.Instance as WebClientManager;
            _link             = GetComponentInParent <Link>();
            _animator         = GetComponent <Animator>();

            Observable.Merge(
                _user.SelectedIdRx,
                _user.SelectedTypeRx.Select(v => 0),
                _user.ZenModeRx.Select(v => 0),
                _user.LookingAtIdRx,
                _user.LookingAtTypeRx.Select(v => 0)
                )
            .TakeUntilDestroy(this)
            .BatchFrame()
            .ObserveOnMainThread()
            .Subscribe(_ => UpdateOutline());


            WebClient.AllModelChange()
            .TakeUntilDisable(this)
            .Where(ev => ev.ChangedProperties.Contains("Owner"))
            .ObserveOnMainThread()
            .Subscribe(ev => SearchCurrentWebclient());

            Observable.Merge(WebClient.ModelCreated(), WebClient.ModelDestroyed())
            .TakeUntilDisable(this)
            .Subscribe(m => SearchCurrentWebclient());
            SearchCurrentWebclient();
        }
Пример #2
0
        private void OnEnable()
        {
            _cam        = Camera.main.transform;
            _user       = StreamClient.Instance;
            _links      = LinkManager.Instance as LinkManager;
            _plots      = PlotManager.Instance as PlotManager;
            _webclients = WebClientManager.Instance as WebClientManager;

            // use timeout when creating links
            Link.AllModelChange()
            .Where(ev => ev.Model.CreatedBy == _user.Id && ev.ChangedProperties.Contains("CreatedBy"))
            .Subscribe(ev =>
            {
                _isCreatingLink = true;
                ResetProgress();
                ev.Model.CreatedByRx
                .Where(v => v < 0)
                .Take(1)
                .Delay(TimeSpan.FromSeconds(1))
                .Subscribe(v => _isCreatingLink = false, () => _isCreatingLink = false);
            });

            _user.LookingAtIdRx
            .TakeUntilDisable(this)
            .ObserveOnMainThread()
            .Subscribe(_ => ResetProgress());

            _user.LookingAtTypeRx
            .TakeUntilDisable(this)
            .ObserveOnMainThread()
            .Subscribe(_ => ResetProgress());

            Link.AllModelChange()
            .TakeUntilDisable(this)
            .Where(ev => ev.Model.CreatedBy == _user.Id)
            .Subscribe(_ => ResetProgress());

            // disable & reset progress during zen mode
            _user.ZenModeRx
            .TakeUntilDisable(this)
            .Where(v => v && !(_tablet && _tablet.IsVoiceActive))
            .ObserveOnMainThread()
            .Subscribe(_ => ResetProgress());

            Plot.AllModelChange()
            .TakeUntilDisable(this)
            .Where(ev => ev.ChangedProperties.Contains("BoundTo") && _tablet != null && ev.Model.BoundTo == _tablet.Id)
            .Subscribe(_ => ResetProgress());


            WebClient.AllModelChange()
            .TakeUntilDisable(this)
            .Where(ev => ev.ChangedProperties.Contains("Owner"))
            .Subscribe(ev => SearchCurrentTablet());

            Observable.Merge(WebClient.ModelCreated(), WebClient.ModelDestroyed())
            .TakeUntilDisable(this)
            .Subscribe(m => SearchCurrentTablet());
        }
Пример #3
0
        private void OnEnable()
        {
            _user       = StreamClient.Instance;
            _webclients = WebClientManager.Instance as WebClientManager;

            _image = GetComponent <Image>();
            _originalImageColor = _image.color;


            WebClient.AllModelChange()
            .TakeUntilDisable(this)
            .Where(ev => ev.ChangedProperties.Contains("Owner"))
            .Subscribe(ev => SearchCurrentTablet());
        }
Пример #4
0
        private void Awake()
        {
            _user       = StreamClient.Instance;
            _webclients = WebClientManager.Instance as WebClientManager;

            WebClient.AllModelChange()
            .TakeUntilDestroy(this)
            .Where(ev => ev.ChangedProperties.Contains("Owner"))
            .Subscribe(ev => SearchCurrentTablet());

            Observable.Merge(WebClient.ModelCreated(), WebClient.ModelDestroyed())
            .TakeUntilDestroy(this)
            .Subscribe(m => SearchCurrentTablet());

            UpdateCursor();
        }
Пример #5
0
    private void Awake()
    {
        _webclients = WebClientManager.Instance as WebClientManager;

        _user = StreamClient.Instance;
        _user.ZenModeRx
        .TakeUntilDestroy(this)
        .ObserveOnMainThread()
        .Subscribe(val => gameObject.SetActive(!val));

        WebClient.AllModelChange()
        .TakeUntilDisable(this)
        .Where(ev => ev.ChangedProperties.Contains("Owner"))
        .Subscribe(ev => SearchCurrentWebclient());

        Observable.Merge(WebClient.ModelCreated(), WebClient.ModelDestroyed())
        .TakeUntilDisable(this)
        .Subscribe(m => SearchCurrentWebclient());
    }
Пример #6
0
        private void OnEnable()
        {
            _cam = Camera.main.transform;
            WebServerConnection.ServerMessagesAsync
            .TakeUntilDisable(this)
            .Where(p => p.channel == NetworkChannel.CONTROL)
            .Where(p => p.command == "action")
            .ObserveOnMainThread()
            .Subscribe(p => OnUserAction(p.payload));


            _client           = StreamClient.Instance;
            _webclientManager = WebClientManager.Instance as WebClientManager;

            WebClient.AllModelChange()
            .TakeUntilDisable(this)
            .Where(ev => ev.ChangedProperties.Contains("Owner"))
            .Subscribe(ev => SearchCurrentWebclient());

            Observable.Merge(WebClient.ModelCreated(), WebClient.ModelDestroyed())
            .TakeUntilDisable(this)
            .Subscribe(m => SearchCurrentWebclient());

            _client.ModelChange()
            .TakeUntilDisable(this)
            .Where(changes => changes.Contains("IndicatorPosition"))
            .ObserveOnMainThread()
            .Subscribe(_ => SetPosition());
            SetPosition();

            _client.ZenModeRx
            .TakeUntilDisable(this)
            .ObserveOnMainThread()
            .Subscribe(_ => UpdateScreenIndicators());

            SearchCurrentWebclient();
            ClearTextIcons();
        }
Пример #7
0
        private void OnEnable()
        {
            _link = GetComponentInParent <Link>();

            var links = LinkManager.Instance;

            _user = StreamClient.Instance;



            _webclientManager = WebClientManager.Instance as WebClientManager;

            WebClient.AllModelChange()
            .TakeUntilDisable(this)
            .Where(ev => ev.ChangedProperties.Contains("Owner"))
            .Subscribe(ev => SearchCurrentWebclient());

            Observable.Merge(WebClient.ModelCreated(), WebClient.ModelDestroyed())
            .TakeUntilDisable(this)
            .Subscribe(m => SearchCurrentWebclient());
            SearchCurrentWebclient();


            Observable.Merge(
                Link.AllModelChange().Where(ev => ev.ChangedProperties.Contains("CreatedBy")).Select(ev => ev.Model),
                Link.ModelDestroyed()
                )
            .TakeUntilDisable(this)
            .Subscribe(_ =>
            {
                _isUserCreatingLine = links.Get().Any(l => l.CreatedBy == _user.Id);
                // workaround because hololens thinks user is standing in line??
                _isUserStandingInLine = false;
                UpdateTransparency();
            });
        }
Пример #8
0
        private void OnEnable()
        {
            _cam        = Camera.main.transform;
            _plot       = GetComponent <Plot>();
            _origin     = OriginCoordinateSystem.Instance;
            _webClients = Manager <WebClient> .Instance;
            _connection = WebServerConnection.Instance;
            _user       = StreamClient.Instance;


            WebClient.AllModelChange()
            .TakeUntilDisable(this)
            .Where(ev => ev.ChangedProperties.Contains("Owner"))
            .Subscribe(ev => SearchCurrentWebclient());

            Observable.Merge(WebClient.ModelCreated(), WebClient.ModelDestroyed())
            .TakeUntilDisable(this)
            .Subscribe(m => SearchCurrentWebclient());
            SearchCurrentWebclient();



            _plot.LockedToAxisRx
            .TakeUntilDisable(this)
            .Subscribe(isLocked =>
            {
                if (isLocked)
                {
                    LockAlignment();
                }
                else
                {
                    UnlockAlignment();
                }
            });

            _plot.BoundToRx
            .TakeUntilDisable(this)
            .Where(boundTo => boundTo >= 0)
            .Select(_ => _webClients.Get(_plot.BoundTo))
            .Where(client => client != null && client.Owner == _user.Id)
            .Subscribe(client =>
            {
                // TODO: Workaround for newly created scatterplots
                if (_plot.Position != Vector3.zero || _plot.Rotation != Quaternion.identity)
                {
                    _plot.PositioningOffset = Vector3.Distance(_plot.transform.position, _cam.position);
                }
                else
                {
                    _plot.Position = _origin.transform.InverseTransformPoint(_cam.position + _cam.forward * _plot.PositioningOffset);
                }

                _plot.IsPositioning = true;
                _wasPositioning     = true;

                _plot.ActualPosition = _plot.Position;
                _plot.ActualRotation = _plot.Rotation;

                UpdatePosition(client);

                Observable.EveryFixedUpdate()
                .TakeUntilDisable(this)
                .TakeWhile(_ => client != null && client.Id == _plot.BoundTo && client.Owner == _user.Id)
                .Subscribe(
                    _ => UpdatePosition(client),
                    () => _plot.IsPositioning = false);
            });
        }