chore: initial commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Lofelt.NiceVibrations
|
||||
{
|
||||
[Serializable]
|
||||
public class HapticClipsDemoItem
|
||||
{
|
||||
public string Name;
|
||||
public HapticClip HapticClip;
|
||||
public Sprite AssociatedSprite;
|
||||
public AudioSource AssociatedSound;
|
||||
|
||||
}
|
||||
|
||||
public class HapticClipsDemoManager : DemoManager
|
||||
{
|
||||
[Header("Image")]
|
||||
public Image IconImage;
|
||||
public Animator IconImageAnimator;
|
||||
public List<HapticClipsDemoItem> DemoItems;
|
||||
protected WaitForSeconds _iconChangeDelay;
|
||||
protected int _idleAnimationParameter;
|
||||
|
||||
protected virtual void Awake()
|
||||
{
|
||||
_iconChangeDelay = new WaitForSeconds(0.02f);
|
||||
_idleAnimationParameter = Animator.StringToHash("Idle");
|
||||
IconImageAnimator.SetBool(_idleAnimationParameter, true);
|
||||
}
|
||||
|
||||
// Haptic Clip -----------------------------------------------------------------------------
|
||||
|
||||
public virtual void PlayHapticClip(int index)
|
||||
{
|
||||
Logo.Shaking = true;
|
||||
|
||||
HapticController.fallbackPreset = HapticPatterns.PresetType.LightImpact;
|
||||
HapticController.Play(DemoItems[index].HapticClip);
|
||||
DemoItems[index].AssociatedSound.Play();
|
||||
StopAllCoroutines();
|
||||
StartCoroutine(ChangeIcon(DemoItems[index].AssociatedSprite));
|
||||
}
|
||||
|
||||
// ICON ------------------------------------------------------------------------------------
|
||||
|
||||
protected virtual IEnumerator ChangeIcon(Sprite newSprite)
|
||||
{
|
||||
IconImageAnimator.SetBool(_idleAnimationParameter, false);
|
||||
yield return _iconChangeDelay;
|
||||
IconImage.sprite = newSprite;
|
||||
}
|
||||
|
||||
// CALLBACKS -------------------------------------------------------------------------------
|
||||
|
||||
protected virtual IEnumerator BackToIdle()
|
||||
{
|
||||
Logo.Shaking = false;
|
||||
IconImageAnimator.SetBool(_idleAnimationParameter, true);
|
||||
yield return _iconChangeDelay;
|
||||
IconImage.sprite = DemoItems[0].AssociatedSprite;
|
||||
}
|
||||
|
||||
void OnHapticsStopped()
|
||||
{
|
||||
StartCoroutine(BackToIdle());
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
HapticController.PlaybackStopped -= OnHapticsStopped;
|
||||
if (HapticController.IsPlaying())
|
||||
{
|
||||
HapticController.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
HapticController.PlaybackStopped += OnHapticsStopped;
|
||||
StartCoroutine(BackToIdle());
|
||||
}
|
||||
|
||||
void OnApplicationFocus(bool hasFocus)
|
||||
{
|
||||
if (hasFocus)
|
||||
{
|
||||
StartCoroutine(BackToIdle());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user