rj-action-library/Runtime/Shading/Generators/Spatial/UV/UVModule.cs

45 lines
925 B
C#
Raw Normal View History

using Godot;
using System.Reflection;
using System.Collections.Generic;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class UVModule:ShaderGenerationModule
{
[Export]
public UVScaleOffset uvScaleOffset = new UVScaleOffset();
[Export]
public UVModifier[] modifiers = [];
2025-09-17 08:25:03 +00:00
public override List<ShaderVariant> GetVariants( ShaderGenerationContext context )
{
2025-09-17 08:25:03 +00:00
var list = new List<ShaderVariant>();
var allModifiers = Lists.From( modifiers ).FilterNulls();
if ( uvScaleOffset != null )
{
allModifiers.Insert( 0, uvScaleOffset );
}
allModifiers.ForEach(
( m )=>
{
2025-09-17 08:25:03 +00:00
var variants = m.GetVariants( context );
2025-09-17 08:25:03 +00:00
if ( variants == null )
{
return;
}
2025-09-17 08:25:03 +00:00
list = ShaderVariant.CombineVariants( list, variants );
}
);
return list;
}
}
}