Esempio n. 1
0
        private void RunWaves()
        {
            float _dist = Vector3.Distance(emitter.position, receiver.position);

            float _min = 0f;
            float _max = 1.5f;
            List <SignalPattern> _signalPatterns = new List <SignalPattern> ();

            foreach (LinkedSatDish lsd in linkedSatDishes)
            {
                LineRenderer _wave = GetWave(lsd.sateliteDish.name);
                _wave.gameObject.SetActive(true);
                float _strength = lsd.signalStrengthOffset + lsd.sateliteDish.valueX;
                _strength = Mathf.Clamp(_strength, _min, _max);
                float _speed = lsd.signalSpeedOffset + lsd.sateliteDish.valueY;
                _speed = Mathf.Clamp(_speed, _min, _max);
                int _frequency = Mathf.RoundToInt(_speed * ( float )graphFrequency);
                _frequency = Mathf.Max(10, _frequency);
                if (_wave.positionCount != _frequency)
                {
                    _wave.positionCount = _frequency;
                }

                _signalPatterns.Add(new SignalPattern(
                                        _strength,
                                        _speed
                                        ));

                float _width = _dist / ( float )_frequency;

                float     t       = Time.time * 2f;
                Vector3[] _points = new Vector3[_frequency + 1];
                for (int a = 0; a < _frequency + 1; ++a)
                {
                    _points[a]    = receiver.position;
                    _points[a].x -= a * _width;
                    _points[a].y += Mathf.Sin(a + t) * _strength;
                }
                _wave.SetPositions(_points);
            }

            ServiceStatus _serviceStatus = DATA_PACKAGE.GetServiceStatus(_signalPatterns.ToArray());

            if (_serviceStatus != null)
            {
                _serviceStatus.tmMachineId = name;
            }
            currentServiceStatus = _serviceStatus;
        }