// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2023 Kybernetik //
#pragma warning disable CS0649 // Field is never assigned to, and will always have its default value.
using Unity.Collections;
using UnityEngine;
using UnityEngine.Animations;
namespace Animancer.Examples.Jobs
{
///
/// An example component that demonstrates how to use .
///
///
///
/// Since is not a component, we need this script to
/// demonstrate its use. However, in a real project you might simply integrate the contents of this class into one
/// of your existing classes.
///
///
/// Lean
///
/// https://kybernetik.com.au/animancer/api/Animancer.Examples.Jobs/SimpleLeanComponent
///
[AddComponentMenu(Strings.ExamplesMenuPrefix + "Jobs - Simple Lean")]
[HelpURL(Strings.DocsURLs.ExampleAPIDocumentation + nameof(Jobs) + "/" + nameof(SimpleLeanComponent))]
public sealed class SimpleLeanComponent : MonoBehaviour
{
/************************************************************************************************************************/
// Initialization.
/************************************************************************************************************************/
[SerializeField] private AnimancerComponent _Animancer;
[SerializeField] private Transform[] _Bones;
private SimpleLean _Lean;
/************************************************************************************************************************/
private void Awake()
{
Debug.Assert(_Bones.Length > 0, "No bones are assigned.", this);
var boneHandles = AnimancerUtilities.ConvertToTransformStreamHandles(_Bones, _Animancer.Animator);
_Lean = new SimpleLean(_Animancer.Playable, _Axis.forward, boneHandles);
}
/************************************************************************************************************************/
// Usage.
/************************************************************************************************************************/
// Set by a UI Slider.
public float Angle
{
get => _Lean.Angle;
set => _Lean.Angle = value;
}
/************************************************************************************************************************/
[SerializeField]
private Transform _Axis;
private void Update()
{
_Lean.Axis = _Axis.forward;
}
/************************************************************************************************************************/
}
}