// -------------------------------------------------------------------------------------------------------------------- // // Copyright (c) VRMADA, All rights reserved. // // -------------------------------------------------------------------------------------------------------------------- using System; using System.Collections.Generic; using UnityEngine; namespace UltimateXR.Avatar.Rig { /// /// Stores bone references of an Avatar's arm. /// [Serializable] public class UxrAvatarArm { #region Inspector Properties/Serialized Fields [SerializeField] private Transform _clavicle; [SerializeField] private Transform _upperArm; [SerializeField] private Transform _forearm; [SerializeField] private UxrAvatarHand _hand; #endregion #region Public Types & Data /// /// Gets a sequence of all the non-null transforms in the arm. /// public IEnumerable Transforms { get { if (Clavicle != null) { yield return Clavicle; } if (UpperArm != null) { yield return UpperArm; } if (Forearm != null) { yield return Forearm; } foreach (Transform transform in _hand.Transforms) { yield return transform; } } } /// /// Gets or sets the clavicle transform. /// public Transform Clavicle { get => _clavicle; set => _clavicle = value; } /// /// Gets or sets the upper arm transform. /// public Transform UpperArm { get => _upperArm; set => _upperArm = value; } /// /// Gets or sets the forearm transform. /// public Transform Forearm { get => _forearm; set => _forearm = value; } /// /// Gets or sets the hand. /// public UxrAvatarHand Hand { get => _hand; set => _hand = value; } #endregion #region Constructors & Finalizer /// /// Default constructor. /// public UxrAvatarArm() { _hand = new UxrAvatarHand(); } #endregion } }