using Godot; using System.Reflection; using System.Collections.Generic; namespace Rokojori { public class ShaderGenerationContext { public ShaderPhase phase; public List variants = new List(); public ShaderGenerationContext() { variants.Add( new ShaderVariant() ); } public void Add( List code ) { if ( code == null || code.Count == 0 ) { return; } var newVariants = new List(); for ( int i = 0; i < variants.Count; i++ ) { var v = variants[ i ]; for ( int j = 0; j < code.Count; j++ ) { newVariants.Add( v.Extend( code[ j ] ) ); } } variants = newVariants; } } }