Skip to content
Snippets Groups Projects
RendererExtensions.cs 889 B
Newer Older
  • Learn to ignore specific revisions
  • using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public static class RendererExtensions
    {
        public static IEnumerator ProgrammMaterialChange(this Renderer renderer, IEnumerable<(float delay, float lerp_time, Material new_material)> instructions, bool loop = false)
        {
            Material last_material;
    
            do
                foreach (var (delay, lerp_time, new_material) in instructions)
                {
                    yield return new WaitForSeconds(delay);
    
    
                    last_material = renderer.material;
                    for (IEnumerator<float> lerper = MathfExtensions.LerpInTime(0, 1, lerp_time)
                        ; lerper.MoveNext();)
    
                        renderer.material.Lerp(last_material, new_material , lerper.Current);
    
                        yield return null;
                    }
                }
            while (loop);
        }
    }