123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- using Sirenix.OdinInspector;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using ChivaXR;
- using System;
- using System.Linq;
- public class AniData : SerializedMonoBehaviour
- {
- [LabelText("动画名称")]
- public string aniName;
- [LabelText("动画描述")]
- [TextArea]
- public string aniDescriptioin;
- [Header("动画数据")]
- [TypeFilter("GetFilteredTypeList")]
- public List<AnimationDriverBase> AnimationDriverDatas = new List<AnimationDriverBase>();
- public bool isRegister = false;
- public ChivaXR.Animation_State currentAniState;
- public IEnumerable<Type> GetFilteredTypeList()
- {
- var q = typeof(AnimationDriverBase).Assembly.GetTypes()
- .Where(x => !x.IsAbstract)
- .Where(x => !x.IsGenericTypeDefinition)
- .Where(x => typeof(AnimationDriverBase).IsAssignableFrom(x));
- return q;
- }
- [HorizontalGroup("AniState")]
- [Button("初始状态")]
- [GUIColor("InitStateColor")]
- public void SetInitState()
- {
- AnimationDriver.SetAniDriversState(AnimationDriverDatas.ToArray(), ChivaXR.Animation_State.initState);
- currentAniState = ChivaXR.Animation_State.initState;
- }
- [HorizontalGroup("AniState")]
- [Button("结束状态")]
- [GUIColor("FinishedStateColor")]
- public void SetFinishedState()
- {
- AnimationDriver.SetAniDriversState(AnimationDriverDatas.ToArray(), ChivaXR.Animation_State.finishedState);
- currentAniState = ChivaXR.Animation_State.finishedState;
- }
- [HideIf("isRegister")]
- [Button("注册动画信息")]
- public void RegisterData()
- {
- isRegister = AnimationManager.Instance.RegisterAniData(this);
- }
- [ShowIf("isRegister")]
- [Button("移除注册信息")]
- public void RemoveRegisterData()
- {
- isRegister = !AnimationManager.Instance.RemoveAniData(this);
- }
- public void PlayData(Action finishCallBack=null)
- {
- AnimationDriver.PlayAniDrivers(AnimationDriverDatas.ToArray(), finishCallBack);
- }
- private Color FinishedStateColor()
- {
- switch (currentAniState)
- {
- case Animation_State.finishedState:
- return new Color(0.7f, 1f, 0.7f);
- }
- return GUI.color;
- }
- private Color InitStateColor()
- {
- switch (currentAniState)
- {
- case Animation_State.initState:
- return new Color(0.7f, 1f, 0.7f);
- }
- return GUI.color;
- }
-
- /// <summary>
- /// 自动填写对应的信息
- /// </summary>
- [ContextMenu("自动填写名称及描述")]
- public void FillInInfo()
- {
- aniName = transform.name;
- aniDescriptioin = transform.name.Split('_').Length <= 1 ? transform.name : transform.name.Split('_')[1];
- }
- }
|