rj-action-library/Runtime/Shading/Generators/Spatial/Geometry/GeometryModule.cs

38 lines
865 B
C#
Raw Normal View History

2025-09-17 08:25:03 +00:00
using Godot;
using System.Reflection;
using System.Collections.Generic;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class GeometryModule:ShaderGenerationModule
{
[Export]
public GeometryModifier[] modifiers = [];
public override List<ShaderVariant> GetVariants( ShaderGenerationContext context )
{
var list = new List<ShaderCode>();
var allModifiers = Lists.From( modifiers ).FilterNulls();
allModifiers.ForEach(
( m )=>
{
var offsetIndex = allModifiers.Filter( l => l.IsSameType( m ) ).IndexOf( m );
var geometryCode = m.GetGeometryCode( context, offsetIndex );
if ( geometryCode == null )
{
return;
}
list.AddRange( geometryCode );
}
);
return ToVariants( list );
}
}
}