// --------------------------------------------------------------------------------------------------------------------
//
// 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
}
}