xl;0O2;I^_ug9H8buMnwMXI8Fh%d|^gD*Pvg^1x57DR?Rk`ksCv^
zA&)2rIEBaH9SiBr1$g%%nKg@kVk*!R;O^Yk8hndRfRpagg=6o8q^7Q1xpOB_1F#V0
z(>Ivy^-u%-0YP5|`1fy!U3dsGy%2+fq-zx}Krw&;Zr*;6-jgAWalG@GEpCW#|2lUV
zV8Rz3B;Nxj8cyFk11o)bh;Tn%A5T*-6uta}m$
z-?t+m3%?N-zVx`8559}Uc@PyW45c`6r8s@3=H5AXE#TqsNrF4wRlxXz(a$8ya7Y4G
z1D_P{v=|)|bS5YL?%03s2bovG_Dyu_JHGRTmjGILz<`
;gTypEWFTS%scGXmN{
zdJ}a*L$D?gZ?x1jx$!h!Z>h)mFKX9le!H#4FRrI=e%R9Jfobe@W_(5ooOB;Lz0;0@
z#3L0>uMR8CtV3sjts4P~42052hAN|(MUBhdS#nRo{C|z1eAq48a!7%EP?|MOoDITA
z%kSXJ*nqA#ro9Eu960fq1!oRFd&r=s!|FJEDqJDPcr2KU!Ix$RcGsXsf3%BjITfRE
zhD5EU9Pl*~4-{}(M+f^SVh!MOEWQ>jcFG}?m*YA1)QTMAfBsr&qU8vz19GwK`FZGjnJ$~Rxul!Bpobyf
zywxSyq5x$#Z+0%h|3kSFMWA*$58d
z<*eDi`m;ohyL=M(?`!tEuK(`epFjdz-~A(he^`E^1Vjno2nIj8Rt_6T2;rhKoO8g*
zK^(=S2OXi)!$2pz$gBs5cRW(~u0IshP2lVnzd>OEi*pw;vu>J|^UOLS05&fc0GL8r
zWAq)T4Yk?bL*H$q*^WNMhbE3#`q0F|&2Zf4703Kxh~Dq_8RQ)792@{6g%;1xHPA2+
zQ0igp-+U{_LO2qqPED}y1`l!1Ov`yF;1xBj4kuzE7~`L`xO{xD)KS7iDxEf)m2(Jb
zc^-jWsNIb)KqOX34OB0dA0c1i!a@8tRO7(3env4fiq
zou#pp=OK1>P4h{Nkz=2_B+IuSqv0PRy!g`}Y4`|)7k+$%h7Ut{!AFP1uqX#n2SgnZ
zbwJbsQ3w7vbbvXGz5OY7@68-JhJJy&UuS;Y3$f?jJ-+1Fjw4%LA$xCHzJq!L(v!{a
z9N6ZPeS7^px33^SduY>BukAUt)1^H1%?jJCE8HGM==qcTHmsO;9sF$Y*A|ym!Cg0R
z#Rlqow73-KPVC#XX8GcUyB8=HE?&N7(?0Z2&bZ{~P9AFB{^`fNKazj^>GtMB=){}`
z=jQCmpMN~E`>^cDk3Ul{$JYnKu;>T0Z|7;9rzRIfanK_<3ZvW
z7L51(3EHB_gE*Ed>VT*Nq7Gbs9r(ZSgWv~jg}>88s<3?o-|@?iZ*)dVnHF+}Fx|Go
z#Mq9(O37K$LKx*%m>Jut4wIZCXW=KvI2iM~tFw|hk1^>+i0#(INoh=pvt}(NJ(L(D
zDi~>*I!Hys(GafDM$>Q%gzM8{XgC(a=JZ%GEXqOD0Z|7;9T0Uu)PesE9bjUyw?E_V
zy_uM85ZmwW*O}TvrCa%r6As#gxQ
zz|2_7p%3rBezM!62xXL=GbcM{-*xZ3U(a{ltGH{nV{#_-Jz9uD64qH$GPS0Dw^>nN
zGqpt189kIUL@rUr^%$g0+np{?(+=tphhEHSB4eb=i0GKzv9g%x2qpSC=mGs3-VH~)
literal 0
HcmV?d00001
diff --git a/Scripts/Editor/Resources/xnode_node_workfile_long.psd.meta b/Scripts/Editor/Resources/xnode_node_workfile_long.psd.meta
new file mode 100644
index 0000000..bc8a59e
--- /dev/null
+++ b/Scripts/Editor/Resources/xnode_node_workfile_long.psd.meta
@@ -0,0 +1,140 @@
+fileFormatVersion: 2
+guid: b5cc599cf52979248a326e2799d2f59e
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 12
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: WebGL
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Scripts/Node.cs b/Scripts/Node.cs
index be8dd39..077414b 100644
--- a/Scripts/Node.cs
+++ b/Scripts/Node.cs
@@ -557,7 +557,7 @@ namespace XNode
}
}
- /// Specify a color for this node type
+ /// Specify a color tint for this node type
[AttributeUsage(AttributeTargets.Class)]
public class NodeTintAttribute : Attribute
{
@@ -589,6 +589,76 @@ namespace XNode
}
}
+
+ /// Specify a header color for this node type
+ [AttributeUsage(AttributeTargets.Class)]
+ public class NodeColorHeaderAttribute : Attribute
+ {
+ public Color color;
+
+ /// Specify a color for this node type
+ /// Red [0.0f .. 1.0f]
+ /// Green [0.0f .. 1.0f]
+ /// Blue [0.0f .. 1.0f]
+ /// Alpha [0.0f .. 1.0f]
+ public NodeColorHeaderAttribute(float r, float g, float b, float a = 1.0f)
+ {
+ color = new Color(r, g, b, a);
+ }
+
+ /// Specify a color for this node type
+ /// HEX color value
+ public NodeColorHeaderAttribute(string hex)
+ {
+ ColorUtility.TryParseHtmlString(hex, out color);
+ }
+
+ /// Specify a color for this node type
+ /// Red [0 .. 255]
+ /// Green [0 .. 255]
+ /// Blue [0 .. 255]
+ /// Alpha [0 .. 255]
+ public NodeColorHeaderAttribute(byte r, byte g, byte b, byte a = byte.MaxValue)
+ {
+ color = new Color32(r, g, b, a);
+ }
+ }
+
+
+ /// Specify a body color for this node type
+ [AttributeUsage(AttributeTargets.Class)]
+ public class NodeColorBodyAttribute : Attribute
+ {
+ public Color color;
+
+ /// Specify a color for this node type
+ /// Red [0.0f .. 1.0f]
+ /// Green [0.0f .. 1.0f]
+ /// Blue [0.0f .. 1.0f]
+ /// Alpha [0.0f .. 1.0f]
+ public NodeColorBodyAttribute(float r, float g, float b, float a = 1.0f)
+ {
+ color = new Color(r, g, b, a);
+ }
+
+ /// Specify a color for this node type
+ /// HEX color value
+ public NodeColorBodyAttribute(string hex)
+ {
+ ColorUtility.TryParseHtmlString(hex, out color);
+ }
+
+ /// Specify a color for this node type
+ /// Red [0 .. 255]
+ /// Green [0 .. 255]
+ /// Blue [0 .. 255]
+ /// Alpha [0 .. 255]
+ public NodeColorBodyAttribute(byte r, byte g, byte b, byte a = byte.MaxValue)
+ {
+ color = new Color32(r, g, b, a);
+ }
+ }
+
/// Specify a width for this node type
[AttributeUsage(AttributeTargets.Class)]
public class NodeWidthAttribute : Attribute
diff --git a/Scripts/NodeGroup.cs b/Scripts/NodeGroup.cs
index a227b10..85d68bd 100644
--- a/Scripts/NodeGroup.cs
+++ b/Scripts/NodeGroup.cs
@@ -1,14 +1,14 @@
using System.Collections.Generic;
-using UnityEngine;
namespace XNode
{
+ [NodeColorHeader(0.2f, 0.2f, 0.2f, 0.5f)]
+ [NodeColorBody(0.25f, 0.25f, 0.25f, 0.35f)]
[CreateNodeMenu("Group")]
public class NodeGroup : Node
{
public int width = 400;
public int height = 400;
- public Color color = new Color(1f, 1f, 1f, 0.1f);
public override object GetValue(NodePort port)
{