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(); }
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()); }
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()); }
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(); }
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()); }
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(); }
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(); }); }
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); }); }