Esempio n. 1
0
        public void Update()
        {
            try
            {
                if (Input.GetKeyDown(KeyCode.X))
                {
                    if (_laserIsOn)
                    {
                        _driver.SendData("z0");
                        _laserIsOn = false;
                    }
                    else
                    {
                        _driver.SendData("z1");
                        _laserIsOn = true;
                    }
                }

                if (_driver == null || _moving)
                {
                    return;
                }

                if (_chaser != null)
                {
                    if (_chaser.gameObject.activeSelf == false)
                    {
                        _chaser.gameObject.SetActive(true);
                    }
                }

                if (!_trackingActive)
                {
                    _trackingActive = true;

                    StopAllCoroutines();
                    foreach (var tracker in HistogramTrackers)
                    {
                        StartCoroutine(tracker.StartTracking());
                        StartCoroutine(tracker.TrackUpdate());
                    }
                }

                var vectors = _driver.GetMovementVectors().ToList();

                // Evaluate the overall change in position since last read from driver.
                // Could try avoiding the aggregation, but might be expensive.
                var summedVector = vectors.Aggregate(Vector3.zero, (current, vector) => current + vector);

                if (keyboardControls)
                {
                    summedVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")) * 20;
                }

                if (summedVector == Vector3.zero)
                {
                    return;
                }

                _delta += Scale(summedVector);

                if (_delta == Vector3.zero)
                {
                    return;
                }

                MoveSubject();

                if (SubjectLogger != null)
                {
                    SubjectLogger.AddVector(_subject.position, _subject.rotation);
                }
            }
            catch (Exception e)
            {
                // Do something nice here?  Prompt user with menu?
                Logger.Error("Something bad happened while trying to read movement data.", e);
            }
        }
Esempio n. 2
0
        public void InstantReplay(string saveStateFile)
        {
            var savedState = VirtualProfilerSaveState.LoadFromFile(saveStateFile);

            Global.Launcher.SaveState = savedState;
            if (Objects.ReplayController == null)
            {
                throw new ApplicationException("No replay adapter found.");
            }
            _activeReplayer = new InstantReplayer(Objects.ReplayController.LineRenderer, SubjectLogger.Load(savedState.RunSettings.SubjectPositionPath));
            Objects.ReplayController.StartReplay(_activeReplayer);
        }