chore: initial commit
This commit is contained in:
159
Assets/Feel/NiceVibrations/Demo/_Common/Scripts/V2DemoManager.cs
Normal file
159
Assets/Feel/NiceVibrations/Demo/_Common/Scripts/V2DemoManager.cs
Normal file
@@ -0,0 +1,159 @@
|
||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
namespace Lofelt.NiceVibrations
|
||||
{
|
||||
public class V2DemoManager : MonoBehaviour
|
||||
{
|
||||
public List<RectTransform> Pages;
|
||||
public int CurrentPage = 0;
|
||||
public float PageTransitionDuration = 1f;
|
||||
public AnimationCurve TransitionCurve;
|
||||
public Color ActiveColor;
|
||||
public Color InactiveColor;
|
||||
public bool SoundActive = true;
|
||||
|
||||
protected Vector3 _position;
|
||||
protected List<Pagination> _paginations;
|
||||
protected Coroutine _transitionCoroutine;
|
||||
|
||||
|
||||
protected virtual void Start()
|
||||
{
|
||||
Initialization();
|
||||
}
|
||||
|
||||
protected virtual void Initialization()
|
||||
{
|
||||
Application.targetFrameRate = 60;
|
||||
_paginations = new List<Pagination>();
|
||||
foreach (RectTransform page in Pages)
|
||||
{
|
||||
_paginations.Add(page.GetComponentInChildren<Pagination>());
|
||||
page.gameObject.SetActive(false);
|
||||
}
|
||||
foreach (Pagination pagination in _paginations)
|
||||
{
|
||||
pagination.InitializePagination(Pages.Count);
|
||||
pagination.ActiveColor = ActiveColor;
|
||||
pagination.InactiveColor = InactiveColor;
|
||||
pagination.SetCurrentPage(Pages.Count, 0);
|
||||
}
|
||||
Pages[0].gameObject.SetActive(true);
|
||||
if (SoundActive)
|
||||
{
|
||||
AudioListener.volume = 1f;
|
||||
SoundActive = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
AudioListener.volume = 0f;
|
||||
SoundActive = false;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void PreviousPage()
|
||||
{
|
||||
if (CurrentPage > 0)
|
||||
{
|
||||
CurrentPage--;
|
||||
Transition(CurrentPage + 1, CurrentPage, false);
|
||||
SetCurrentPage();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void NextPage()
|
||||
{
|
||||
if (CurrentPage < Pages.Count - 1)
|
||||
{
|
||||
CurrentPage++;
|
||||
Transition(CurrentPage - 1, CurrentPage, true);
|
||||
SetCurrentPage();
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void SetCurrentPage()
|
||||
{
|
||||
foreach (Pagination pagination in _paginations)
|
||||
{
|
||||
pagination.SetCurrentPage(Pages.Count, CurrentPage);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void Transition(int previous, int next, bool goingRight)
|
||||
{
|
||||
HapticController.Reset();
|
||||
|
||||
if (_transitionCoroutine != null)
|
||||
{
|
||||
StopCoroutine(_transitionCoroutine);
|
||||
}
|
||||
_transitionCoroutine = StartCoroutine(TransitionCoroutine(previous, next, goingRight));
|
||||
}
|
||||
|
||||
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 TurnHapticsOn()
|
||||
{
|
||||
HapticPatterns.PlayPreset(HapticPatterns.PresetType.Success);
|
||||
}
|
||||
|
||||
public virtual void TurnHapticsOff()
|
||||
{
|
||||
HapticPatterns.PlayPreset(HapticPatterns.PresetType.Warning);
|
||||
}
|
||||
|
||||
public virtual void TurnSoundsOn()
|
||||
{
|
||||
AudioListener.volume = 1f;
|
||||
SoundActive = true;
|
||||
HapticPatterns.PlayPreset(HapticPatterns.PresetType.Success);
|
||||
}
|
||||
|
||||
public virtual void TurnSoundsOff()
|
||||
{
|
||||
AudioListener.volume = 0f;
|
||||
SoundActive = false;
|
||||
HapticPatterns.PlayPreset(HapticPatterns.PresetType.Warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user