wangguan
2020-12-29 452c75675679c44cc39b04bdb7d330d7c5c14d5c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
namespace MoreMountains.NiceVibrations
{
    [Serializable]
    public class PresetDemoItem
    {
        public string Name;
        public TextAsset AHAPFile;
        public Sprite AssociatedSprite;
        public AudioSource AssociatedSound;
        public MMNVAndroidWaveFormAsset WaveFormAsset;
        public MMNVRumbleWaveFormAsset RumbleWaveFormAsset;
    }
 
    public class PresetDemoManager : DemoManager
    {
        [Header("Image")]
        public Image IconImage;
        public Animator IconImageAnimator;
        public List<PresetDemoItem> DemoItems;
 
        protected WaitForSeconds _ahapTurnDelay;
        protected int _idleAnimationParameter;
 
        protected virtual void Awake()
        {                
            _ahapTurnDelay = new WaitForSeconds(0.02f);
            _idleAnimationParameter = Animator.StringToHash("Idle");
            IconImageAnimator.SetBool(_idleAnimationParameter, true);
        }
        
        // AHAP ------------------------------------------------------------------------------------------------
 
        public virtual void PlayAHAP(int index)
        {
            Logo.Shaking = true;
            MMVibrationManager.AdvancedHapticPattern(DemoItems[index].AHAPFile.text, 
                                                     DemoItems[index].WaveFormAsset.WaveForm.Pattern, DemoItems[index].WaveFormAsset.WaveForm.Amplitudes, -1,
                                                     DemoItems[index].RumbleWaveFormAsset.WaveForm.Pattern, DemoItems[index].RumbleWaveFormAsset.WaveForm.LowFrequencyAmplitudes,
                                                     DemoItems[index].RumbleWaveFormAsset.WaveForm.HighFrequencyAmplitudes, -1,
                                                     HapticTypes.LightImpact, this);
            DemoItems[index].AssociatedSound.Play();
            StartCoroutine(ChangeIcon(DemoItems[index].AssociatedSprite));
        }
        
        // ICON ----------------------------------------------------------------------------------------------
 
        protected virtual IEnumerator ChangeIcon(Sprite newSprite)
        {
            IconImageAnimator.SetBool(_idleAnimationParameter, false);
            yield return _ahapTurnDelay;
            IconImage.sprite = newSprite;
        }
 
        // CALLBACKS ----------------------------------------------------------------------------------------------
 
            public virtual void Test()
        {
            StartCoroutine(BackToIdle());
 
        }
 
        protected virtual void OnHapticsStopped()
        {
            StartCoroutine(BackToIdle());
        }
 
        protected virtual IEnumerator BackToIdle()
        {
            Logo.Shaking = false;
            IconImageAnimator.SetBool(_idleAnimationParameter, true);
            yield return _ahapTurnDelay;
            IconImage.sprite = DemoItems[0].AssociatedSprite;
        }
 
        protected virtual void OnHapticsError()
        {
 
        }
 
        protected virtual void OnHapticsReset()
        {
 
        }
 
        protected virtual void OnEnable()
        {
            MMNViOSCoreHaptics.OnHapticPatternStopped += OnHapticsStopped;
            MMNViOSCoreHaptics.OnHapticPatternError += OnHapticsError;
            MMNViOSCoreHaptics.OnHapticPatternReset += OnHapticsReset;
        }
 
        protected virtual void OnDisable()
        {
            MMNViOSCoreHaptics.OnHapticPatternStopped -= OnHapticsStopped;
            MMNViOSCoreHaptics.OnHapticPatternError -= OnHapticsError;
            MMNViOSCoreHaptics.OnHapticPatternReset -= OnHapticsReset;
        }
    }
}