123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- using System;
- using System.Collections.Generic;
- using UnityEngine;
- public class ViveHandAnimator : OvrHandAnimator
- {
- protected override void Start()
- {
- for (int i = 0; i < this.m_aryFingerData.Length; i++)
- {
- this.m_aryFingerData[i] = new OvrHandAnimator.FingerMorph();
- }
- List<Transform> list = new List<Transform>();
- this.FindChild(list, this.m_trRootGrasp);
- for (int j = 0; j < this.m_listRoot.Length; j++)
- {
- List<OvrHandAnimator.BonePair> list2 = new List<OvrHandAnimator.BonePair>();
- List<Transform> list3 = new List<Transform>();
- this.FindChild(list3, this.m_trFingerRoot[j]);
- using (List<Transform>.Enumerator enumerator = list3.GetEnumerator())
- {
- while (enumerator.MoveNext())
- {
- Transform trBase = enumerator.Current;
- Transform transform = list.Find((Transform a) => a.name == trBase.name);
- if (transform != null)
- {
- list2.Add(new OvrHandAnimator.BonePair(trBase, transform));
- }
- else
- {
- Debug.LogWarning("指ペアが見つかりません。" + trBase.name);
- }
- }
- }
- this.m_listRoot[j] = list2;
- }
- }
- public override void Init(AVRControllerButtons f_CtrlBtn)
- {
- this.m_CtrlBtn = f_CtrlBtn;
- }
- private void OnEnable()
- {
- this.OnChangeScreenSizeOrAA();
- }
- protected override void FindChild(List<Transform> f_list, Transform f_trParent)
- {
- for (int i = 0; i < f_trParent.childCount; i++)
- {
- this.FindChild(f_list, f_trParent.GetChild(i));
- }
- f_list.Add(f_trParent);
- }
- public override void FingerRateTarget(OvrHandAnimator.Finger f_eFinger, float f_fRate)
- {
- this.m_fTargetRate[(int)f_eFinger] = f_fRate;
- }
- protected override void FingerRateUpdate(OvrHandAnimator.Finger f_eFinger, float f_fRate)
- {
- OvrHandAnimator.FingerMorph fingerMorph = this.m_aryFingerData[(int)f_eFinger];
- fingerMorph.fTarget = f_fRate;
- float num = fingerMorph.fTarget - fingerMorph.fNow;
- float num2 = num * this.m_fEaseRate;
- fingerMorph.fNow += num2;
- List<OvrHandAnimator.BonePair> list = this.m_listRoot[(int)f_eFinger];
- for (int i = 0; i < list.Count; i++)
- {
- OvrHandAnimator.BonePair bonePair = list[i];
- bonePair.trMain.localRotation = Quaternion.Slerp(bonePair.qBackRot, bonePair.trGrasp.localRotation, fingerMorph.fNow);
- }
- }
- public void OnChangeScreenSizeOrAA()
- {
- bool flag = QualitySettings.antiAliasing == 0 && !GameMain.Instance.MainCamera.IsBloomEnabled;
- if (GameMain.Instance.VRMode && !GameMain.Instance.VRDummyMode)
- {
- flag = false;
- }
- foreach (Renderer renderer in base.transform.GetComponentsInChildren<Renderer>(true))
- {
- if (renderer == null || renderer.materials == null)
- {
- return;
- }
- foreach (Material material in renderer.materials)
- {
- if (flag)
- {
- material.EnableKeyword("UV_POS_REVERSE");
- material.DisableKeyword("UV_POS_NORMAL");
- }
- else
- {
- material.DisableKeyword("UV_POS_NORMAL");
- material.DisableKeyword("UV_POS_REVERSE");
- }
- }
- }
- }
- protected override void Update()
- {
- float triggerRate = this.m_CtrlBtn.GetTriggerRate();
- this.FingerRateTarget(OvrHandAnimator.Finger.Thumb, triggerRate);
- this.FingerRateTarget(OvrHandAnimator.Finger.Index, triggerRate);
- this.FingerRateTarget(OvrHandAnimator.Finger.Middle, triggerRate);
- this.FingerRateTarget(OvrHandAnimator.Finger.Ring, triggerRate);
- this.FingerRateTarget(OvrHandAnimator.Finger.Little, triggerRate);
- for (int i = 0; i < 5; i++)
- {
- this.FingerRateUpdate((OvrHandAnimator.Finger)i, this.m_fTargetRate[i]);
- }
- }
- }
|