Editor/ShaderGraphPlus/ProjectCreator/ProjectTemplate.cs
namespace ShaderGraphPlus;
public class TemplateUserConfig
{
[TextArea]
[Title( "Shader Description" )]
public string Description { get; set; }
}
internal class ProjectTemplate
{
private class DisplayData
{
public string Icon { get; set; }
public int? Order { get; set; }
public string Description { get; set; }
public bool Hidden { get; set; }
}
//private class ConfigData
//{
// public BlendMode BlendMode { get; set; }
//
// public ShadingModel ShadingModel { get; set; }
//}
private ShaderGraphPlus Config { get; init; }
//public TemplateUserConfig templateConfigUser { get; set; } = new TemplateUserConfig();
public string TemplatePath { get; init; }
public string Title => Config.Description;
// Display Data
public string Icon { get; set; } = "question_mark";
public int Order { get; set; } = 0;
public string Description { get; set; } = "No description provided.";
public bool Hidden { get; set; } = false;
// Config Data
//public BlendMode BlendMode { get; set; }
//public ShadingModel ShadingModel { get; set; }
public ProjectTemplate( ShaderGraphPlus templateConfig, string path )
{
Config = templateConfig;
TemplatePath = path;
DisplayData display = default( DisplayData );
//ConfigData config = default(ConfigData);
if ( Config.TryGetMeta( "ProjectTemplate", out display ) )
{
Icon = display.Icon;
Order = display.Order.GetValueOrDefault();
Description = display.Description ?? "No description provided.";
Hidden = display.Hidden;
}
}
private void CopyFolder( string sourceDir, string targetDir, string addonIdent )
{
if ( !sourceDir.Contains( "\\.", StringComparison.OrdinalIgnoreCase ) )
{
Directory.CreateDirectory( targetDir );
string[] files = Directory.GetFiles( sourceDir );
foreach ( string file in files )
{
CopyAndProcessFile( file, targetDir, addonIdent );
}
files = Directory.GetDirectories( sourceDir );
foreach ( string directory in files )
{
CopyFolder( directory, Path.Combine( targetDir, Path.GetFileName( directory ) ), addonIdent );
}
}
}
private void CopyAndProcessFile( string file, string targetDir, string addonIdent )
{
string targetname = Path.Combine( targetDir, Path.GetFileName( file ) );
targetname = targetname.Replace( "$name", addonIdent );
File.Copy( file, targetname, overwrite: true );
}
}