Beispiel #1
0
 public virtual void UpdateContinuousAmplitude(float newAmplitude)
 {
     ContinuousAmplitude = newAmplitude;
     AmplitudeProgressBar.UpdateBar(ContinuousAmplitude, 0f, 1f);
     ContinuousAmplitudeText.text = NiceVibrationsDemoHelpers.Round(newAmplitude, 2).ToString();
     UpdateContinuous();
 }
Beispiel #2
0
 public virtual void UpdateContinuousFrequency(float newFrequency)
 {
     ContinuousFrequency = newFrequency;
     FrequencyProgressBar.UpdateBar(ContinuousFrequency, 0f, 1f);
     ContinuousFrequencyText.text = NiceVibrationsDemoHelpers.Round(newFrequency, 2).ToString();
     UpdateContinuous();
 }
Beispiel #3
0
 public virtual void UpdateEmphasisFrequency(float newFrequency)
 {
     EmphasisFrequency          = newFrequency;
     EmphasisFrequencyText.text = NiceVibrationsDemoHelpers.Round(newFrequency, 2).ToString();
     FrequencyProgressBar.UpdateBar(EmphasisFrequency, 0f, 1f);
     TargetCurve.UpdateCurve(EmphasisAmplitude, EmphasisFrequency);
 }
Beispiel #4
0
 protected virtual void UpdateContinuousDemo()
 {
     if (_timeLeft > 0f)
     {
         ContinuousProgressBar.UpdateBar(_timeLeft, 0f, ContinuousDuration);
         _timeLeft       -= Time.deltaTime;
         Logo.Shaking     = true;
         TargetCurve.Move = true;
         Logo.Amplitude   = NiceVibrationsDemoHelpers.Remap(ContinuousAmplitude, 0f, 1f, 1f, 8f);
         Logo.Frequency   = NiceVibrationsDemoHelpers.Remap(ContinuousFrequency, 0f, 1f, 10f, 25f);
     }
     else
     {
         ContinuousProgressBar.UpdateBar(0f, 0f, ContinuousDuration);
         Logo.Shaking     = false;
         TargetCurve.Move = false;
         if (_continuousActive)
         {
             HapticController.Stop();
         }
     }
     if ((_frequencyLastFrame != ContinuousFrequency) || (_amplitudeLastFrame != ContinuousAmplitude))
     {
         TargetCurve.UpdateCurve(ContinuousAmplitude, ContinuousFrequency);
     }
     _amplitudeLastFrame = ContinuousAmplitude;
     _frequencyLastFrame = ContinuousFrequency;
 }
Beispiel #5
0
        protected virtual void Update()
        {
            if (!Active)
            {
                Dragging     = false;
                _image.color = InactiveColor;
                return;
            }
            else
            {
                _image.color = ActiveColor;
            }

            if (!Dragging)
            {
                return;
            }

            Vector2 v1 = Vector2.down;
            Vector2 v2 = this.transform.position - GetWorldPosition(_pointerEventData.position);

            float angle = Vector2.SignedAngle(v1, v2);

            angle = Mathf.Clamp(angle, -130f, 130f);

            _rotation.z = NiceVibrationsDemoHelpers.Remap(angle, -130f, 130f, MaximumAngle, MinimumAngle);
            _rectTransform.SetPositionAndRotation(this.transform.position, Quaternion.Euler(_rotation));

            Value = NiceVibrationsDemoHelpers.Remap(angle, -130f, 130f, 1f, 0f);
        }
Beispiel #6
0
 public virtual void UpdateCurve(float amplitude, float frequency)
 {
     Amplitude = amplitude;
     Frequency = frequency;
     Period    = NiceVibrationsDemoHelpers.Remap(frequency, 0f, 1f, 1f, 4f);
     DrawCurve();
 }
Beispiel #7
0
        protected virtual void DrawCurve()
        {
            _startPosition    = StartPoint.transform.position;
            _startPosition.z -= 0.1f;
            _endPosition      = EndPoint.transform.position;
            _endPosition.z   -= 0.1f;

            Points.Clear();

            for (int i = 0; i < PointsCount; i++)
            {
                float t        = NiceVibrationsDemoHelpers.Remap(i, 0, PointsCount, 0f, 1f);
                float sinValue = MMSignal.GetValue(t, MMSignal.SignalType.Sine, 1f, AmplitudeFactor, Period, 0f, false);

                if (Move)
                {
                    sinValue = MMSignal.GetValue(t + Time.time * MovementSpeed, MMSignal.SignalType.Sine, 1f, AmplitudeFactor, Period, 0f, false);
                }

                _workPoint.x = Mathf.Lerp(_startPosition.x, _endPosition.x, t);
                _workPoint.y = sinValue * Amplitude + _startPosition.y;
                _workPoint.z = _startPosition.z;
                Points.Add(_workPoint);
            }

            _targetLineRenderer.positionCount = PointsCount;
            _targetLineRenderer.SetPositions(Points.ToArray());
        }
Beispiel #8
0
        public virtual void SetValue(float value)
        {
            SetRotation(MinimumAngle);
            Value = value;
            float angle = NiceVibrationsDemoHelpers.Remap(value, 0f, 1f, MinimumAngle, MaximumAngle);

            _rotation.z = angle;
            _rectTransform.SetPositionAndRotation(this.transform.position, Quaternion.Euler(_rotation));
        }
Beispiel #9
0
        protected virtual void Start()
        {
            _canvas = GetComponentInParent <Canvas>();

            float horizontalF = (ContentZone.rect.width - 2 * Padding) / (PrefabSize.x + Margin);
            float verticalF   = (ContentZone.rect.height - 2 * Padding) / (PrefabSize.y + Margin);
            int   horizontal  = Mathf.FloorToInt(horizontalF);
            int   vertical    = Mathf.FloorToInt(verticalF);

            float centerH = (ContentZone.rect.width - (Padding * 2) - (horizontal * PrefabSize.x) - (horizontal - 1) * Margin) / 2f;
            float centerV = (ContentZone.rect.height - (Padding * 2) - (vertical * PrefabSize.x) - (vertical - 1) * Margin) / 2f;

            Buttons = new List <WobbleButton>();

            for (int i = 0; i < horizontal; i++)
            {
                for (int j = 0; j < vertical; j++)
                {
                    _position.x = centerH + Padding + PrefabSize.x / 2f + i * (PrefabSize.x + Margin);
                    _position.y = centerV + Padding + PrefabSize.y / 2f + j * (PrefabSize.y + Margin);
                    _position.z = 0f;

                    WobbleButton button = Instantiate(WobbleButtonPrefab);
                    button.transform.SetParent(ContentZone.transform);
                    Buttons.Add(button);

                    RectTransform rectTransform = button.GetComponent <RectTransform>();
                    rectTransform.anchorMin     = Vector2.zero;
                    rectTransform.anchorMax     = Vector2.zero;
                    button.name                 = "WobbleButton" + i + j;
                    button.transform.localScale = Vector3.one;

                    rectTransform.anchoredPosition3D = _position;
                    button.TargetCamera = ButtonCamera;
                    button.Initialization();
                }
            }

            int counter = 0;

            foreach (WobbleButton wbutton in Buttons)
            {
                float newPitch = NiceVibrationsDemoHelpers.Remap(counter, 0f, Buttons.Count, 0.3f, 1f);
                wbutton.SetPitch(newPitch);
                counter++;
            }
        }
Beispiel #10
0
        protected virtual void UpdateCar()
        {
            float targetSpeed = _carStarted ? NiceVibrationsDemoHelpers.Remap(Knob.Value, MinimumKnobValue, 1f, 0f, 1f) : 0f;

            CarSpeed = Mathf.Lerp(CarSpeed, targetSpeed, Time.deltaTime * 1f);

            CarEngineAudioSource.volume = CarSpeed;
            CarEngineAudioSource.pitch  = NiceVibrationsDemoHelpers.Remap(CarSpeed, 0f, 1f, 0.5f, 1.25f);

            LeftWheel.Rotate(CarSpeed * Time.deltaTime * WheelRotationSpeed, Space.Self);
            RightWheel.Rotate(CarSpeed * Time.deltaTime * WheelRotationSpeed, Space.Self);

            _carPosition.x        = _initialCarPosition.x + 0f;
            _carPosition.y        = _initialCarPosition.y + 10 * CarSpeed * Mathf.PerlinNoise(Time.time * 10f, CarSpeed * 10f);
            _carPosition.z        = 0f;
            CarBody.localPosition = _carPosition;
        }
Beispiel #11
0
        protected virtual IEnumerator TransitionCoroutine(int previous, int next, bool goingRight)
        {
            _position.y = Pages[previous].localPosition.y;
            _position.z = Pages[previous].localPosition.z;

            foreach (RectTransform page in Pages)
            {
                _position.x        = 1200f;
                page.localPosition = _position;
            }

            Pages[next].gameObject.SetActive(true);

            float timeSpent = 0f;

            while (timeSpent < PageTransitionDuration)
            {
                if (goingRight)
                {
                    _position.x = Mathf.Lerp(0f, -1200f, TransitionCurve.Evaluate(NiceVibrationsDemoHelpers.Remap(timeSpent, 0f, PageTransitionDuration, 0f, 1f)));
                    Pages[previous].localPosition = _position;
                    _position.x = Mathf.Lerp(1200f, 0f, TransitionCurve.Evaluate(NiceVibrationsDemoHelpers.Remap(timeSpent, 0f, PageTransitionDuration, 0f, 1f)));
                    Pages[next].localPosition = _position;
                }
                else
                {
                    _position.x = Mathf.Lerp(0f, 1200f, TransitionCurve.Evaluate(NiceVibrationsDemoHelpers.Remap(timeSpent, 0f, PageTransitionDuration, 0f, 1f)));
                    Pages[previous].localPosition = _position;
                    _position.x = Mathf.Lerp(-1200f, 0f, TransitionCurve.Evaluate(NiceVibrationsDemoHelpers.Remap(timeSpent, 0f, PageTransitionDuration, 0f, 1f)));
                    Pages[next].localPosition = _position;
                }

                timeSpent += Time.deltaTime;
                yield return(null);
            }

            Pages[previous].gameObject.SetActive(false);
        }
Beispiel #12
0
 public virtual void SetPitch(float newPitch)
 {
     SpringAudioSource.pitch           = newPitch;
     SpringHapticSource.frequencyShift = NiceVibrationsDemoHelpers.Remap(newPitch, 0.3f, 1f, -1.0f, 1.0f);
 }
Beispiel #13
0
 public virtual void UpdateContinuousDuration(float newDuration)
 {
     ContinuousDuration = newDuration;
     DurationProgressBar.UpdateBar(ContinuousDuration, 0f, 5f);
     ContinuousDurationText.text = NiceVibrationsDemoHelpers.Round(newDuration, 2).ToString();
 }