squash commits

This commit is contained in:
2025-01-07 18:54:46 +02:00
parent 855639487b
commit 62c0a21987
3632 changed files with 708443 additions and 999 deletions
@@ -0,0 +1,64 @@
using UnityEngine;
using UnityEngine.Events;
namespace UMA.PoseTools
{
/// <summary>
/// Auxillary slot which adds an UMAExpressionPlayer to a newly created character.
/// </summary>
public class ExpressionSlotScript : MonoBehaviour
{
public void OnCharacterBegun(UMAData umaData)
{
var expressionPlayer = umaData.GetComponent<UMAExpressionPlayer>();
if (expressionPlayer != null)
{
expressionPlayer.SlotUpdateVsCharacterUpdate++;
}
}
public void OnDnaApplied(UMAData umaData)
{
var expressionSet = umaData.umaRecipe.raceData.expressionSet;
if (expressionSet == null)
{
if (Debug.isDebugBuild)
{
Debug.LogError("Couldn't add Expressions to Race: " + umaData.umaRecipe.raceData.raceName, umaData.gameObject);
}
return;
}
var expressionPlayer = umaData.GetComponent<UMAExpressionPlayer>();
if (expressionPlayer == null)
{
expressionPlayer = umaData.gameObject.AddComponent<UMAExpressionPlayer>();
expressionPlayer.SlotUpdateVsCharacterUpdate++;
umaData.CharacterUpdated.AddListener(new UnityAction<UMAData>(umaData_OnCharacterUpdated));
}
else
{
expressionPlayer.enabled = true;
}
expressionPlayer.expressionSet = expressionSet;
expressionPlayer.umaData = umaData;
var boneHashes = expressionSet.GetAnimatedBoneHashes();
for (int i=0; i< boneHashes.Length; i++)
{
var hash = boneHashes[i];
umaData.skeleton.SetAnimatedBoneHierachy(hash);
}
}
void umaData_OnCharacterUpdated(UMAData umaData)
{
var expressionPlayer = umaData.GetComponent<UMAExpressionPlayer>();
if (expressionPlayer.SlotUpdateVsCharacterUpdate-- == 0)
{
UMAUtils.DestroySceneObject(expressionPlayer);
umaData.CharacterUpdated.RemoveListener(new UnityAction<UMAData>(umaData_OnCharacterUpdated));
return;
}
}
}
}