using UnityEngine; namespace LitMotion.Extensions { /// /// Provides binding extension methods for Material. /// public static class LitMotionMaterialExtensions { /// /// Create a motion data and bind it to a material property. /// /// The type of special parameters given to the motion data /// The type of adapter that support value animation /// This builder /// /// Handle of the created motion data. public static MotionHandle BindToMaterialFloat(this MotionBuilder builder, Material material, string name) where TOptions : unmanaged, IMotionOptions where TAdapter : unmanaged, IMotionAdapter { Error.IsNull(material); return builder.BindWithState(material, name, static (x, m, n) => { m.SetFloat(n, x); }); } /// /// Create a motion data and bind it to a material property. /// /// The type of special parameters given to the motion data /// The type of adapter that support value animation /// This builder /// /// Handle of the created motion data. public static MotionHandle BindToMaterialFloat(this MotionBuilder builder, Material material, int nameID) where TOptions : unmanaged, IMotionOptions where TAdapter : unmanaged, IMotionAdapter { Error.IsNull(material); return builder.BindWithState(material, (x, m) => { m.SetFloat(nameID, x); }); } /// /// Create a motion data and bind it to a material property. /// /// The type of special parameters given to the motion data /// The type of adapter that support value animation /// This builder /// /// Handle of the created motion data. public static MotionHandle BindToMaterialInt(this MotionBuilder builder, Material material, string name) where TOptions : unmanaged, IMotionOptions where TAdapter : unmanaged, IMotionAdapter { Error.IsNull(material); return builder.BindWithState(material, name, static (x, m, n) => { m.SetInteger(n, x); }); } /// /// Create a motion data and bind it to a material property. /// /// The type of special parameters given to the motion data /// The type of adapter that support value animation /// This builder /// /// Handle of the created motion data. public static MotionHandle BindToMaterialInt(this MotionBuilder builder, Material material, int nameID) where TOptions : unmanaged, IMotionOptions where TAdapter : unmanaged, IMotionAdapter { Error.IsNull(material); return builder.BindWithState(material, (x, m) => { m.SetInteger(nameID, x); }); } /// /// Create a motion data and bind it to a material property. /// /// The type of special parameters given to the motion data /// The type of adapter that support value animation /// This builder /// /// Handle of the created motion data. public static MotionHandle BindToMaterialColor(this MotionBuilder builder, Material material, string name) where TOptions : unmanaged, IMotionOptions where TAdapter : unmanaged, IMotionAdapter { Error.IsNull(material); return builder.BindWithState(material, name, static (x, m, n) => { m.SetColor(n, x); }); } /// /// Create a motion data and bind it to a material property. /// /// The type of special parameters given to the motion data /// The type of adapter that support value animation /// This builder /// /// Handle of the created motion data. public static MotionHandle BindToMaterialColor(this MotionBuilder builder, Material material, int nameID) where TOptions : unmanaged, IMotionOptions where TAdapter : unmanaged, IMotionAdapter { Error.IsNull(material); return builder.BindWithState(material, (x, m) => { m.SetColor(nameID, x); }); } } }