// Amplify Shader Editor - Visual Shader Editing Tool
|
|
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
|
|
|
|
using System;
|
|
using UnityEngine;
|
|
using System.Collections.Generic;
|
|
|
|
namespace AmplifyShaderEditor
|
|
{
|
|
public enum TemplateCodeSnippetType
|
|
{
|
|
Toggle
|
|
};
|
|
|
|
|
|
public enum TemplateCodeSnippetInfoIdx
|
|
{
|
|
Name = 0,
|
|
Type
|
|
};
|
|
|
|
[Serializable]
|
|
public class TemplateCodeSnippetElement
|
|
{
|
|
public string Id;
|
|
public string Snippet;
|
|
public TemplateCodeSnippetElement( string id, string snippet )
|
|
{
|
|
Id = id;
|
|
Snippet = snippet;
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class TemplateCodeSnippetBase : ScriptableObject
|
|
{
|
|
[SerializeField]
|
|
private string m_nameId;
|
|
|
|
[SerializeField]
|
|
private TemplateCodeSnippetType m_type;
|
|
|
|
[SerializeField]
|
|
private List<TemplateCodeSnippetElement> m_elements = new List<TemplateCodeSnippetElement>();
|
|
|
|
public void Init( string nameId, TemplateCodeSnippetType type )
|
|
{
|
|
m_nameId = nameId;
|
|
m_type = type;
|
|
}
|
|
|
|
public void AddSnippet( TemplateCodeSnippetElement element )
|
|
{
|
|
m_elements.Add( element );
|
|
}
|
|
|
|
public void Destroy()
|
|
{
|
|
for ( int i = 0; i < m_elements.Count; i++ )
|
|
{
|
|
m_elements[ i ].Snippet = null;
|
|
}
|
|
m_elements.Clear();
|
|
m_elements = null;
|
|
}
|
|
|
|
public virtual void DrawProperties( ParentNode owner ) { }
|
|
public virtual bool CheckSnippet() { return true; }
|
|
|
|
public void InsertSnippet( ref string shaderBody )
|
|
{
|
|
bool insertSnippet = CheckSnippet();
|
|
for ( int i = 0; i < m_elements.Count; i++ )
|
|
{
|
|
shaderBody = shaderBody.Replace( m_elements[ i ].Id, ( insertSnippet ? m_elements[ i ].Snippet : string.Empty ) );
|
|
}
|
|
}
|
|
public string NameId { get { return m_nameId; } }
|
|
public TemplateCodeSnippetType Type { get { return m_type; } }
|
|
public List<TemplateCodeSnippetElement> Elements { get { return m_elements; } }
|
|
}
|
|
|
|
[Serializable]
|
|
public class TemplateCodeSnippetToggle : TemplateCodeSnippetBase
|
|
{
|
|
private const string Label = "Activate";
|
|
[SerializeField]
|
|
private bool m_value = false;
|
|
|
|
|
|
public override bool CheckSnippet()
|
|
{
|
|
return m_value;
|
|
}
|
|
|
|
public override void DrawProperties( ParentNode owner )
|
|
{
|
|
m_value = owner.EditorGUILayoutToggle( Label, m_value );
|
|
}
|
|
}
|
|
|
|
}
|