using Godot; using System.Collections.Generic; namespace Rokojori; [Tool,GlobalClass] public partial class CustomLineMaterialPreset:LineMaterialPreset { [Export( PropertyHint.Range, "0.001,128")] public float lodBias = 1; [Export] public Material material; [Export] public GeometryInstance3D.ShadowCastingSetting shadows = GeometryInstance3D.ShadowCastingSetting.On; [Export] public LineVFXShaderSetup shaderSetup; public override void CreateMaterial( LineVFX lineVFX, MeshInstance3D mi ) { for ( int i = 0; i < mi.GetSurfaceOverrideMaterialCount(); i++ ) { mi.SetSurfaceOverrideMaterial( i, material ); } mi.LodBias = lodBias; mi.CastShadow = shadows; } public override void SetPointData( LineVFX lineVFX, MeshInstance3D mi, LinePointData data, bool start ) { if ( start ) { shaderSetup.start.Set( mi, data ); } else { shaderSetup.end.Set( mi, data ); } } public override void SetLineLength( LineVFX lineVFX, MeshInstance3D mi, float length ) { shaderSetup.lineLength.SetInstance( mi, length ); } }