2025-06-10 13:16:36 +00:00
|
|
|
using Godot;
|
|
|
|
using System.Reflection;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.IO;
|
|
|
|
|
|
|
|
namespace Rokojori
|
|
|
|
{
|
|
|
|
[Tool]
|
|
|
|
[GlobalClass]
|
|
|
|
public partial class ShaderRawModule:ShaderGenerationModule
|
|
|
|
{
|
2025-09-17 08:25:03 +00:00
|
|
|
|
2025-06-10 13:16:36 +00:00
|
|
|
[Export]
|
|
|
|
public string value;
|
|
|
|
|
|
|
|
[Export]
|
|
|
|
public ShaderPhase phase;
|
|
|
|
|
|
|
|
[Export]
|
|
|
|
public bool matchPhase = false;
|
|
|
|
|
|
|
|
public ShaderRawModule( string value, ShaderPhase? phase = null )
|
|
|
|
{
|
2025-09-17 08:25:03 +00:00
|
|
|
sortableCode = false;
|
|
|
|
|
2025-06-10 13:16:36 +00:00
|
|
|
if ( phase != null )
|
|
|
|
{
|
|
|
|
phase = (ShaderPhase) phase;
|
|
|
|
matchPhase = true;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
matchPhase = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
this.value = value;
|
|
|
|
}
|
|
|
|
|
2025-09-17 08:25:03 +00:00
|
|
|
public override List<ShaderVariant> GetVariants( ShaderGenerationContext context )
|
2025-06-10 13:16:36 +00:00
|
|
|
{
|
|
|
|
if ( matchPhase && context.phase != phase )
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2025-09-17 08:25:03 +00:00
|
|
|
return ToVariants( ToCode( value ) );
|
2025-06-10 13:16:36 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|