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; }
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); }
public virtual void UpdateCurve(float amplitude, float frequency) { Amplitude = amplitude; Frequency = frequency; Period = NiceVibrationsDemoHelpers.Remap(frequency, 0f, 1f, 1f, 4f); DrawCurve(); }
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()); }
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)); }
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++; } }
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; }
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); }
public virtual void SetPitch(float newPitch) { SpringAudioSource.pitch = newPitch; SpringHapticSource.frequencyShift = NiceVibrationsDemoHelpers.Remap(newPitch, 0.3f, 1f, -1.0f, 1.0f); }