using AssetRipper.Assets.Metadata; using AssetRipper.SourceGenerated.Classes.ClassID_91; using AssetRipper.SourceGenerated.Extensions; using AssetRipper.SourceGenerated.Subclasses.AnimatorControllerParameter; using AssetRipper.SourceGenerated.Subclasses.ValueConstant; using AnimatorControllerParameterType = AssetRipper.SourceGenerated.Enums.AnimatorControllerParameterType_1; namespace AssetRipper.SourceGenerated.Extensions { public static class AnimatorControllerParameterExtensions { /// /// Initialize a newly created parameter /// /// Must be a child of /// /// /// public static void Initialize(this IAnimatorControllerParameter parameter, IAnimatorController controller, int paramIndex) { IValueConstant value = controller.Controller_C91.Values.Data.ValueArray[paramIndex]; parameter.Name.CopyValues(controller.TOS_C91[value.ID]); AnimatorControllerParameterType type = value.GetTypeValue(); switch (type) { case AnimatorControllerParameterType.Trigger: parameter.DefaultBool = controller.Controller_C91.DefaultValues.Data.BoolValues[value.Index]; break; case AnimatorControllerParameterType.Bool: parameter.DefaultBool = controller.Controller_C91.DefaultValues.Data.BoolValues[value.Index]; break; case AnimatorControllerParameterType.Int: parameter.DefaultInt = controller.Controller_C91.DefaultValues.Data.IntValues[value.Index]; break; case AnimatorControllerParameterType.Float: parameter.DefaultFloat = controller.Controller_C91.DefaultValues.Data.FloatValues[value.Index]; break; default: throw new NotSupportedException($"Parameter type '{type}' isn't supported"); } parameter.Type = (int)type; if (parameter.Has_Controller()) { parameter.Controller.CopyValues(controller.Collection.CreatePPtr(controller)); } } public static AnimatorControllerParameterType GetTypeValue(this IAnimatorControllerParameter parameter) { return (AnimatorControllerParameterType)parameter.Type; } } }