示例#1
0
        public void OnEndDrag(PointerEventData eventData)
        {
            if (!DrawEnabled)
            {
                return;
            }

            _lineRenderer = null;

            OnNewLines?.Invoke(this, _localLines);
        }
        private void Update()
        {
            if (DrawOn && !_isDrawing)
            {
                _worldLines.Add(new List <Vector3>());
                _surfaceLines.Add(new List <Vector3>());

                _worldLineRenderer              = new GameObject().AddComponent <LineRenderer>();
                _worldLineRenderer.startWidth   = _worldLineRenderer.endWidth = 0.02f;
                _surfaceLineRenderer            = new GameObject().AddComponent <LineRenderer>();
                _surfaceLineRenderer.startWidth = _surfaceLineRenderer.endWidth = 0.02f;
            }

            if (DrawOn)
            {
                if (!AddWorldPoint(TargetPosition.position))
                {
                    print("Unable to add new point");
                }
                else
                {
                    var world = _worldLines.Last();
                    _worldLineRenderer.positionCount = world.Count;
                    _worldLineRenderer.SetPositions(world.ToArray());

                    var surface = _surfaceLines.Last();
                    _surfaceLineRenderer.positionCount = surface.Count;
                    _surfaceLineRenderer.SetPositions(surface.ToArray());
                }
            }

            if (!DrawOn && _isDrawing)
            {
                _worldLineRenderer   = null;
                _surfaceLineRenderer = null;

                OnNewLines?.Invoke(this, _worldLines);
            }

            _isDrawing = DrawOn;
        }
        public async void Start(string logDirectory)
        {
            if (_running)
            {
                return;
            }
            var startingPoint = GetStartingPoint(logDirectory);

            foreach (var logReader in _logWatchers)
            {
                logReader.Start(startingPoint, logDirectory);
            }
            _running = true;
            _stop    = false;
            var newLines = new SortedList <DateTime, List <LogLine> >();

            while (!_stop)
            {
                await Task.Factory.StartNew(() =>
                {
                    foreach (var logReader in _logWatchers)
                    {
                        var lines = logReader.Collect();
                        foreach (var line in lines)
                        {
                            if (!newLines.TryGetValue(line.Time, out var logLines))
                            {
                                newLines.Add(line.Time, logLines = new List <LogLine>());
                            }
                            logLines.Add(line);
                        }
                    }
                });

                OnNewLines?.Invoke(new List <LogLine>(newLines.Values.SelectMany(x => x)));
                newLines.Clear();
                await Task.Delay(UpdateDelay);
            }
            _running = false;
        }
        public async void Start()
        {
            if (!_running)
            {
                DateTime startingRow = GetStartingRow();
                foreach (var logFileMonitor in _logFileMonitors)
                {
                    logFileMonitor.Begin(startingRow);
                }
                _running = true;
                _stop    = false;
                var newLines = new SortedList <DateTime, List <LogEntry> >();
                while (!_stop)
                {
                    await Task.Factory.StartNew(() =>
                    {
                        foreach (var logFileMonitor in _logFileMonitors)
                        {
                            var lines = logFileMonitor.Collect();
                            foreach (var line in lines)
                            {
                                if (!newLines.TryGetValue(line.Time, out var logEntries))
                                {
                                    newLines.Add(line.Time, logEntries = new List <LogEntry>());
                                }
                                logEntries.Add(line);
                            }
                        }
                    });

                    var linesToHandle = new List <LogEntry>(newLines.Values.SelectMany(x => x));
                    OnNewLines?.Invoke(linesToHandle);
                    newLines.Clear();
                    await Task.Delay(Config.LogFileUpdateDelay());
                }

                _running = false;
            }
        }