diff options
Diffstat (limited to '')
7 files changed, 165 insertions, 0 deletions
diff --git a/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra.meta b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra.meta new file mode 100644 index 00000000..89e7b71a --- /dev/null +++ b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb62ec31ea8d451aba8a723b5f51b222 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/GestureHand.cs b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/GestureHand.cs new file mode 100644 index 00000000..9ece2b70 --- /dev/null +++ b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/GestureHand.cs @@ -0,0 +1,8 @@ +namespace GestureManager.Scripts.Extra +{ + public enum GestureHand + { + Left, + Right + } +}
\ No newline at end of file diff --git a/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/GestureHand.cs.meta b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/GestureHand.cs.meta new file mode 100644 index 00000000..bef78a32 --- /dev/null +++ b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/GestureHand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a64c1dae578847e7ac5944f19a1089d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/ModuleBase.cs b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/ModuleBase.cs new file mode 100644 index 00000000..bb4aa59f --- /dev/null +++ b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/ModuleBase.cs @@ -0,0 +1,83 @@ +using System.Collections.Generic; +using GmgAvatarDescriptor = +#if VRC_SDK_VRCSDK2 || VRC_SDK_VRCSDK3 + VRC.SDKBase.VRC_AvatarDescriptor; +#else + UnityEngine.Component; +#endif +using UnityEngine; +using UnityEngine.UIElements; + +namespace GestureManager.Scripts.Extra +{ + public abstract class ModuleBase + { + private readonly GmgAvatarDescriptor _avatarDescriptor; + + private List<string> _errorList = new List<string>(); + private List<string> _warningList = new List<string>(); + + public readonly GameObject Avatar; + public readonly Animator AvatarAnimator; + public readonly GestureManager Manager; + + protected int Right, Left; + protected bool GestureDrag; + + protected ModuleBase(GestureManager manager, GmgAvatarDescriptor avatarDescriptor) + { + _avatarDescriptor = avatarDescriptor; + + Manager = manager; + Avatar = avatarDescriptor.gameObject; + AvatarAnimator = Avatar.GetComponent<Animator>(); + } + + public abstract void Update(); + public abstract void LateUpdate(); + public abstract void InitForAvatar(); + public abstract void Unlink(); + public abstract void EditorHeader(); + public abstract void EditorContent(object editor, VisualElement element); + protected abstract void OnNewLeft(int left); + protected abstract void OnNewRight(int right); + public abstract AnimationClip GetFinalGestureByIndex(int gestureIndex); + public abstract Animator OnCustomAnimationPlay(AnimationClip clip); + public abstract bool HasGestureBeenOverridden(int gesture); + public abstract void AddGestureToOverrideController(int gestureIndex, AnimationClip newAnimation); + + public virtual bool IsInvalid() => !Avatar || !AvatarAnimator || !_avatarDescriptor; + + protected virtual List<string> CheckWarnings() => new List<string>(); + + protected virtual List<string> CheckErrors() + { + var errors = new List<string>(); + if (GestureManager.ControlledAvatars.ContainsKey(Avatar)) errors.Add("- The avatar is already controlled by another Gesture Manager!"); + if (!Avatar) errors.Add("- The GameObject has been deleted!"); + else if (!Avatar.activeInHierarchy) errors.Add("- The GameObject is disabled!"); + if (!AvatarAnimator) errors.Add("- The model doesn't have any animator!"); + if (!_avatarDescriptor) errors.Add("- The VRC_AvatarDescriptor has been deleted!"); + return errors; + } + + public bool IsValidDesc() + { + _errorList = CheckErrors(); + _warningList = CheckWarnings(); + return _errorList.Count == 0; + } + + public void OnNewHand(GestureHand hand, int i) + { + if (hand == GestureHand.Left) OnNewLeft(i); + else OnNewRight(i); + } + + public bool IsPerfectDesc() => IsValidDesc() && _warningList.Count == 0; + + public IEnumerable<string> GetErrors() => _errorList; + + public IEnumerable<string> GetWarnings() => _warningList; + } +}
\ No newline at end of file diff --git a/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/ModuleBase.cs.meta b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/ModuleBase.cs.meta new file mode 100644 index 00000000..c4f28840 --- /dev/null +++ b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/ModuleBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa66d7c17f2245a1b5b7a0f73b113582 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/TransformData.cs b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/TransformData.cs new file mode 100644 index 00000000..58d59bb8 --- /dev/null +++ b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/TransformData.cs @@ -0,0 +1,41 @@ +using UnityEngine; + +namespace GestureManager.Scripts.Extra +{ + public class TransformData + { + private readonly Vector3 _position; + private readonly Quaternion _rotation; + private readonly Vector3 _localScale; + + private TransformData(Vector3 p, Quaternion r, Vector3 s) + { + _position = p; + _rotation = r; + _localScale = s; + } + + public TransformData(Transform t) : this(t.position, t.rotation, t.localScale) + { + } + + public void AddTo(Transform t) + { + t.position += _position; + t.rotation = _rotation * t.rotation; + t.localScale += _localScale; + } + + public TransformData Difference(Transform t) => new TransformData(t.position - _position, t.rotation * Quaternion.Inverse(_rotation), t.localScale - _localScale); + } + + public static class Extensions + { + public static void ApplyTo(this Transform s, Transform t) + { + t.position = s.position; + t.rotation = s.rotation; + t.localScale = s.lossyScale; + } + } +}
\ No newline at end of file diff --git a/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/TransformData.cs.meta b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/TransformData.cs.meta new file mode 100644 index 00000000..64a62110 --- /dev/null +++ b/VRCSDK3AvatarsQuest/Assets/Resources/GestureManager/Scripts/Extra/TransformData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 290bf9bf376c43a38989c6eacea15bcd +timeCreated: 1653852193
\ No newline at end of file |