using Godot; namespace Rokojori { public class Outline { public static readonly CachedResource shader = new CachedResource( "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Effects/Outline/Outline.gdshader" ); public static readonly ColorPropertyName albedo = ColorPropertyName.Create( "albedo" ); public static readonly FloatPropertyName size = FloatPropertyName.Create( "size" ); public static readonly FloatPropertyName sizeCloseScale = FloatPropertyName.Create( "sizeCloseScale" ); public static readonly FloatPropertyName sizeFarScale = FloatPropertyName.Create( "sizeFarScale" ); public static readonly FloatPropertyName closeDistance = FloatPropertyName.Create( "closeDistance" ); public static readonly FloatPropertyName farDistance = FloatPropertyName.Create( "farDistance" ); public static readonly FloatPropertyName opacityModulationStrength = FloatPropertyName.Create( "opacityModulationStrength" ); public static readonly FloatPropertyName opacityModulationDuration = FloatPropertyName.Create( "opacityModulationDuration" ); public static readonly FloatPropertyName opacityModulationOffset = FloatPropertyName.Create( "opacityModulationOffset" ); } public partial class OutlineMaterial:CustomMaterial { public static readonly CachedResource BoldYellow = CustomMaterial.Cached( "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Effects/Outline/Outline Bold Yellow.material" ); public static readonly CachedResource ThinWhite = CustomMaterial.Cached( "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Effects/Outline/Outline Thin White.material" ); public readonly CustomMaterialProperty albedo; public readonly CustomMaterialProperty size; public readonly CustomMaterialProperty sizeCloseScale; public readonly CustomMaterialProperty sizeFarScale; public readonly CustomMaterialProperty closeDistance; public readonly CustomMaterialProperty farDistance; public readonly CustomMaterialProperty opacityModulationStrength; public readonly CustomMaterialProperty opacityModulationDuration; public readonly CustomMaterialProperty opacityModulationOffset; public OutlineMaterial() { Shader = Outline.shader.Get(); albedo = new CustomMaterialProperty( this, Outline.albedo ); size = new CustomMaterialProperty( this, Outline.size ); sizeCloseScale = new CustomMaterialProperty( this, Outline.sizeCloseScale ); sizeFarScale = new CustomMaterialProperty( this, Outline.sizeFarScale ); closeDistance = new CustomMaterialProperty( this, Outline.closeDistance ); farDistance = new CustomMaterialProperty( this, Outline.farDistance ); opacityModulationStrength = new CustomMaterialProperty( this, Outline.opacityModulationStrength ); opacityModulationDuration = new CustomMaterialProperty( this, Outline.opacityModulationDuration ); opacityModulationOffset = new CustomMaterialProperty( this, Outline.opacityModulationOffset ); } } }