using UnityEngine;
namespace Cinemachine
{
///
/// A class to get around the limitation in timeline that array members can't be animated.
/// A fixed number of slots are made available, rather than a dynamic array.
/// If you want to add more slots, just modify this code.
///
[RequireComponent(typeof(CinemachineTargetGroup))]
[ExecuteAlways]
[HelpURL(Documentation.BaseURL + "api/Cinemachine.GroupWeightManipulator.html")]
public class GroupWeightManipulator : MonoBehaviour
{
/// The weight of the group member at index 0
[Tooltip("The weight of the group member at index 0")]
public float m_Weight0 = 1;
/// The weight of the group member at index 1
[Tooltip("The weight of the group member at index 1")]
public float m_Weight1 = 1;
/// The weight of the group member at index 2
[Tooltip("The weight of the group member at index 2")]
public float m_Weight2 = 1;
/// The weight of the group member at index 3
[Tooltip("The weight of the group member at index 3")]
public float m_Weight3 = 1;
/// The weight of the group member at index 4
[Tooltip("The weight of the group member at index 4")]
public float m_Weight4 = 1;
/// The weight of the group member at index 5
[Tooltip("The weight of the group member at index 5")]
public float m_Weight5 = 1;
/// The weight of the group member at index 6
[Tooltip("The weight of the group member at index 6")]
public float m_Weight6 = 1;
/// The weight of the group member at index 7
[Tooltip("The weight of the group member at index 7")]
public float m_Weight7 = 1;
CinemachineTargetGroup m_group;
void Start()
{
m_group = GetComponent();
}
void OnValidate()
{
m_Weight0 = Mathf.Max(0, m_Weight0);
m_Weight1 = Mathf.Max(0, m_Weight1);
m_Weight2 = Mathf.Max(0, m_Weight2);
m_Weight3 = Mathf.Max(0, m_Weight3);
m_Weight4 = Mathf.Max(0, m_Weight4);
m_Weight5 = Mathf.Max(0, m_Weight5);
m_Weight6 = Mathf.Max(0, m_Weight6);
m_Weight7 = Mathf.Max(0, m_Weight7);
}
void Update()
{
if (m_group != null)
UpdateWeights();
}
void UpdateWeights()
{
var targets = m_group.m_Targets;
int last = targets.Length - 1;
if (last < 0) return; targets[0].weight = m_Weight0;
if (last < 1) return; targets[1].weight = m_Weight1;
if (last < 2) return; targets[2].weight = m_Weight2;
if (last < 3) return; targets[3].weight = m_Weight3;
if (last < 4) return; targets[4].weight = m_Weight4;
if (last < 5) return; targets[5].weight = m_Weight5;
if (last < 6) return; targets[6].weight = m_Weight6;
if (last < 7) return; targets[7].weight = m_Weight7;
}
}
}