public void Present(PacketPb data, ICSConverter converter) { MainThreadInvoker.Enqueue(() => _info.Clear()); IEnumerable <ICloudItem> objects = Pkg2Pts(data, converter).ToArray(); MainThreadInvoker.Enqueue(() => _info.Render((data.Message, objects))); }
public override void Update(float delta) { if (_threadWorker == null) { return; } if (_playing) { if (CurrentPosition == AmountOfFrames - 1) { MainThreadInvoker.Enqueue(() => Finished?.Invoke()); _playing = false; return; } NextKeyFrame(); } else if (_rewindPlannedPos > 0) { Rewind?.Invoke(true); _currentPosition = _rewindPlannedPos; _rewindPlannedPos = -1; _threadWorker?.Enqueue(() => { _data.ShowAt(_actualTimestamps ![_currentPosition], true); Rewind?.Invoke(false); });
public void Clear() { lock (GameObjects) { GameObjects.Clear(); if (MainThreadInvoker.Instance != null) { MainThreadInvoker.Enqueue(() => ObservationsPool?.DespawnAllActiveObjects()); } } }
public void CreateWindow <TComponent>(string title, Action <TComponent, Window> callback, params object[] titleFormatArgs) { MainThreadInvoker.Enqueue(() => { var prefab = RendererWindowsPrefabs.First(g => g.GetComponent <TComponent>() != null); var go = Instantiate(prefab, Canvas); var window = go.GetComponent <Window>(); window.TitleLabel.SetLocalizedText(title, titleFormatArgs); SetManager(window); go.SetActive(false); Windows.Add(window); callback(go.GetComponent <TComponent>(), window); }); }
private void DestroyObsoleteWindows(object container, RemovedEventArgs args) { foreach (var id in args.RemovedIds) { var v = _pinnedViewers.FirstOrDefault(w => w.ObservationContainer == container.GetHashCode() && w.ObservationId == id); if (v != null) { MainThreadInvoker.Enqueue(() => { Destroy(v.gameObject); _pinnedViewers.Remove(v); }); } } }
private void Start() { #if UNITY_EDITOR if (ModeSelector.Mode == Mode.Online) { Plugins = PluginsLoader.Plugins.Value .OfType <IDataSourcePluginOnline>() .Select(p => (IElektronikPlugin)p) .ToList() .AsReadOnly(); } #endif ScreenLocker.SetActive(true); foreach (var dataSource in Plugins.OfType <IDataSourcePlugin>()) { dataSource.Converter = Converter; DataSourcesManager.AddDataSource(dataSource.Data); } foreach (var dataSource in Plugins.OfType <IDataSourcePluginOffline>()) { PlayerEvents.SetDataSource(dataSource); } foreach (var plugin in Plugins) { var thread = new Thread(() => plugin.Start()); thread.Start(); _startupThreads.Add(thread); } PluginsStarted += () => ScreenLocker.SetActive(false); Task.Run(() => { foreach (var thread in _startupThreads) { thread.Join(); } MainThreadInvoker.Enqueue(() => PluginsStarted?.Invoke()); }); }
public void SetHeader(string[] header) { MainThreadInvoker.Enqueue(() => { Table.Clear(); var rect = (RectTransform)transform; foreach (var columnName in header) { var column = Table.Add().GetComponent <TableColumn>(); column.MaxAmountOfRows = MaxAmountOfRows; column.SetHeader(columnName); column.Window = rect; _columns.Add(column); } rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, rect.sizeDelta.x + 1); }); }
public override void Start() { _containerTree.DisplayName = $"Protobuf: {Path.GetFileName(TypedSettings.FilePath)}"; _input = File.OpenRead(TypedSettings.FilePath !); Converter?.SetInitTRS(Vector3.zero, Quaternion.identity); _parsersChain.SetConverter(Converter); _frames = new FramesCollection <Frame>(ReadCommands, TryGetSize()); _threadWorker = new ThreadQueueWorker(); _timer = new Timer(DelayBetweenFrames); _timer.Elapsed += (_, __) => { _threadWorker.Enqueue(() => { if (NextFrame()) { return; } _timer?.Stop(); MainThreadInvoker.Enqueue(() => Finished?.Invoke()); }); }; }
private IEnumerator CheckCollisionCoroutine() { while (true) { var mousePosition = Mouse.current.position.ReadValue(); var ray = _camera.ScreenPointToRay(mousePosition); Task.Run(() => { var collision = CollisionCloud.FindCollided(ray); if (collision.HasValue) { MainThreadInvoker.Enqueue( () => ProcessRaycast(collision.Value.container, collision.Value.item, mousePosition)); } else { MainThreadInvoker.Enqueue(HideViewer); } }); yield return(new WaitForSeconds(CollisionCheckTimeout)); } // ReSharper disable once IteratorNeverReturns }
public void Compute(MonoBehaviour settings, IClusterizationAlgorithm algorithm) { var pair = _clusterableContainers[ContainersSelector.value]; var list = (pair.container as IClusterable) !.GetAllPoints().ToList(); Task.Run(() => { try { var data = algorithm.Compute(list); var clustered = CreateClustersContainers(pair.name, data, pair.container as IVisible); MainThreadInvoker.Enqueue(() => { DataSourcesManager.AddDataSource(clustered); settings.enabled = true; }); } catch (Exception e) { Debug.LogException(e); MainThreadInvoker.Enqueue(() => { settings.enabled = true; }); } }); }
public void Clear() { MainThreadInvoker.Enqueue(() => _info?.Clear()); }