diff options
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeAttributes.cs')
-rw-r--r-- | Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeAttributes.cs | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeAttributes.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeAttributes.cs new file mode 100644 index 00000000..91e441ea --- /dev/null +++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeAttributes.cs @@ -0,0 +1,97 @@ +// Amplify Shader Editor - Visual Shader Editing Tool +// Copyright (c) Amplify Creations, Lda <info@amplify.pt> + +using System; +using UnityEngine; + +namespace AmplifyShaderEditor +{ + public enum NodeAvailability + { + SurfaceShader = 1 << 0, + ShaderFunction = 1 << 1, + CustomLighting = 1 << 2, + TemplateShader = 1 << 3 + } + + + [AttributeUsage( AttributeTargets.Class )] + public class NodeAttributes : Attribute + { + + public string Name; + public string Description; + public string Category; + public KeyCode ShortcutKey; + public bool Available; + public System.Type[] CastType; // Type that will be converted to AttribType if dropped on the canvas ... p.e. dropping a texture2d on the canvas will generate a sampler2d node + public bool Deprecated; + public string DeprecatedAlternative; + public System.Type DeprecatedAlternativeType; + public bool FromCommunity; + public string CustomCategoryColor; // Color created via a string containing its hexadecimal representation + public int SortOrderPriority; // to be used when name comparing on sorting + public int NodeAvailabilityFlags;// used to define where this node can be used + private string m_nodeUrl; + public string Community; + public string Tags; + public NodeAttributes( string name, string category, string description, System.Type castType = null, KeyCode shortcutKey = KeyCode.None, bool available = true, bool deprecated = false, string deprecatedAlternative = null, System.Type deprecatedAlternativeType = null, string community = null, string customCategoryColor = null, int sortOrderPriority = -1, int nodeAvailabilityFlags = int.MaxValue, string tags = null ) + { + Name = name; + Description = description; + Category = category; + if( castType != null ) + CastType = new System.Type[] { castType }; + + ShortcutKey = shortcutKey; + Available = available; + Deprecated = deprecated; + DeprecatedAlternative = deprecatedAlternative; + Community = community; + if( string.IsNullOrEmpty( Community ) ) + Community = string.Empty; + else + FromCommunity = true; + + if( !string.IsNullOrEmpty( customCategoryColor ) ) + CustomCategoryColor = customCategoryColor; + + DeprecatedAlternativeType = deprecatedAlternativeType; + SortOrderPriority = sortOrderPriority; + NodeAvailabilityFlags = nodeAvailabilityFlags; + Tags = tags; + if( string.IsNullOrEmpty( tags ) ) + Tags = string.Empty; + //m_nodeUrl = ( FromCommunity ? Constants.CommunityNodeCommonUrl : Constants.NodeCommonUrl ) + UIUtils.UrlReplaceInvalidStrings( Name ); + } + + public NodeAttributes( string name, string category, string description, KeyCode shortcutKey, bool available, int sortOrderPriority, int nodeAvailabilityFlags, params System.Type[] castTypes ) + { + Name = name; + Description = description; + Category = category; + if( castTypes != null && castTypes.Length > 0 ) + { + CastType = castTypes; + } + + ShortcutKey = shortcutKey; + Available = available; + SortOrderPriority = sortOrderPriority; + NodeAvailabilityFlags = nodeAvailabilityFlags; + //m_nodeUrl = ( FromCommunity ? Constants.CommunityNodeCommonUrl : Constants.NodeCommonUrl ) + UIUtils.UrlReplaceInvalidStrings( Name ); + } + + public string NodeUrl + { + get + { + if( string.IsNullOrEmpty( m_nodeUrl ) ) + { + m_nodeUrl = ( FromCommunity ? Constants.CommunityNodeCommonUrl : Constants.NodeCommonUrl ) + UIUtils.UrlReplaceInvalidStrings( Name ); + } + return m_nodeUrl; + } + } + } +} |