public static bool ApplyMaterialModificationToAnimationRecording(MaterialProperty materialProp, int changedMask, Renderer target, object oldValue)
        {
            switch (materialProp.type)
            {
            case MaterialProperty.PropType.Color:
                MaterialAnimationUtility.SetupMaterialPropertyBlock(materialProp, changedMask, target);
                MaterialAnimationUtility.ApplyMaterialModificationToAnimationRecording(materialProp, (Object)target, (Color)oldValue);
                return(true);

            case MaterialProperty.PropType.Vector:
                MaterialAnimationUtility.SetupMaterialPropertyBlock(materialProp, changedMask, target);
                MaterialAnimationUtility.ApplyMaterialModificationToAnimationRecording(materialProp, (Object)target, (Color)((Vector4)oldValue));
                return(true);

            case MaterialProperty.PropType.Float:
            case MaterialProperty.PropType.Range:
                MaterialAnimationUtility.SetupMaterialPropertyBlock(materialProp, changedMask, target);
                MaterialAnimationUtility.ApplyMaterialModificationToAnimationRecording(materialProp, (Object)target, (float)oldValue);
                return(true);

            case MaterialProperty.PropType.Texture:
                if (!MaterialProperty.IsTextureOffsetAndScaleChangedMask(changedMask))
                {
                    return(false);
                }
                string name = materialProp.name + "_ST";
                MaterialAnimationUtility.SetupMaterialPropertyBlock(materialProp, changedMask, target);
                MaterialAnimationUtility.ApplyMaterialModificationToAnimationRecording(name, (Object)target, (Vector4)oldValue);
                return(true);

            default:
                return(false);
            }
        }
示例#2
0
 private void OnPropertyContextMenu(GenericMenu menu, MaterialProperty property, Renderer[] renderers)
 {
     if (this.m_Responder != null)
     {
         if (property.targets != null && property.targets.Length != 0)
         {
             if (renderers != null && renderers.Length != 0)
             {
                 List <PropertyModification> list = new List <PropertyModification>();
                 for (int i = 0; i < renderers.Length; i++)
                 {
                     Renderer target = renderers[i];
                     list.AddRange(MaterialAnimationUtility.MaterialPropertyToPropertyModifications(property, target));
                 }
                 if (this.m_Responder.IsEditable(renderers[0]))
                 {
                     this.OnPropertyContextMenu(menu, list.ToArray());
                 }
                 else
                 {
                     this.OnDisabledPropertyContextMenu(menu);
                 }
             }
         }
     }
 }
 private static bool ApplyMaterialModificationToAnimationRecording(MaterialProperty materialProp, UnityEngine.Object target, float value)
 {
     UndoPropertyModification[] array = MaterialAnimationUtility.CreateUndoPropertyModifications(1, target);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name, value, array[0]);
     UndoPropertyModification[] array2 = Undo.postprocessModifications(array);
     return(array2.Length != array.Length);
 }
示例#4
0
        public static PropertyModification[] MaterialPropertyToPropertyModifications(MaterialProperty materialProp, Renderer target)
        {
            PropertyModification[] result;
            switch (materialProp.type)
            {
            case MaterialProperty.PropType.Color:
                result = MaterialAnimationUtility.MaterialPropertyToPropertyModifications(materialProp, target, materialProp.colorValue);
                break;

            case MaterialProperty.PropType.Vector:
                result = MaterialAnimationUtility.MaterialPropertyToPropertyModifications(materialProp, target, materialProp.vectorValue);
                break;

            case MaterialProperty.PropType.Float:
            case MaterialProperty.PropType.Range:
                result = MaterialAnimationUtility.MaterialPropertyToPropertyModifications(materialProp, target, materialProp.floatValue);
                break;

            case MaterialProperty.PropType.Texture:
            {
                string name = materialProp.name + "_ST";
                result = MaterialAnimationUtility.MaterialPropertyToPropertyModifications(name, target, materialProp.vectorValue);
                break;
            }

            default:
                result = null;
                break;
            }
            return(result);
        }
        void OnPropertyContextMenu(GenericMenu menu, MaterialProperty property, Renderer[] renderers)
        {
            if (m_Responder == null)
            {
                return;
            }

            if (property.targets == null || property.targets.Length == 0)
            {
                return;
            }

            if (renderers == null || renderers.Length == 0)
            {
                return;
            }

            var modifications = new List <PropertyModification>();

            foreach (Renderer renderer in renderers)
            {
                modifications.AddRange(MaterialAnimationUtility.MaterialPropertyToPropertyModifications(property, renderer));
            }

            if (m_Responder.IsEditable(renderers[0]))
            {
                OnPropertyContextMenu(menu, modifications.ToArray());
            }
            else
            {
                OnDisabledPropertyContextMenu(menu);
            }
        }
 private static void ApplyMaterialModificationToAnimationRecording(string name, Object target, Vector4 vec)
 {
     UndoPropertyModification[] propertyModifications = MaterialAnimationUtility.CreateUndoPropertyModifications(4, target);
     MaterialAnimationUtility.SetupPropertyModification(name + ".x", vec.x, propertyModifications[0]);
     MaterialAnimationUtility.SetupPropertyModification(name + ".y", vec.y, propertyModifications[1]);
     MaterialAnimationUtility.SetupPropertyModification(name + ".z", vec.z, propertyModifications[2]);
     MaterialAnimationUtility.SetupPropertyModification(name + ".w", vec.w, propertyModifications[3]);
     UndoPropertyModification[] propertyModificationArray = Undo.postprocessModifications(propertyModifications);
 }
 private static void ApplyMaterialModificationToAnimationRecording(MaterialProperty materialProp, Object target, Color color)
 {
     UndoPropertyModification[] propertyModifications = MaterialAnimationUtility.CreateUndoPropertyModifications(4, target);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".r", color.r, propertyModifications[0]);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".g", color.g, propertyModifications[1]);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".b", color.b, propertyModifications[2]);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".a", color.a, propertyModifications[3]);
     UndoPropertyModification[] propertyModificationArray = Undo.postprocessModifications(propertyModifications);
 }
示例#8
0
 private static void ApplyMaterialModificationToAnimationRecording(string name, UnityEngine.Object target, Vector4 vec)
 {
     UndoPropertyModification[] array = MaterialAnimationUtility.CreateUndoPropertyModifications(4, target);
     MaterialAnimationUtility.SetupPropertyModification(name + ".x", vec.x, array[0]);
     MaterialAnimationUtility.SetupPropertyModification(name + ".y", vec.y, array[1]);
     MaterialAnimationUtility.SetupPropertyModification(name + ".z", vec.z, array[2]);
     MaterialAnimationUtility.SetupPropertyModification(name + ".w", vec.w, array[3]);
     Undo.postprocessModifications(array);
 }
示例#9
0
 private static void ApplyMaterialModificationToAnimationRecording(MaterialProperty materialProp, UnityEngine.Object target, Color color)
 {
     UndoPropertyModification[] array = MaterialAnimationUtility.CreateUndoPropertyModifications(4, target);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".r", color.r, array[0]);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".g", color.g, array[1]);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".b", color.b, array[2]);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".a", color.a, array[3]);
     Undo.postprocessModifications(array);
 }
示例#10
0
 private static PropertyModification[] MaterialPropertyToPropertyModifications(string name, UnityEngine.Object target, Vector4 vec)
 {
     PropertyModification[] array = MaterialAnimationUtility.CreatePropertyModifications(4, target);
     MaterialAnimationUtility.SetupPropertyModification(name + ".x", vec.x, array[0]);
     MaterialAnimationUtility.SetupPropertyModification(name + ".y", vec.y, array[1]);
     MaterialAnimationUtility.SetupPropertyModification(name + ".z", vec.z, array[2]);
     MaterialAnimationUtility.SetupPropertyModification(name + ".w", vec.w, array[3]);
     return(array);
 }
示例#11
0
 private static PropertyModification[] MaterialPropertyToPropertyModifications(MaterialProperty materialProp, UnityEngine.Object target, Color color)
 {
     PropertyModification[] array = MaterialAnimationUtility.CreatePropertyModifications(4, target);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".r", color.r, array[0]);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".g", color.g, array[1]);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".b", color.b, array[2]);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name + ".a", color.a, array[3]);
     return(array);
 }
 private static void ApplyMaterialModificationToAnimationRecording(MaterialProperty materialProp, Object target, float value)
 {
     UndoPropertyModification[] propertyModifications = MaterialAnimationUtility.CreateUndoPropertyModifications(1, target);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name, value, propertyModifications[0]);
     UndoPropertyModification[] propertyModificationArray = Undo.postprocessModifications(propertyModifications);
 }
        public static bool ApplyMaterialModificationToAnimationRecording(MaterialProperty materialProp, int changedMask, Renderer target, object oldValue)
        {
            bool result;

            switch (materialProp.type)
            {
            case MaterialProperty.PropType.Color:
            {
                MaterialAnimationUtility.SetupMaterialPropertyBlock(materialProp, changedMask, target);
                bool flag = MaterialAnimationUtility.ApplyMaterialModificationToAnimationRecording(materialProp, target, (Color)oldValue);
                if (!flag)
                {
                    MaterialAnimationUtility.TearDownMaterialPropertyBlock(target);
                }
                result = flag;
                break;
            }

            case MaterialProperty.PropType.Vector:
            {
                MaterialAnimationUtility.SetupMaterialPropertyBlock(materialProp, changedMask, target);
                bool flag = MaterialAnimationUtility.ApplyMaterialModificationToAnimationRecording(materialProp, target, (Vector4)oldValue);
                if (!flag)
                {
                    MaterialAnimationUtility.TearDownMaterialPropertyBlock(target);
                }
                result = flag;
                break;
            }

            case MaterialProperty.PropType.Float:
            case MaterialProperty.PropType.Range:
            {
                MaterialAnimationUtility.SetupMaterialPropertyBlock(materialProp, changedMask, target);
                bool flag = MaterialAnimationUtility.ApplyMaterialModificationToAnimationRecording(materialProp, target, (float)oldValue);
                if (!flag)
                {
                    MaterialAnimationUtility.TearDownMaterialPropertyBlock(target);
                }
                result = flag;
                break;
            }

            case MaterialProperty.PropType.Texture:
                if (MaterialProperty.IsTextureOffsetAndScaleChangedMask(changedMask))
                {
                    string name = materialProp.name + "_ST";
                    MaterialAnimationUtility.SetupMaterialPropertyBlock(materialProp, changedMask, target);
                    bool flag = MaterialAnimationUtility.ApplyMaterialModificationToAnimationRecording(name, target, (Vector4)oldValue);
                    if (!flag)
                    {
                        MaterialAnimationUtility.TearDownMaterialPropertyBlock(target);
                    }
                    result = flag;
                }
                else
                {
                    result = false;
                }
                break;

            default:
                result = false;
                break;
            }
            return(result);
        }
示例#14
0
 private static PropertyModification[] MaterialPropertyToPropertyModifications(MaterialProperty materialProp, UnityEngine.Object target, float value)
 {
     PropertyModification[] array = MaterialAnimationUtility.CreatePropertyModifications(1, target);
     MaterialAnimationUtility.SetupPropertyModification(materialProp.name, value, array[0]);
     return(array);
 }