diff options
author | chai <chaifix@163.com> | 2022-03-10 14:07:40 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-03-10 14:07:40 +0800 |
commit | 22891bf59032ba88262824255a706d652031384b (patch) | |
tree | 7595439ba9966c9402d37e37cee5e8cf098757d5 /Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/UIUtils.cs | |
parent | 8b04ea73e540067f83870b61d89db4868fea5e8a (diff) |
* move folder
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/UIUtils.cs')
-rw-r--r-- | Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/UIUtils.cs | 2839 |
1 files changed, 0 insertions, 2839 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/UIUtils.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/UIUtils.cs deleted file mode 100644 index a525fd7c..00000000 --- a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Utils/UIUtils.cs +++ /dev/null @@ -1,2839 +0,0 @@ -// Amplify Shader Editor - Visual Shader Editing Tool -// Copyright (c) Amplify Creations, Lda <info@amplify.pt> - -using UnityEngine; -using UnityEditor; -using System.Collections.Generic; -using System.IO; - -using System.Globalization; -using System.Text.RegularExpressions; - -namespace AmplifyShaderEditor -{ - public enum ASEColorSpace - { - Auto, - Gamma, - Linear - } - - public enum SurfaceInputs - { - DEPTH = 0, - UV_COORDS, - UV2_COORDS, - VIEW_DIR, - COLOR, - SCREEN_POS, - WORLD_POS, - WORLD_REFL, - WORLD_NORMAL, - VFACE, - INTERNALDATA - } - - public enum CustomStyle - { - NodeWindowOff = 0, - NodeWindowOn, - NodeTitle, - NodeHeader, - CommentaryHeader, - ShaderLibraryTitle, - ShaderLibraryAddToList, - ShaderLibraryRemoveFromList, - ShaderLibraryOpenListed, - ShaderLibrarySelectionAsTemplate, - ShaderLibraryItem, - CommentaryTitle, - PortEmptyIcon, - PortFullIcon, - InputPortlabel, - OutputPortLabel, - CommentaryResizeButton, - CommentaryResizeButtonInv, - CommentaryBackground, - MinimizeButton, - MaximizeButton, - NodePropertiesTitle, - ShaderModeTitle, - MaterialModeTitle, - ShaderNoMaterialModeTitle, - PropertyValuesTitle, - ShaderModeNoShader, - MainCanvasTitle, - ShaderBorder, - MaterialBorder, - SamplerTextureRef, - SamplerTextureIcon, - CustomExpressionAddItem, - CustomExpressionRemoveItem, - CustomExpressionSmallAddItem, - CustomExpressionSmallRemoveItem, - ResetToDefaultInspectorButton, - SliderStyle, - ObjectPicker, - NodePropertyPicker, - NodePreviewExpander, - NodePreviewCollapser, - SamplerButton, - SamplerFrame, - CommentarySuperTitle, - MiniButtonTopLeft, - MiniButtonTopMid, - MiniButtonTopRight, - ShaderFunctionBorder, - ShaderFunctionMode, - RightShaderMode, - FlatBackground, - DocumentationLink, - GraphButtonIcon, - GraphButton, - NodeWindowOffSquare, - NodeHeaderSquare, - NodeWindowOnSquare, - ConsoleLogMessage, - ConsoleLogCircle - } - - public enum MasterNodePortCategory - { - Vertex = 1 << 0, - Fragment = 1 << 1, - Tessellation = 1 << 2, - Debug = 1 << 3 - } - - public enum PortGenType - { - NonCustomLighting, - //Normal = 1 << 1, - //Emission = 1 << 2, - //Metallic = 1 << 3, - //Specular = 1 << 4, - CustomLighting - } - - public struct NodeData - { - public MasterNodePortCategory Category; - public int OrderIndex; - public int GraphDepth; - public NodeData( MasterNodePortCategory category ) - { - Category = category; - OrderIndex = 0; - GraphDepth = -1; - } - } - - public struct NodeCastInfo - { - public int NodeId; - public int PortId; - public NodeCastInfo( int nodeId, int portId ) - { - NodeId = nodeId; - PortId = portId; - } - public override string ToString() - { - return NodeId.ToString() + PortId.ToString(); - } - }; - - public struct ButtonClickId - { - public const int LeftMouseButton = 0; - public const int RightMouseButton = 1; - public const int MiddleMouseButton = 2; - } - - public enum ASESelectionMode - { - Shader = 0, - Material, - ShaderFunction - } - - public enum DrawOrder - { - Background, - Default - } - - public enum NodeConnectionStatus - { - Not_Connected = 0, - Connected, - Error, - Island - } - - public enum InteractionMode - { - Target, - Other, - Both - } - - public enum FunctionNodeCategories - { - Custom, - CameraAndScreen, - ConstantsAndProperties, - Functions, - ImageEffects, - Light, - LogicalOperators, - MathOperators, - MatrixOperators, - Miscellaneous, - ObjectTransform, - SurfaceData, - Textures, - Time, - TrigonometryOperators, - UVCoordinates, - VectorOperators, - VertexData - } - - public enum TransformSpaceFrom - { - Object = 0, - World, - View, - Tangent - } - - public enum TransformSpaceTo - { - Object = 0, - World, - View, - Tangent, - Clip - } - - public class UIUtils - { - public static string NewTemplateGUID; - public static int SerializeHelperCounter = 0; - public static bool IgnoreDeselectAll = false; - - public static bool DirtyMask = true; - public static bool Initialized = false; - public static float HeaderMaxHeight; - public static float CurrentHeaderHeight; - public static GUISkin MainSkin = null; - public static GUIStyle PlusStyle; - public static GUIStyle MinusStyle; - public static GUIStyle RangedFloatSliderStyle; - public static GUIStyle RangedFloatSliderThumbStyle; - public static GUIStyle SwitchNodePopUp; - public static GUIStyle PropertyPopUp; - public static GUIStyle ObjectField; - public static GUIStyle PreviewExpander; - public static GUIStyle PreviewCollapser; - public static GUIStyle ObjectFieldThumb; - public static GUIStyle ObjectFieldThumbOverlay; - public static GUIStyle InspectorPopdropdownStyle; - public static GUIStyle InspectorPopdropdownFallback; - public static GUIStyle BoldErrorStyle; - public static GUIStyle BoldWarningStyle; - public static GUIStyle BoldInfoStyle; - public static GUIStyle Separator; - public static GUIStyle ToolbarMainTitle; - public static GUIStyle ToolbarSearchTextfield; - public static GUIStyle ToolbarSearchCancelButton; - public static GUIStyle MiniButtonTopLeft; - public static GUIStyle MiniButtonTopMid; - public static GUIStyle MiniButtonTopRight; - - public static GUIStyle CommentaryTitle; - public static GUIStyle InputPortLabel; - public static GUIStyle OutputPortLabel; - - public static GUIStyle MiniObjectFieldThumbOverlay; - public static GUIStyle MiniSamplerButton; - - public static GUIStyle NodeWindowOffSquare; - public static GUIStyle NodeHeaderSquare; - public static GUIStyle NodeWindowOnSquare; - public static GUIStyle InternalDataOnPort; - public static GUIStyle InternalDataBackground; - - public static GUIStyle GraphButtonIcon; - public static GUIStyle GraphButton; - public static GUIStyle GraphDropDown; - - public static GUIStyle EmptyStyle = new GUIStyle(); - - public static GUIStyle ConsoleLogLabel; - public static GUIStyle ConsoleLogMessage; - public static GUIStyle ConsoleLogCircle; - - public static GUIStyle TooltipBox; - public static GUIStyle Box; - public static GUIStyle Button; - public static GUIStyle TextArea; - public static GUIStyle Label; - public static GUIStyle Toggle; - public static GUIStyle Textfield; - - public static GUIStyle UnZoomedNodeTitleStyle; - public static GUIStyle UnZoomedPropertyValuesTitleStyle; - public static GUIStyle UnZoomedInputPortStyle; - public static GUIStyle UnZoomedOutputPortPortStyle; - - // Node Property Menu items - public static GUIStyle MenuItemToggleStyle; - public static GUIStyle MenuItemEnableStyle; - public static GUIStyle MenuItemBackgroundStyle; - public static GUIStyle MenuItemToolbarStyle; - public static GUIStyle MenuItemInspectorDropdownStyle; - - public static GUIStyle FloatIntPickerONOFF; - - public static bool UsingProSkin = false; - - public static Texture ShaderIcon { get { return EditorGUIUtility.IconContent( "Shader Icon" ).image; } } - public static Texture MaterialIcon { get { return EditorGUIUtility.IconContent( "Material Icon" ).image; } } - - //50be8291f9514914aa55c66c49da67cf - public static Texture ShaderFunctionIcon { get { return AssetDatabase.LoadAssetAtPath<Texture>( AssetDatabase.GUIDToAssetPath( "50be8291f9514914aa55c66c49da67cf" ) ); } } - - public static Texture2D WireNodeSelection = null; - public static Texture2D SliderButton = null; - - public static Texture2D SmallErrorIcon = null; - public static Texture2D SmallWarningIcon = null; - public static Texture2D SmallInfoIcon = null; - - public static Texture2D CheckmarkIcon = null; - public static Texture2D PopupIcon = null; - - public static Texture2D MasterNodeOnTexture = null; - public static Texture2D MasterNodeOffTexture = null; - - public static Texture2D GPUInstancedOnTexture = null; - public static Texture2D GPUInstancedOffTexture = null; - - public static GUIContent LockIconOpen = null; - public static GUIContent LockIconClosed = null; - - public static GUIContent FloatIntIconON = null; - public static GUIContent FloatIntIconOFF = null; - - public static bool ShowContextOnPick = true; - - private static AmplifyShaderEditorWindow m_currentWindow = null; - public static AmplifyShaderEditorWindow CurrentWindow - { - get - { - if( m_currentWindow == null ) - { - for( int i = 0; i < IOUtils.AllOpenedWindows.Count; i++ ) - { - if( IOUtils.AllOpenedWindows[ i ] != null ) - { - m_currentWindow = IOUtils.AllOpenedWindows[ i ]; - } - else - { - //Debug.Log("No Window Found!"); - } - } - } - return m_currentWindow; - } - set { m_currentWindow = value; } - } - - public static Vector2 PortsSize; - public static Vector3 PortsDelta; - public static Vector3 ScaledPortsDelta; - - public static RectOffset RectOffsetZero; - public static RectOffset RectOffsetOne; - public static RectOffset RectOffsetTwo; - public static RectOffset RectOffsetThree; - public static RectOffset RectOffsetFour; - public static RectOffset RectOffsetFive; - public static RectOffset RectOffsetSix; - - public static Material LinearMaterial = null; - public static Shader IntShader = null; - public static Shader FloatShader = null; - public static Shader Vector2Shader = null; - public static Shader Vector3Shader = null; - public static Shader Vector4Shader = null; - public static Shader ColorShader = null; - public static Shader Texture2DShader = null; - public static Shader MaskingShader = null; - - public static bool InhibitMessages = false; - - - private static int m_shaderIndentLevel = 0; - private static string m_shaderIndentTabs = string.Empty; - - //Label Vars - - private static TextAnchor m_alignment; - private static TextClipping m_clipping; - private static bool m_wordWrap; - private static int m_fontSize; - private static Color m_fontColor; - private static FontStyle m_fontStyle; - - - private static string NumericNamePattern = @"^\d"; - private static System.Globalization.TextInfo m_textInfo; - private static string m_latestOpenedFolder = string.Empty; - private static Dictionary<int, UndoParentNode> m_undoHelper = new Dictionary<int, UndoParentNode>(); - - private static Dictionary<string, int> AvailableKeywordsDict = new Dictionary<string, int>(); - public static readonly string[] AvailableKeywords = - { - "Custom", - "ETC1_EXTERNAL_ALPHA", - "PIXELSNAP_ON", - "UNITY_PASS_FORWARDBASE", - "UNITY_PASS_FORWARDADD", - "UNITY_PASS_DEFERRED", - "UNITY_PASS_SHADOWCASTER", - "UNITY_INSTANCING_ENABLED", - "DIRECTIONAL_COOKIE" - - }; - - public static readonly string[] CategoryPresets = - { - "<Custom>", - "Camera And Screen", - "Constants And Properties", - "Functions", - "Image Effects", - "Light", - "Logical Operators", - "Math Operators", - "Matrix Operators", - "Miscellaneous", - "Object Transform", - "Surface Data", - "Textures", - "Time", - "Trigonometry Operators", - "UV Coordinates", - "Vector Operators", - "Vertex Data" - }; - - private static Dictionary<MasterNodePortCategory, int> m_portCategoryToArrayIdx = new Dictionary<MasterNodePortCategory, int> - { - { MasterNodePortCategory.Vertex,0}, - { MasterNodePortCategory.Tessellation,0}, - { MasterNodePortCategory.Fragment,1}, - { MasterNodePortCategory.Debug,1} - }; - - private static Dictionary<string, string> m_reservedPropertyNames = new Dictionary<string, string> - { - { "UNITY_MATRIX_MVP", string.Empty}, - { "UNITY_MATRIX_MV", string.Empty}, - { "UNITY_MATRIX_V", string.Empty}, - { "UNITY_MATRIX_P", string.Empty}, - { "UNITY_MATRIX_VP", string.Empty}, - { "UNITY_MATRIX_T_MV", string.Empty}, - { "UNITY_MATRIX_IT_MV", string.Empty}, - { "UNITY_MATRIX_TEXTURE0", string.Empty}, - { "UNITY_MATRIX_TEXTURE1", string.Empty}, - { "UNITY_MATRIX_TEXTURE2", string.Empty}, - { "UNITY_MATRIX_TEXTURE3", string.Empty}, - { "_Object2World", string.Empty}, - { "_WorldSpaceCameraPos", string.Empty}, - { "unity_Scale", string.Empty}, - { "_ModelLightColor", string.Empty}, - { "_SpecularLightColor", string.Empty}, - { "_ObjectSpaceLightPos", string.Empty}, - { "_Light2World", string.Empty}, - { "_World2Light", string.Empty}, - { "_Object2Light", string.Empty}, - { "_Time", string.Empty}, - { "_SinTime", string.Empty}, - { "_CosTime", string.Empty}, - { "unity_DeltaTime", string.Empty}, - { "_ProjectionParams", string.Empty}, - { "_ScreenParams", string.Empty} - }; - - private static Dictionary<string, string> m_exampleMaterialIDs = new Dictionary<string, string>() - { - //Community - {"2Sided", "8ebbbf2c99a544ca780a2573ef1450fc" }, - {"DissolveBurn", "f144f2d7ff3daf349a2b7f0fd81ec8ac" }, - {"MourEnvironmentGradient", "b64adae401bc073408ac7bff0993c107" }, - {"ForceShield", "0119aa6226e2a4cfdb6c9a5ba9df7820" }, - {"HighlightAnimated", "3d232e7526f6e426cab994cbec1fc287" }, - {"Hologram", "b422c600f1c3941b8bc7e95db33476ad" }, - {"LowPolyWater", "0557703d3791a4286a62f8ee709d5bef"}, - //Official - {"AnimatedFire", "63ea5eae6d954a14292033589d0d4275" }, - {"AnimatedFire-ShaderFunction", "9c6c9fcb82afe874a825a9e680e694b2" }, - {"BurnEffect", "0b019675a8064414b97862a02f644166" }, - {"CubemapReflections", "2c299f827334e9c459a60931aea62260" }, - {"DitheringFade", "610507217b7dcad4d97e6e03e9844171" }, - {"DoubleLayerCustomSurface", "846aec4914103104d99e9e31a217b548" }, - {"NormalExtrusion", "70a5800fbba039f46b438a2055bc6c71" }, - {"MatcapSample", "da8aaaf01fe8f2b46b2fbcb803bd7af4" }, - {"ParallaxMappingIterations", "a0cea9c3f318ac74d89cd09134aad000" }, - {"SandPOM", "905481dc696211145b88dc4bac2545f3" }, - {"ParallaxWindow", "63ad0e7afb1717b4e95adda8904ab0c3" }, - {"LocalPosCutoff", "fed8c9d33a691084c801573feeed5a62" }, - {"ImprovedReadFromAtlasTiled", "941b31b251ea8e74f9198d788a604c9b" }, - {"ReadFromAtlasTiled", "2d5537aa702f24645a1446dc3be92bbf" }, - {"ReflectRefractSoapBubble", "a844987c9f2e7334abaa34f12feda3b9" }, - {"RimLight", "e2d3a4d723cf1dc4eab1d919f3324dbc" }, - {"RefractedShadows", "11818aa28edbeb04098f3b395a5bfc1d" }, - {"TextureArray", "0f572993ab788a346aea45f2f797b7fa" }, - {"ObjectNormalRefraction", "f1a0a645876302547b608ce881c94e6d" }, - {"ShaderBallInterior", "e47ee174f55b6144b9c1a942bb23d82a" }, - {"ScreenSpaceCurvature", "2e794cb9b3900b043a37ba28cdc2f907" }, - {"ScreenSpaceDetail", "3a0163d12fede4d47a1f818a66a115de" }, - {"SimpleNoise", "cc167bc6c2063a14f84a5a77be541194" }, - {"SimpleBlur", "1d283ff911af20e429180bb15d023661" }, - {"SimpleGPUInstancing", "9d609a7c8d00c7c4c9bdcdcdba154b81" }, - {"SimpleLambert", "54b29030f7d7ffe4b84f2f215dede5ac" }, - {"SimpleRefraction", "58c94d2f48acdc049a53b4ca53d6d98a" }, - {"SimpleTexture", "9661085a7d249a54c95078ac8e7ff004" }, - {"SnowAccum", "e3bd639f50ae1a247823079047a8dc01" }, - {"StencilDiffuse01", "9f47f529fdeddd948a2d2722f73e6ac4" }, - {"StencilMask01", "6f870834077d59b44ac421c36f619d59" }, - {"StencilDiffuse02", "11cdb862d5ba68c4eae526765099305b" }, - {"StencilMask02", "344696733b065c646b18c1aa2eacfdb7" }, - {"StencilDiffuse03", "75e851f6c686a5f42ab900222b29355b" }, - {"StencilMask03", "c7b3018ad495c6b479f2e3f8564aa6dc" }, - {"SubstanceExample", "a515e243b476d7e4bb37eb9f82c87a12" }, - {"AnimatedRefraction", "e414af1524d258047bb6b82b8860062c" }, - {"Tessellation", "efb669a245f17384c88824d769d0087c" }, - {"Translucency", "842ba3dcdd461ea48bdcfcea316cbcc4" }, - {"Transmission", "1b21506b7afef734facfc42c596caa7b" }, - {"Transparency", "e323a62068140c2408d5601877e8de2c" }, - {"TriplanarProjection", "663d512de06d4e24db5205c679f394cb" }, - {"TwoSideWithFace", "c953c4b601ba78e4f870d24d038b67f6" }, - {"Ground", "48df9bdf7b922d94bb3167e6db39c943" }, - {"WaterSample", "288137d67ce790e41903020c572ab4d7" }, - {"WorldPosSlices", "013cc03f77f3d034692f902db8928787" } - }; - - private static Dictionary<TextureType, string> m_textureTypeToCgType = new Dictionary<TextureType, string>() - { - {TextureType.Texture1D, "sampler1D" }, - {TextureType.Texture2D, "sampler2D" }, - {TextureType.Texture3D, "sampler3D" }, - {TextureType.Cube , "samplerCUBE"}, - {TextureType.Texture2DArray, "sampler2D" }, - {TextureType.ProceduralTexture, "sampler2D" } - }; - - - private static Dictionary<string, Color> m_nodeCategoryToColor = new Dictionary<string, Color>() - { - { "Master", new Color( 0.6f, 0.52f, 0.43f, 1.0f )}, - { "Default", new Color( 0.26f, 0.35f, 0.44f, 1.0f )}, - { "Vertex Data", new Color( 0.8f, 0.07f, 0.18f, 1.0f)},//new Color( 0.75f, 0.10f, 0.30f, 1.0f )}, - { "Math Operators", new Color( 0.26f, 0.35f, 0.44f, 1.0f )},//new Color( 0.10f, 0.27f, 0.45f, 1.0f) }, - { "Logical Operators", new Color( 0.0f, 0.55f, 0.45f, 1.0f)},//new Color( 0.11f, 0.28f, 0.47f, 1.0f) }, - { "Trigonometry Operators", new Color( 0.1f, 0.20f, 0.35f, 1.0f)},//new Color( 0.8f, 0.07f, 0.18f, 1.0f)}, - { "Image Effects", new Color( 0.5f, 0.2f, 0.90f, 1.0f)},//new Color( 0.12f, 0.47f, 0.88f, 1.0f)}, - { "Miscellaneous", new Color( 0.49f, 0.32f, 0.60f, 1.0f)}, - { "Camera And Screen", new Color( 0.75f, 0.10f, 0.30f, 1.0f )},//new Color( 0.17f, 0.22f, 0.07f, 1.0f) }, - { "Constants And Properties", new Color( 0.42f, 0.70f, 0.22f, 1.0f) }, - { "Surface Data", new Color( 0.92f, 0.73f, 0.03f, 1.0f)}, - { "Matrix Transform", new Color( 0.09f, 0.43f, 0.2f, 1.0f) }, - { "Time", new Color( 0.25f, 0.25f, 0.25f, 1.0f)},//new Color( 0.89f, 0.59f, 0.0f, 1.0f) }, - { "Functions", new Color( 1.00f, 0.4f, 0.0f, 1.0f) }, - { "Vector Operators", new Color( 0.22f, 0.20f, 0.45f, 1.0f)}, - { "Matrix Operators", new Color( 0.45f, 0.9f, 0.20f, 1.0f) }, - { "Light", new Color( 1.0f, 0.9f, 0.0f, 1.0f) }, - { "Textures", new Color( 0.15f, 0.40f, 0.8f, 1.0f)}, - { "Commentary", new Color( 0.7f, 0.7f, 0.7f, 1.0f)}, - { "UV Coordinates", new Color( 0.89f, 0.59f, 0.0f, 1.0f) }, - { "Object Transform", new Color( 0.15f, 0.4f, 0.49f, 1.0f)}, - { "Vertex Transform", new Color( 0.15f, 0.4f, 0.49f, 1.0f)} - }; - - private static Dictionary<ToolButtonType, List<string>> m_toolButtonTooltips = new Dictionary<ToolButtonType, List<string>> - { - { ToolButtonType.New, new List<string>() { "Create new shader." } }, - { ToolButtonType.Open, new List<string>() { "Open existing shader." } }, - { ToolButtonType.Save, new List<string>() { "No changes to save.", "Save current changes." } }, - { ToolButtonType.Library, new List<string>() { "Lists custom shader selection." } }, - { ToolButtonType.Options, new List<string>() { "Open Options menu." } }, - { ToolButtonType.Update, new List<string>() { "Open or create a new shader first.", "Click to enable to update current shader.", "Shader up-to-date." } }, - { ToolButtonType.Live, new List<string>() { "Open or create a new shader first.", "Click to enable live shader preview", "Click to enable live shader and material preview." , "Live preview active, click to disable." } }, - { ToolButtonType.TakeScreenshot, new List<string>() { "Take screenshot", "Take screenshot" }}, - { ToolButtonType.Share, new List<string>() { "Share selection", "Share selection" }}, - { ToolButtonType.CleanUnusedNodes, new List<string>() { "No unconnected nodes to clean.", "Remove all nodes not connected( directly or indirectly) to the master node." }}, - { ToolButtonType.Help, new List<string>() { "Show help window." } }, - { ToolButtonType.FocusOnMasterNode,new List<string>() { "Focus on active master node." } }, - { ToolButtonType.FocusOnSelection, new List<string>() { "Focus on selection fit to screen ( if none selected )." } } - }; - - private static Color[] m_dataTypeToColorMonoMode = { new Color( 0.5f, 0.5f, 0.5f, 1.0f ), Color.white }; - private static Dictionary<WirePortDataType, Color> m_dataTypeToColor = new Dictionary<WirePortDataType, Color>( new WirePortDataTypeComparer() ) - { - { WirePortDataType.OBJECT, Color.white}, - { WirePortDataType.FLOAT, Color.gray}, - { WirePortDataType.FLOAT2, new Color(1f,1f,0f,1f)}, - { WirePortDataType.FLOAT3, new Color(0.5f,0.5f,1f,1f)}, - { WirePortDataType.FLOAT4, new Color(1f,0,1f,1f)}, - { WirePortDataType.FLOAT3x3, new Color(0.5f,1f,0.5f,1f)}, - { WirePortDataType.FLOAT4x4, new Color(0.5f,1f,0.5f,1f)}, - { WirePortDataType.COLOR, new Color(1f,0,1f,1f)}, - { WirePortDataType.INT, Color.white}, - { WirePortDataType.SAMPLER1D, new Color(1f,0.5f,0f,1f)}, - { WirePortDataType.SAMPLER2D, new Color(1f,0.5f,0f,1f)}, - { WirePortDataType.SAMPLER3D, new Color(1f,0.5f,0f,1f)}, - { WirePortDataType.SAMPLERCUBE, new Color(1f,0.5f,0f,1f)} - }; - - private static Dictionary<WirePortDataType, string> m_dataTypeToName = new Dictionary<WirePortDataType, string>() - { - { WirePortDataType.OBJECT, "Generic Object"}, - { WirePortDataType.FLOAT, "Float"}, - { WirePortDataType.FLOAT2, "Vector2"}, - { WirePortDataType.FLOAT3, "Vector3"}, - { WirePortDataType.FLOAT4, "Vector4"}, - { WirePortDataType.FLOAT3x3, "3x3 Matrix"}, - { WirePortDataType.FLOAT4x4, "4x4 Matrix"}, - { WirePortDataType.COLOR, "Color"}, - { WirePortDataType.INT, "Int"}, - { WirePortDataType.SAMPLER1D, "Sampler1D"}, - { WirePortDataType.SAMPLER2D, "Sampler2D"}, - { WirePortDataType.SAMPLER3D, "Sampler3D"}, - { WirePortDataType.SAMPLERCUBE, "SamplerCUBE"} - }; - - private static Dictionary<SurfaceInputs, string> m_inputTypeDeclaration = new Dictionary<SurfaceInputs, string>() - { - { SurfaceInputs.DEPTH, "{0} Depth : SV_Depth"}, - { SurfaceInputs.UV_COORDS, "{0}2 uv"},// texture uv must have uv or uv2 followed by the texture name - { SurfaceInputs.UV2_COORDS, "{0}2 uv2"}, - { SurfaceInputs.VIEW_DIR, "{0}3 viewDir"}, - { SurfaceInputs.COLOR, Constants.ColorInput}, - { SurfaceInputs.SCREEN_POS, "{0}4 screenPos"}, - { SurfaceInputs.WORLD_POS, "{0}3 worldPos"}, - { SurfaceInputs.WORLD_REFL, "{0}3 worldRefl"}, - { SurfaceInputs.WORLD_NORMAL,"{0}3 worldNormal"}, - { SurfaceInputs.VFACE, Constants.VFaceInput}, - { SurfaceInputs.INTERNALDATA, Constants.InternalData} - }; - - private static Dictionary<SurfaceInputs, string> m_inputTypeName = new Dictionary<SurfaceInputs, string>() - { - { SurfaceInputs.DEPTH, "Depth"}, - { SurfaceInputs.UV_COORDS, "uv"},// texture uv must have uv or uv2 followed by the texture name - { SurfaceInputs.UV2_COORDS, "uv2"}, - { SurfaceInputs.VIEW_DIR, "viewDir"}, - { SurfaceInputs.COLOR, Constants.ColorVariable}, - { SurfaceInputs.SCREEN_POS, "screenPos"}, - { SurfaceInputs.WORLD_POS, "worldPos"}, - { SurfaceInputs.WORLD_REFL, "worldRefl"}, - { SurfaceInputs.WORLD_NORMAL, "worldNormal"}, - { SurfaceInputs.VFACE, Constants.VFaceVariable}, - }; - - private static Dictionary<PrecisionType, string> m_precisionTypeToCg = new Dictionary<PrecisionType, string>() - { - {PrecisionType.Float, "float"}, - {PrecisionType.Half, "half"}, - {PrecisionType.Inherit, "float"} - }; - - private static Dictionary<VariableQualifiers, string> m_qualifierToCg = new Dictionary<VariableQualifiers, string>() - { - { VariableQualifiers.In, string.Empty}, - {VariableQualifiers.Out, "out"}, - {VariableQualifiers.InOut, "inout"} - }; - - private static Dictionary<WirePortDataType, string> m_precisionWirePortToCgType = new Dictionary<WirePortDataType, string>() - { - {WirePortDataType.FLOAT, "{0}"}, - {WirePortDataType.FLOAT2, "{0}2"}, - {WirePortDataType.FLOAT3, "{0}3"}, - {WirePortDataType.FLOAT4, "{0}4"}, - {WirePortDataType.FLOAT3x3, "{0}3x3"}, - {WirePortDataType.FLOAT4x4, "{0}4x4"}, - {WirePortDataType.COLOR, "{0}4"}, - {WirePortDataType.INT, "int"}, - {WirePortDataType.SAMPLER1D, "sampler1D"}, - {WirePortDataType.SAMPLER2D, "sampler2D"}, - {WirePortDataType.SAMPLER3D, "sampler3D"}, - {WirePortDataType.SAMPLERCUBE, "samplerCUBE"} - }; - - private static Dictionary<WirePortDataType, string> m_wirePortToCgType = new Dictionary<WirePortDataType, string>() - { - { WirePortDataType.FLOAT, "float"}, - {WirePortDataType.FLOAT2, "float2"}, - {WirePortDataType.FLOAT3, "float3"}, - {WirePortDataType.FLOAT4, "float4"}, - {WirePortDataType.FLOAT3x3, "float3x3"}, - {WirePortDataType.FLOAT4x4, "float4x4"}, - {WirePortDataType.COLOR, "float4"}, - {WirePortDataType.INT, "int"}, - {WirePortDataType.SAMPLER1D, "sampler1D"}, - {WirePortDataType.SAMPLER2D, "sampler2D"}, - {WirePortDataType.SAMPLER3D, "sampler3D"}, - {WirePortDataType.SAMPLERCUBE, "samplerCUBE"}, - {WirePortDataType.UINT, "uint"} - }; - - private static Dictionary<KeyCode, string> m_keycodeToString = new Dictionary<KeyCode, string>() - { - {KeyCode.Alpha0,"0" }, - {KeyCode.Alpha1,"1" }, - {KeyCode.Alpha2,"2" }, - {KeyCode.Alpha3,"3" }, - {KeyCode.Alpha4,"4" }, - {KeyCode.Alpha5,"5" }, - {KeyCode.Alpha6,"6" }, - {KeyCode.Alpha7,"7" }, - {KeyCode.Alpha8,"8" }, - {KeyCode.Alpha9,"9" } - }; - - private static Dictionary<WireStatus, Color> m_wireStatusToColor = new Dictionary<WireStatus, Color>() - { - { WireStatus.Default,new Color(0.7f,0.7f,0.7f,1.0f) }, - {WireStatus.Highlighted,Color.yellow }, - {WireStatus.Selected,Color.white} - }; - - private static Dictionary<WirePortDataType, string> m_autoSwizzle = new Dictionary<WirePortDataType, string>() - { - {WirePortDataType.FLOAT, ".x"}, - {WirePortDataType.FLOAT2, ".xy"}, - {WirePortDataType.FLOAT3, ".xyz"}, - {WirePortDataType.FLOAT4, ".xyzw"} - }; - - private static Dictionary<string, bool> m_unityNativeShaderPaths = new Dictionary<string, bool> - { - { "Resources/unity_builtin_extra", true }, - { "Library/unity default resources", true } - }; - - private static Dictionary<WirePortDataType, int> m_portPriority = new Dictionary<WirePortDataType, int>() - { - { WirePortDataType.OBJECT, 0}, - {WirePortDataType.SAMPLER1D, 0}, - {WirePortDataType.SAMPLER2D, 0}, - {WirePortDataType.SAMPLER3D, 0}, - {WirePortDataType.SAMPLERCUBE, 0}, - {WirePortDataType.FLOAT3x3, 1}, - {WirePortDataType.FLOAT4x4, 2}, - {WirePortDataType.INT, 3}, - {WirePortDataType.FLOAT, 4}, - {WirePortDataType.FLOAT2, 5}, - {WirePortDataType.FLOAT3, 6}, - {WirePortDataType.FLOAT4, 7}, - {WirePortDataType.COLOR, 7} - }; - - private static readonly string IncorrectInputConnectionErrorMsg = "Input Port {0} from node {1} has type {2}\nwhich is incompatible with connection of type {3} from port {4} on node {5}"; - private static readonly string IncorrectOutputConnectionErrorMsg = "Output Port {0} from node {1} has type {2}\nwhich is incompatible with connection of type {3} from port {4} on node {5}"; - private static readonly string NoVertexModeNodeWarning = "{0} is unable to generate code in vertex function"; - - private static float SwitchFixedHeight; - private static float SwitchFontSize; - private static RectOffset SwitchNodeBorder; - private static RectOffset SwitchNodeMargin; - private static RectOffset SwitchNodeOverflow; - private static RectOffset SwitchNodePadding; - - public static void ForceExampleShaderCompilation() - { - CurrentWindow.ForceMaterialsToUpdate( ref m_exampleMaterialIDs ); - - } - - public static void Destroy() - { - if( IOUtils.AllOpenedWindows != null && IOUtils.AllOpenedWindows.Count > 0 ) - { - return; - } - else - { - IOUtils.AllOpenedWindows.Clear(); - } - - Initialized = false; - PlusStyle = null; - MinusStyle = null; - m_textInfo = null; - RangedFloatSliderStyle = null; - RangedFloatSliderThumbStyle = null; - PropertyPopUp = null; - ObjectField = null; - PreviewExpander = null; - PreviewCollapser = null; - MenuItemToggleStyle = null; - MenuItemEnableStyle = null; - MenuItemBackgroundStyle = null; - MenuItemToolbarStyle = null; - MenuItemInspectorDropdownStyle = null; - ObjectFieldThumb = null; - ObjectFieldThumbOverlay = null; - InspectorPopdropdownStyle = null; - InspectorPopdropdownFallback = null; - TooltipBox = null; - UnZoomedNodeTitleStyle = null; - UnZoomedPropertyValuesTitleStyle = null; - UnZoomedInputPortStyle = null; - UnZoomedOutputPortPortStyle = null; - ToolbarSearchTextfield = null; - ToolbarSearchCancelButton = null; - FloatIntPickerONOFF = null; - Box = null; - Button = null; - TextArea = null; - Label = null; - Toggle = null; - Textfield = null; - - CommentaryTitle = null; - InputPortLabel = null; - OutputPortLabel = null; - - IntShader = null; - FloatShader = null; - Vector2Shader = null; - Vector3Shader = null; - Vector4Shader = null; - ColorShader = null; - Texture2DShader = null; - - MaskingShader = null; - - BoldErrorStyle = null; - BoldWarningStyle = null; - BoldInfoStyle = null; - Separator = null; - ToolbarMainTitle = null; - - GraphButtonIcon = null; - GraphButton = null; - GraphDropDown = null; - - ConsoleLogLabel = null; - ConsoleLogMessage = null; - ConsoleLogCircle = null; - - MiniButtonTopLeft = null; - MiniButtonTopMid = null; - MiniButtonTopRight = null; - - NodeWindowOffSquare = null; - NodeHeaderSquare = null; - NodeWindowOnSquare = null; - InternalDataOnPort = null; - InternalDataBackground = null; - - MiniObjectFieldThumbOverlay = null; - MiniSamplerButton = null; - - Resources.UnloadAsset( SmallErrorIcon ); - SmallErrorIcon = null; - - Resources.UnloadAsset( SmallWarningIcon ); - SmallWarningIcon = null; - - Resources.UnloadAsset( SmallInfoIcon ); - SmallInfoIcon = null; - - LockIconOpen = null; - LockIconClosed = null; - - FloatIntIconON = null; - FloatIntIconOFF = null; - - Resources.UnloadAsset( CheckmarkIcon ); - CheckmarkIcon = null; - - Resources.UnloadAsset( PopupIcon ); - PopupIcon = null; - - Resources.UnloadAsset( MasterNodeOnTexture ); - MasterNodeOnTexture = null; - - Resources.UnloadAsset( MasterNodeOffTexture ); - MasterNodeOffTexture = null; - - Resources.UnloadAsset( GPUInstancedOnTexture ); - GPUInstancedOnTexture = null; - - Resources.UnloadAsset( GPUInstancedOffTexture ); - GPUInstancedOffTexture = null; - - MainSkin = null; - - if( LinearMaterial != null ) - GameObject.DestroyImmediate( LinearMaterial ); - - LinearMaterial = null; - - if( m_undoHelper == null ) - { - m_undoHelper.Clear(); - m_undoHelper = null; - } - ASEMaterialInspector.Instance = null; - } - - public static void ResetMainSkin() - { - if( (object)MainSkin != null ) - { - CurrentHeaderHeight = HeaderMaxHeight; - ScaledPortsDelta = PortsDelta; - MainSkin.textField.fontSize = (int)( Constants.TextFieldFontSize ); - MainSkin.label.fontSize = (int)( Constants.DefaultFontSize ); - MainSkin.customStyles[ (int)CustomStyle.NodeTitle ].fontSize = (int)( Constants.DefaultTitleFontSize ); - - InputPortLabel.fontSize = (int)( Constants.DefaultFontSize ); - OutputPortLabel.fontSize = (int)( Constants.DefaultFontSize ); - CommentaryTitle.fontSize = (int)( Constants.DefaultFontSize ); - } - } - - public static void InitMainSkin() - { - MainSkin = AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath( IOUtils.MainSkinGUID ), typeof( GUISkin ) ) as GUISkin; - Initialized = true; - Texture2D portTex = GetCustomStyle( CustomStyle.PortEmptyIcon ).normal.background; - PortsSize = new Vector2( portTex.width, portTex.height ); - PortsDelta = new Vector3( 0.5f * PortsSize.x, 0.5f * PortsSize.y ); - HeaderMaxHeight = MainSkin.customStyles[ (int)CustomStyle.NodeHeader ].normal.background.height; - - RectOffsetZero = new RectOffset( 0, 0, 0, 0 ); - RectOffsetOne = new RectOffset( 1, 1, 1, 1 ); - RectOffsetTwo = new RectOffset( 2, 2, 2, 2 ); - RectOffsetThree = new RectOffset( 3, 3, 3, 3 ); - RectOffsetFour = new RectOffset( 4, 4, 4, 4 ); - RectOffsetFive = new RectOffset( 5, 5, 5, 5 ); - RectOffsetSix = new RectOffset( 6, 6, 6, 6 ); - - PropertyPopUp = GetCustomStyle( CustomStyle.NodePropertyPicker ); - ObjectField = new GUIStyle( (GUIStyle)"ObjectField" ); - PreviewExpander = GetCustomStyle( CustomStyle.NodePreviewExpander ); - PreviewCollapser = GetCustomStyle( CustomStyle.NodePreviewCollapser ); - - WireNodeSelection = AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath( "bfe0b03d5d60cea4f9d4b2d1d121e592" ), typeof( Texture2D ) ) as Texture2D; - SliderButton = AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath( "dd563e33152bb6443b099b4139ceecb9" ), typeof( Texture2D ) ) as Texture2D; - - SmallErrorIcon = EditorGUIUtility.Load( "icons/d_console.erroricon.sml.png" ) as Texture2D; - SmallWarningIcon = EditorGUIUtility.Load( "icons/d_console.warnicon.sml.png" ) as Texture2D; - SmallInfoIcon = EditorGUIUtility.Load( "icons/d_console.infoicon.sml.png" ) as Texture2D; - - LockIconOpen = new GUIContent( EditorGUIUtility.IconContent( "LockIcon-On" ) ); - LockIconOpen.tooltip = "Click to unlock and customize the variable name"; - LockIconClosed = new GUIContent( EditorGUIUtility.IconContent( "LockIcon" ) ); - LockIconClosed.tooltip = "Click to lock and auto-generate the variable name"; - - if( UsingProSkin ) - { - FloatIntIconON = new GUIContent( EditorGUIUtility.IconContent( "CircularToggle_ON" ) ); - FloatIntIconOFF = new GUIContent( EditorGUIUtility.IconContent( "CircularToggle_OFF" ) ); - } - else - { - FloatIntIconON = new GUIContent( ( AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath( "ac0860a6a77e29d4091ba790a17daa0f" ), typeof( Texture2D ) ) as Texture2D ) ); - FloatIntIconOFF = new GUIContent( ( AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath( "1aaca50d084b0bb43854f075ce2f302b" ), typeof( Texture2D ) ) as Texture2D ) ); - } - - CommentaryTitle = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.CommentaryTitle ] ); - InputPortLabel = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.InputPortlabel ] ); - OutputPortLabel = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.OutputPortLabel ] ); - - CheckmarkIcon = AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath( "e9c4642eaa083a54ab91406d8449e6ac" ), typeof( Texture2D ) ) as Texture2D; - PopupIcon = AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath( "d2384a227b4ac4943b73c8151393e502" ), typeof( Texture2D ) ) as Texture2D; - - BoldErrorStyle = new GUIStyle( (GUIStyle)"BoldLabel" ); - BoldErrorStyle.normal.textColor = Color.red; - BoldErrorStyle.alignment = TextAnchor.MiddleCenter; - BoldWarningStyle = new GUIStyle( (GUIStyle)"BoldLabel" ); - BoldWarningStyle.normal.textColor = Color.yellow; - BoldWarningStyle.alignment = TextAnchor.MiddleCenter; - BoldInfoStyle = new GUIStyle( (GUIStyle)"BoldLabel" ); - BoldInfoStyle.normal.textColor = Color.white; - BoldInfoStyle.alignment = TextAnchor.MiddleCenter; - - ToolbarMainTitle = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.MainCanvasTitle ] ); - Separator = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.FlatBackground ] ); - MiniButtonTopLeft = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.MiniButtonTopLeft ] ); - MiniButtonTopMid = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.MiniButtonTopMid ] ); - MiniButtonTopRight = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.MiniButtonTopRight ] ); - - InternalDataOnPort = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.NodeTitle ] ); - InternalDataOnPort.fontSize = 8; - InternalDataOnPort.fontStyle = FontStyle.BoldAndItalic; - InternalDataBackground = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.NodeWindowOffSquare ] ); - InternalDataBackground.normal.background = AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath( "330fd0c8f074a3c4f8042114a61a73d9" ), typeof( Texture2D ) ) as Texture2D; - InternalDataBackground.overflow = RectOffsetOne; - - MiniObjectFieldThumbOverlay = new GUIStyle( (GUIStyle)"ObjectFieldThumbOverlay" ); - MiniSamplerButton = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.SamplerButton ] ); - - m_textInfo = new System.Globalization.CultureInfo( "en-US", false ).TextInfo; - RangedFloatSliderStyle = new GUIStyle( GUI.skin.horizontalSlider ); - RangedFloatSliderThumbStyle = new GUIStyle( GUI.skin.horizontalSliderThumb ); - RangedFloatSliderThumbStyle.normal.background = SliderButton; - RangedFloatSliderThumbStyle.active.background = null; - RangedFloatSliderThumbStyle.hover.background = null; - RangedFloatSliderThumbStyle.focused.background = null; - RangedFloatSliderThumbStyle.overflow = new RectOffset( 1, 1, -4, 4 ); - RangedFloatSliderThumbStyle.margin = RectOffsetZero; - - SwitchNodePopUp = new GUIStyle( (GUIStyle)"Popup" ); - // RectOffset cannot be initiliazed on constructor - SwitchNodeBorder = new RectOffset( 4, 15, 3, 3 ); - SwitchNodeMargin = new RectOffset( 4, 4, 3, 3 ); - SwitchNodeOverflow = new RectOffset( 0, 0, -1, 2 ); - SwitchNodePadding = new RectOffset( 6, 14, 2, 3 ); - SwitchFixedHeight = 18; - SwitchFontSize = 10; - - GraphButtonIcon = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.GraphButtonIcon ] ); - GraphButton = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.GraphButton ] ); - GraphDropDown = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.GraphButton ] ); - GraphDropDown.padding.right = 20; - - Box = new GUIStyle( MainSkin.box ); - Button = new GUIStyle( GUI.skin.button ); - TextArea = new GUIStyle( GUI.skin.textArea ); - Label = new GUIStyle( GUI.skin.label ); - Toggle = new GUIStyle( GUI.skin.toggle ); - Textfield = new GUIStyle( GUI.skin.textField ); - //ShaderIcon = EditorGUIUtility.IconContent( "Shader Icon" ).image; - //MaterialIcon = EditorGUIUtility.IconContent( "Material Icon" ).image; - - ConsoleLogLabel = new GUIStyle( GUI.skin.label ); - ConsoleLogMessage = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.ConsoleLogMessage ] ); - ConsoleLogCircle = new GUIStyle( MainSkin.customStyles[ (int)CustomStyle.ConsoleLogCircle ] ); - - NodeWindowOffSquare = GetCustomStyle( CustomStyle.NodeWindowOffSquare ); - NodeHeaderSquare = GetCustomStyle( CustomStyle.NodeHeaderSquare ); - NodeWindowOnSquare = GetCustomStyle( CustomStyle.NodeWindowOnSquare ); - - UnZoomedNodeTitleStyle = new GUIStyle( GetCustomStyle( CustomStyle.NodeTitle ) ); - UnZoomedNodeTitleStyle.fontSize = 13; - - UnZoomedPropertyValuesTitleStyle = new GUIStyle( GetCustomStyle( CustomStyle.PropertyValuesTitle ) ); - UnZoomedPropertyValuesTitleStyle.fontSize = 11; - - UnZoomedInputPortStyle = new GUIStyle( InputPortLabel ); - UnZoomedInputPortStyle.fontSize = (int)Constants.DefaultFontSize; - - UnZoomedOutputPortPortStyle = new GUIStyle( OutputPortLabel ); - UnZoomedOutputPortPortStyle.fontSize = (int)Constants.DefaultFontSize; - - ObjectFieldThumb = new GUIStyle( (GUIStyle)"ObjectFieldThumb" ); - ObjectFieldThumbOverlay = new GUIStyle( (GUIStyle)"ObjectFieldThumbOverlay" ); - - FloatIntPickerONOFF = new GUIStyle( "metimelabel" ); - FloatIntPickerONOFF.padding.left = -2; - FloatIntPickerONOFF.margin = new RectOffset(0,2,2,2); - - TooltipBox = new GUIStyle( (GUIStyle)"Tooltip" ); - TooltipBox.richText = true; - - MasterNodeOnTexture = AssetDatabase.LoadAssetAtPath<Texture2D>( AssetDatabase.GUIDToAssetPath( IOUtils.MasterNodeOnTextureGUID ) ); - MasterNodeOffTexture = AssetDatabase.LoadAssetAtPath<Texture2D>( AssetDatabase.GUIDToAssetPath( IOUtils.MasterNodeOnTextureGUID ) ); - - GPUInstancedOnTexture = AssetDatabase.LoadAssetAtPath<Texture2D>( AssetDatabase.GUIDToAssetPath( IOUtils.GPUInstancedOnTextureGUID ) ); - GPUInstancedOffTexture = AssetDatabase.LoadAssetAtPath<Texture2D>( AssetDatabase.GUIDToAssetPath( IOUtils.GPUInstancedOffTextureGUID ) ); - - CheckNullMaterials(); - - UsingProSkin = EditorGUIUtility.isProSkin; - FetchMenuItemStyles(); - } - - public static bool IsLoading - { - get { return CurrentWindow.OutsideGraph.IsLoading; } - } - - public static void CheckNullMaterials() - { - if( LinearMaterial == null ) - { - Shader linearShader = AssetDatabase.LoadAssetAtPath<Shader>( AssetDatabase.GUIDToAssetPath( "e90ef6ea05743b84baf9549874c52e47" ) ); //linear previews - LinearMaterial = new Material( linearShader ); - } - - if( IntShader == null ) - IntShader = AssetDatabase.LoadAssetAtPath<Shader>( AssetDatabase.GUIDToAssetPath( "0f64d695b6ffacc469f2dd31432a232a" ) ); //int - if( FloatShader == null ) - FloatShader = AssetDatabase.LoadAssetAtPath<Shader>( AssetDatabase.GUIDToAssetPath( "d9ca47581ac157145bff6f72ac5dd73e" ) ); //ranged float - if( Vector2Shader == null ) - Vector2Shader = AssetDatabase.LoadAssetAtPath<Shader>( AssetDatabase.GUIDToAssetPath( "88b4191eb06084d4da85d1dd2f984085" ) ); //vector2 - if( Vector3Shader == null ) - Vector3Shader = AssetDatabase.LoadAssetAtPath<Shader>( AssetDatabase.GUIDToAssetPath( "8a44d38f06246bf48944b3f314bc7920" ) ); //vector3 - if( Vector4Shader == null ) - Vector4Shader = AssetDatabase.LoadAssetAtPath<Shader>( AssetDatabase.GUIDToAssetPath( "aac241d0e47a5a84fbd2edcd640788dc" ) ); //vector4 - if( ColorShader == null ) - ColorShader = AssetDatabase.LoadAssetAtPath<Shader>( AssetDatabase.GUIDToAssetPath( "6cf365ccc7ae776488ae8960d6d134c3" ) ); //color node - if( MaskingShader == null ) - MaskingShader = AssetDatabase.LoadAssetAtPath<Shader>( AssetDatabase.GUIDToAssetPath( "9c34f18ebe2be3e48b201b748c73dec0" ) ); //masking shader - if( Texture2DShader == null ) - Texture2DShader = AssetDatabase.LoadAssetAtPath<Shader>( AssetDatabase.GUIDToAssetPath( "13bd295c44d04e1419f20f792d331e33" ) ); //texture2d shader - } - - private static void FetchMenuItemStyles() - { - ObjectFieldThumb = new GUIStyle( (GUIStyle)"ObjectFieldThumb" ); - ObjectFieldThumbOverlay = new GUIStyle( (GUIStyle)"ObjectFieldThumbOverlay" ); - MenuItemToggleStyle = new GUIStyle( (GUIStyle)"foldout" ); - MenuItemEnableStyle = UsingProSkin ? new GUIStyle( (GUIStyle)"OL ToggleWhite" ) : new GUIStyle( (GUIStyle)"OL Toggle" ); - MenuItemBackgroundStyle = new GUIStyle( (GUIStyle)"TE NodeBackground" ); - MenuItemToolbarStyle = new GUIStyle( (GUIStyle)"toolbarbutton" ) { fixedHeight = 20 }; - MenuItemInspectorDropdownStyle = new GUIStyle( (GUIStyle)"toolbardropdown" ) { fixedHeight = 20 }; - MenuItemInspectorDropdownStyle.margin.bottom = 2; - - - InspectorPopdropdownStyle = new GUIStyle( GUI.skin.GetStyle( "PopupCurveDropdown" ) ); - InspectorPopdropdownStyle.alignment = TextAnchor.MiddleRight; - InspectorPopdropdownStyle.border.bottom = 16; - - InspectorPopdropdownFallback = new GUIStyle( InspectorPopdropdownStyle ); - InspectorPopdropdownFallback.overflow = new RectOffset( 0, -5, 0, 0 ); - - PlusStyle = ( EditorGUIUtility.isProSkin ) ? new GUIStyle( GetCustomStyle( CustomStyle.CustomExpressionAddItem ) ) : new GUIStyle( (GUIStyle)"OL Plus" ); - PlusStyle.imagePosition = ImagePosition.ImageOnly; - PlusStyle.overflow = new RectOffset( -2, 0, -4, 0 ); - - MinusStyle = ( EditorGUIUtility.isProSkin ) ? new GUIStyle( GetCustomStyle( CustomStyle.CustomExpressionRemoveItem ) ) : new GUIStyle( (GUIStyle)"OL Minus" ); - MinusStyle.contentOffset = Vector2.zero; - MinusStyle.imagePosition = ImagePosition.ImageOnly; - MinusStyle.overflow = new RectOffset( -2, 0, -4, 0 ); - - ToolbarSearchTextfield = new GUIStyle( (GUIStyle)"ToolbarSeachTextField" ); - ToolbarSearchCancelButton = new GUIStyle( (GUIStyle)"ToolbarSeachCancelButton" ); - } - - public static void UpdateMainSkin( DrawInfo drawInfo ) - { - CurrentHeaderHeight = HeaderMaxHeight * drawInfo.InvertedZoom; - ScaledPortsDelta = drawInfo.InvertedZoom * PortsDelta; - MainSkin.textField.fontSize = (int)( Constants.TextFieldFontSize * drawInfo.InvertedZoom ); - MainSkin.label.fontSize = (int)( Constants.DefaultFontSize * drawInfo.InvertedZoom ); - - MainSkin.customStyles[ (int)CustomStyle.NodeTitle ].fontSize = (int)( Constants.DefaultTitleFontSize * drawInfo.InvertedZoom ); - MainSkin.customStyles[ (int)CustomStyle.PropertyValuesTitle ].fontSize = (int)( Constants.PropertiesTitleFontSize * drawInfo.InvertedZoom ); - - InputPortLabel.fontSize = (int)( Constants.DefaultFontSize * drawInfo.InvertedZoom ); - OutputPortLabel.fontSize = (int)( Constants.DefaultFontSize * drawInfo.InvertedZoom ); - CommentaryTitle.fontSize = (int)( Constants.DefaultFontSize * drawInfo.InvertedZoom ); - - RangedFloatSliderStyle.fixedHeight = 18 * drawInfo.InvertedZoom; - RangedFloatSliderThumbStyle.fixedHeight = 12 * drawInfo.InvertedZoom; - RangedFloatSliderThumbStyle.fixedWidth = 10 * drawInfo.InvertedZoom; - RangedFloatSliderThumbStyle.overflow.left = (int)( 1 * drawInfo.InvertedZoom ); - RangedFloatSliderThumbStyle.overflow.right = (int)( 1 * drawInfo.InvertedZoom ); - RangedFloatSliderThumbStyle.overflow.top = (int)( -4 * drawInfo.InvertedZoom ); - RangedFloatSliderThumbStyle.overflow.bottom = (int)( 4 * drawInfo.InvertedZoom ); - - SwitchNodePopUp.fixedHeight = SwitchFixedHeight * drawInfo.InvertedZoom; - - SwitchNodePopUp.border.left = (int)( SwitchNodeBorder.left * drawInfo.InvertedZoom ); - SwitchNodePopUp.border.right = (int)( SwitchNodeBorder.right * drawInfo.InvertedZoom ); - SwitchNodePopUp.border.top = (int)( SwitchNodeBorder.top * drawInfo.InvertedZoom ); - SwitchNodePopUp.border.bottom = (int)( SwitchNodeBorder.bottom * drawInfo.InvertedZoom ); - - SwitchNodePopUp.margin.left = (int)( SwitchNodeMargin.left * drawInfo.InvertedZoom ); - SwitchNodePopUp.margin.right = (int)( SwitchNodeMargin.right * drawInfo.InvertedZoom ); - SwitchNodePopUp.margin.top = (int)( SwitchNodeMargin.top * drawInfo.InvertedZoom ); - SwitchNodePopUp.margin.bottom = (int)( SwitchNodeMargin.bottom * drawInfo.InvertedZoom ); - - SwitchNodePopUp.overflow.left = (int)( SwitchNodeOverflow.left * drawInfo.InvertedZoom ); - SwitchNodePopUp.overflow.right = (int)( SwitchNodeOverflow.right * drawInfo.InvertedZoom ); - SwitchNodePopUp.overflow.top = (int)( SwitchNodeOverflow.top * drawInfo.InvertedZoom ); - SwitchNodePopUp.overflow.bottom = (int)( SwitchNodeOverflow.bottom * drawInfo.InvertedZoom ); - - SwitchNodePopUp.padding.left = (int)( SwitchNodePadding.left * drawInfo.InvertedZoom ); - SwitchNodePopUp.padding.right = (int)( SwitchNodePadding.right * drawInfo.InvertedZoom ); - SwitchNodePopUp.padding.top = (int)( SwitchNodePadding.top * drawInfo.InvertedZoom ); - SwitchNodePopUp.padding.bottom = (int)( SwitchNodePadding.bottom * drawInfo.InvertedZoom ); - - SwitchNodePopUp.fontSize = (int)( SwitchFontSize * drawInfo.InvertedZoom ); - - BoldErrorStyle.fontSize = (int)( 12 * drawInfo.InvertedZoom ); - BoldWarningStyle.fontSize = (int)( 12 * drawInfo.InvertedZoom ); - BoldInfoStyle.fontSize = (int)( 12 * drawInfo.InvertedZoom ); - - PropertyPopUp.fixedHeight = Constants.PropertyPickerHeight * drawInfo.InvertedZoom; - PropertyPopUp.fixedWidth = Constants.PropertyPickerWidth * drawInfo.InvertedZoom; - if( UsingProSkin != EditorGUIUtility.isProSkin ) - { - UsingProSkin = EditorGUIUtility.isProSkin; - FetchMenuItemStyles(); - } - - GraphDropDown.padding.left = (int)( 2 * drawInfo.InvertedZoom + 2 ); - GraphDropDown.padding.right = (int)( 20 * drawInfo.InvertedZoom ); - GraphDropDown.fontSize = (int)( 10 * drawInfo.InvertedZoom ); - - PreviewExpander.fixedHeight = Constants.PreviewExpanderHeight * drawInfo.InvertedZoom; - PreviewExpander.fixedWidth = Constants.PreviewExpanderWidth * drawInfo.InvertedZoom; - - PreviewCollapser.fixedHeight = Constants.PreviewExpanderHeight * drawInfo.InvertedZoom; - PreviewCollapser.fixedWidth = Constants.PreviewExpanderWidth * drawInfo.InvertedZoom; - - MainSkin.customStyles[ (int)CustomStyle.SamplerButton ].fontSize = (int)( 9 * drawInfo.InvertedZoom ); - ObjectFieldThumbOverlay.fontSize = (int)( 9 * drawInfo.InvertedZoom ); - MiniButtonTopLeft.fontSize = (int)( 9 * drawInfo.InvertedZoom ); - MiniButtonTopMid.fontSize = (int)( 9 * drawInfo.InvertedZoom ); - MiniButtonTopRight.fontSize = (int)( 9 * drawInfo.InvertedZoom ); - - MiniObjectFieldThumbOverlay.fontSize = (int)( 7 * drawInfo.InvertedZoom ); - MiniSamplerButton.fontSize = (int)( 8 * drawInfo.InvertedZoom ); - - InternalDataOnPort.fontSize = (int)( 8 * drawInfo.InvertedZoom ); - ToolbarMainTitle.padding.left = 0; - ToolbarMainTitle.padding.right = 0; - - CheckNullMaterials(); - } - - public static void CacheLabelVars() - { - m_alignment = GUI.skin.label.alignment; - m_clipping = GUI.skin.label.clipping; - m_wordWrap = GUI.skin.label.wordWrap; - m_fontSize = GUI.skin.label.fontSize; - m_fontStyle = GUI.skin.label.fontStyle; - m_fontColor = GUI.skin.label.normal.textColor; - } - - public static void RestoreLabelVars() - { - GUI.skin.label.alignment = m_alignment; - GUI.skin.label.clipping = m_clipping; - GUI.skin.label.wordWrap = m_wordWrap; - GUI.skin.label.fontSize = m_fontSize; - GUI.skin.label.fontStyle = m_fontStyle; - GUI.skin.label.normal.textColor = m_fontColor; - } - - public static string GetTooltipForToolButton( ToolButtonType toolButtonType, int state ) { return m_toolButtonTooltips[ toolButtonType ][ state ]; } - - public static string KeyCodeToString( KeyCode keyCode ) - { - if( m_keycodeToString.ContainsKey( keyCode ) ) - return m_keycodeToString[ keyCode ]; - - return keyCode.ToString(); - } - - public static string TextureTypeToCgType( TextureType type ) { return m_textureTypeToCgType[ type ]; } - - public static string QualifierToCg( VariableQualifiers qualifier ) - { - return m_qualifierToCg[ qualifier ]; - } - - public static string WirePortToCgType( WirePortDataType type ) - { - if( type == WirePortDataType.OBJECT ) - return string.Empty; - - return m_wirePortToCgType[ type ]; - } - - public static string FinalPrecisionWirePortToCgType( PrecisionType precisionType, WirePortDataType type ) - { - return PrecisionWirePortToCgType( precisionType, type ); - } - - public static string PrecisionWirePortToCgType( PrecisionType precisionType, WirePortDataType type ) - { - if( type == WirePortDataType.OBJECT ) - return string.Empty; - - if( type == WirePortDataType.INT ) - return m_wirePortToCgType[ type ]; - - if( type == WirePortDataType.UINT ) - return m_wirePortToCgType[ type ]; - - return string.Format( m_precisionWirePortToCgType[ type ], m_precisionTypeToCg[ precisionType ] ); - } - - public static string GetAutoSwizzle( WirePortDataType type ) - { - return m_autoSwizzle[ type ]; - } - - public static Color GetColorForDataType( WirePortDataType dataType, bool monochromeMode = true, bool isInput = true ) - { - if( monochromeMode ) - { - return isInput ? m_dataTypeToColorMonoMode[ 0 ] : m_dataTypeToColorMonoMode[ 1 ]; - } - else - { - if ( m_dataTypeToColor.ContainsKey( dataType ) ) - return m_dataTypeToColor[ dataType ]; - } - return m_dataTypeToColor[ WirePortDataType.OBJECT ]; - } - - public static bool IsValidType( WirePortDataType type ) - { - switch ( type ) - { - case WirePortDataType.OBJECT: - case WirePortDataType.FLOAT: - case WirePortDataType.FLOAT2: - case WirePortDataType.FLOAT3: - case WirePortDataType.FLOAT4: - case WirePortDataType.FLOAT3x3: - case WirePortDataType.FLOAT4x4: - case WirePortDataType.COLOR: - case WirePortDataType.INT: - case WirePortDataType.SAMPLER1D: - case WirePortDataType.SAMPLER2D: - case WirePortDataType.SAMPLER3D: - case WirePortDataType.SAMPLERCUBE: - return true; - } - return false; - } - public static string GetNameForDataType( WirePortDataType dataType ) { return m_dataTypeToName[ dataType ]; } - - public static string GetInputDeclarationFromType( PrecisionType precision, SurfaceInputs inputType ) - { - string precisionStr = m_precisionTypeToCg[ precision ]; - return string.Format( m_inputTypeDeclaration[ inputType ], precisionStr ); - } - - public static string GetInputValueFromType( SurfaceInputs inputType ) { return m_inputTypeName[ inputType ]; } - private static string CreateLocalValueName( PrecisionType precision, WirePortDataType dataType, string localOutputValue, string value ) { return string.Format( Constants.LocalValueDecWithoutIdent, PrecisionWirePortToCgType( precision, dataType ), localOutputValue, value ); } - - public static string CastPortType( ref MasterNodeDataCollector dataCollector, PrecisionType nodePrecision, NodeCastInfo castInfo, object value, WirePortDataType oldType, WirePortDataType newType, string parameterName = null ) - { - if( oldType == newType || newType == WirePortDataType.OBJECT ) - { - return ( parameterName != null ) ? parameterName : value.ToString(); - } - - PrecisionType currentPrecision = nodePrecision; - string precisionStr = m_precisionTypeToCg[ currentPrecision ]; - string newTypeStr = m_wirePortToCgType[ newType ]; - newTypeStr = m_textInfo.ToTitleCase( newTypeStr ); - int castId = ( dataCollector.PortCategory == MasterNodePortCategory.Vertex || dataCollector.PortCategory == MasterNodePortCategory.Tessellation ) ? dataCollector.AvailableVertexTempId : dataCollector.AvailableFragTempId; - string localVarName = "temp_cast_" + castId;//m_wirePortToCgType[ oldType ] + "To" + newTypeStr + "_" + castInfo.ToString(); - string result = string.Empty; - bool useRealValue = ( parameterName == null ); - - switch( oldType ) - { - case WirePortDataType.FLOAT: - { - switch( newType ) - { - case WirePortDataType.OBJECT: result = useRealValue ? value.ToString() : parameterName; break; - case WirePortDataType.FLOAT2: - { - string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, string.Format( Constants.CastHelper, ( ( useRealValue ) ? value.ToString() : parameterName ), "xx" ) ); - dataCollector.AddToLocalVariables( dataCollector.PortCategory, -1, localVal ); - result = localVarName; - } - break; - case WirePortDataType.FLOAT3: - { - string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, string.Format( Constants.CastHelper, ( ( useRealValue ) ? value.ToString() : parameterName ), "xxx" ) ); - dataCollector.AddToLocalVariables( dataCollector.PortCategory, -1, localVal ); - result = localVarName; - } - break; - case WirePortDataType.COLOR: - { - string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, string.Format( Constants.CastHelper, ( ( useRealValue ) ? value.ToString() : parameterName ), "xxxx" ) ); - dataCollector.AddToLocalVariables( dataCollector.PortCategory, -1, localVal ); - result = localVarName; - } - break; - case WirePortDataType.FLOAT4: - { - string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, string.Format( Constants.CastHelper, ( ( useRealValue ) ? value.ToString() : parameterName ), "xxxx" ) ); - dataCollector.AddToLocalVariables( dataCollector.PortCategory, -1, localVal ); - result = localVarName; - } - break; - case WirePortDataType.FLOAT3x3: - { - string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, ( ( useRealValue ) ? value.ToString() : parameterName ) ); - dataCollector.AddToLocalVariables( dataCollector.PortCategory, -1, localVal ); - result = localVarName; - } - break; - case WirePortDataType.FLOAT4x4: - { - string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, ( ( useRealValue ) ? value.ToString() : parameterName ) ); - dataCollector.AddToLocalVariables( dataCollector.PortCategory, -1, localVal ); - result = localVarName; - } - break; - case WirePortDataType.INT: - { - result = ( useRealValue ) ? ( (int)value ).ToString() : "(int)" + parameterName; - } - break; - } - } - break; - case WirePortDataType.FLOAT2: - { - Vector2 vecVal = useRealValue ? (Vector2)value : Vector2.zero; - switch( newType ) - { - case WirePortDataType.OBJECT: result = useRealValue ? precisionStr + "2( " + vecVal.x + " , " + vecVal.y + " )" : parameterName; break; - case WirePortDataType.FLOAT: - { - result = ( useRealValue ) ? vecVal.x.ToString() : parameterName + ".x"; - } - break; - case WirePortDataType.FLOAT3: - { - result = ( useRealValue ) ? precisionStr + "3( " + vecVal.x + " , " + vecVal.y + " , " + " 0.0 )" : precisionStr + "3( " + parameterName + " , 0.0 )"; - } - break; - case WirePortDataType.COLOR: - case WirePortDataType.FLOAT4: - { - result = ( useRealValue ) ? precisionStr + "4( " + vecVal.x + " , " + vecVal.y + " , " + " 0.0 , 0.0 )" : precisionStr + "4( " + parameterName + ", 0.0 , 0.0 )"; - } - break; - } - } - break; - case WirePortDataType.FLOAT3: - { - Vector3 vecVal = useRealValue ? (Vector3)value : Vector3.zero; - switch( newType ) - { - case WirePortDataType.OBJECT: result = useRealValue ? precisionStr + "3( " + vecVal.x + " , " + vecVal.y + " , " + vecVal.z + " )" : parameterName; break; - case WirePortDataType.FLOAT: - { - result = ( useRealValue ) ? vecVal.x.ToString() : parameterName + ".x"; - } - break; - case WirePortDataType.FLOAT2: - { - result = ( useRealValue ) ? precisionStr + "2( " + vecVal.x + " , " + vecVal.y + " )" : parameterName + ".xy"; - } - break; - case WirePortDataType.COLOR: - case WirePortDataType.FLOAT4: - { - result = ( useRealValue ) ? precisionStr + "4( " + vecVal.x + " , " + vecVal.y + " , " + vecVal.z + " , 0.0 )" : precisionStr + "4( " + parameterName + " , 0.0 )"; - } - break; - //case WirePortDataType.FLOAT3x3: - //{ - // if ( useRealValue ) - // { - // result = precisionStr + "3x3( " + vecVal.x + " , " + vecVal.y + " , " + vecVal.z + " , " + - // vecVal.x + " , " + vecVal.y + " , " + vecVal.z + " , " + - // vecVal.x + " , " + vecVal.y + " , " + vecVal.z + " )"; - // } - // else - // { - // string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, parameterName ); - // CurrentDataCollector.AddToLocalVariables( portCategory, -1, localVal ); - // result = precisionStr + "3x3( " + localVarName + ".x , " + localVarName + ".y , " + localVarName + ".x , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".y , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z )"; - // } - //} - //break; - //case WirePortDataType.FLOAT4x4: - //{ - // if ( useRealValue ) - // { - // result = precisionStr + "4x4( " + vecVal + ".x , " + vecVal + ".y , " + vecVal + ".z , 0 , " + - // vecVal + ".x , " + vecVal + ".y , " + vecVal + ".z , 0 , " + - // vecVal + ".x , " + vecVal + ".y , " + vecVal + ".z , 0 , " + - // vecVal + ".x , " + vecVal + ".y , " + vecVal + ".z , 0 )"; - // } - // else - // { - // string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, parameterName ); - // CurrentDataCollector.AddToLocalVariables( portCategory, -1, localVal ); - // result = precisionStr + "4x4( " + localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , 0 , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , 0 , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , 0 , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , 0 )"; - // } - //} - //break; - } - } - break; - case WirePortDataType.FLOAT4: - { - Vector4 vecVal = useRealValue ? (Vector4)value : Vector4.zero; - switch( newType ) - { - case WirePortDataType.OBJECT: result = useRealValue ? precisionStr + "4( " + vecVal.x + " , " + vecVal.y + " , " + vecVal.z + " , " + vecVal.w + " )" : parameterName; break; - case WirePortDataType.FLOAT: - { - result = ( useRealValue ) ? vecVal.x.ToString() : parameterName + ".x"; - } - break; - case WirePortDataType.FLOAT2: - { - result = ( useRealValue ) ? precisionStr + "2( " + vecVal.x + " , " + vecVal.y + " )" : parameterName + ".xy"; - } - break; - case WirePortDataType.FLOAT3: - { - result = ( useRealValue ) ? precisionStr + "3( " + vecVal.x + " , " + vecVal.y + " , " + vecVal.z + " )" : parameterName + ".xyz"; - } - break; - //case WirePortDataType.FLOAT4x4: - //{ - // if ( useRealValue ) - // { - // result = precisionStr + "4x4( " + vecVal + ".x , " + vecVal + ".y , " + vecVal + ".z , " + vecVal + ".w , " + - // vecVal + ".x , " + vecVal + ".y , " + vecVal + ".z , " + vecVal + ".w , " + - // vecVal + ".x , " + vecVal + ".y , " + vecVal + ".z , " + vecVal + ".w , " + - // vecVal + ".x , " + vecVal + ".y , " + vecVal + ".z , " + vecVal + ".w )"; - // } - // else - // { - // string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, parameterName ); - // CurrentDataCollector.AddToLocalVariables( portCategory, -1, localVal ); - // result = precisionStr + "4x4( " + localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , " + localVarName + ".w , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , " + localVarName + ".w , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , " + localVarName + ".w , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , " + localVarName + ".w )"; - // } - //} - //break; - case WirePortDataType.COLOR: - { - result = useRealValue ? precisionStr + "4( " + vecVal.x + " , " + vecVal.y + " , " + vecVal.z + " , " + vecVal.w + " )" : parameterName; - } - break; - } - } - break; - case WirePortDataType.FLOAT3x3: - { - //Matrix4x4 matrixVal = useRealValue ? ( Matrix4x4 ) value : Matrix4x4.identity; - //switch ( newType ) - //{ - // case WirePortDataType.OBJECT: - // case WirePortDataType.FLOAT4x4: - // { - // result = ( useRealValue ) ? precisionStr + "4x4(" + matrixVal.m00 + " , " + matrixVal.m01 + " , " + matrixVal.m02 + " , " + matrixVal.m03 + " , " + - // matrixVal.m10 + " , " + matrixVal.m11 + " , " + matrixVal.m12 + " , " + matrixVal.m10 + " , " + - // matrixVal.m20 + " , " + matrixVal.m21 + " , " + matrixVal.m22 + " , " + matrixVal.m20 + " , " + - // matrixVal.m30 + " , " + matrixVal.m31 + " , " + matrixVal.m32 + " , " + matrixVal.m30 + " )" : precisionStr + "4x4(" + parameterName + ")"; - // } - // break; - //} - } - break; - case WirePortDataType.FLOAT4x4: - { - Matrix4x4 matrixVal = useRealValue ? (Matrix4x4)value : Matrix4x4.identity; - switch( newType ) - { - case WirePortDataType.OBJECT: - { - result = ( useRealValue ) ? precisionStr + "4x4(" + matrixVal.m00 + " , " + matrixVal.m01 + " , " + matrixVal.m02 + " , " + matrixVal.m03 + " , " + - matrixVal.m10 + " , " + matrixVal.m11 + " , " + matrixVal.m12 + " , " + matrixVal.m10 + " , " + - matrixVal.m20 + " , " + matrixVal.m21 + " , " + matrixVal.m22 + " , " + matrixVal.m20 + " , " + - matrixVal.m30 + " , " + matrixVal.m31 + " , " + matrixVal.m32 + " , " + matrixVal.m30 + " )" : parameterName; - } - break; - } - } - break; - case WirePortDataType.COLOR: - { - Color colorValue = ( useRealValue ) ? (Color)value : Color.black; - switch( newType ) - { - case WirePortDataType.OBJECT: result = useRealValue ? precisionStr + "4( " + colorValue.r + " , " + colorValue.g + " , " + colorValue.b + " , " + colorValue.a + " )" : parameterName; break; - case WirePortDataType.FLOAT: - { - result = ( useRealValue ) ? colorValue.r.ToString() : parameterName + ".r"; - } - break; - case WirePortDataType.FLOAT2: - { - result = ( useRealValue ) ? precisionStr + "2( " + colorValue.r + " , " + colorValue.g + " )" : parameterName + ".rg"; - } - break; - case WirePortDataType.FLOAT3: - { - result = ( useRealValue ) ? precisionStr + "3( " + colorValue.r + " , " + colorValue.g + " , " + colorValue.b + " )" : parameterName + ".rgb"; - } - break; - case WirePortDataType.FLOAT4: - { - result = useRealValue ? precisionStr + "4( " + colorValue.r + " , " + colorValue.g + " , " + colorValue.b + " , " + colorValue.a + " )" : parameterName; - } - break; - //case WirePortDataType.FLOAT4x4: - //{ - // if ( useRealValue ) - // { - // result = precisionStr + "4x4( " + colorValue.r + " , " + colorValue.g + " , " + colorValue.b + " , " + colorValue.a + " , " + - // colorValue.r + " , " + colorValue.g + " , " + colorValue.b + " , " + colorValue.a + " , " + - // colorValue.r + " , " + colorValue.g + " , " + colorValue.b + " , " + colorValue.a + " , " + - // colorValue.r + " , " + colorValue.g + " , " + colorValue.b + " , " + colorValue.a + " )"; - // } - // else - // { - // string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, parameterName ); - // CurrentDataCollector.AddToLocalVariables( portCategory, -1, localVal ); - - // result = precisionStr + "4x4( " + localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , " + localVarName + ".w , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , " + localVarName + ".w , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , " + localVarName + ".w , " + - // localVarName + ".x , " + localVarName + ".y , " + localVarName + ".z , " + localVarName + ".w )"; - // } - //} - //break; - } - } - break; - case WirePortDataType.INT: - { - switch( newType ) - { - case WirePortDataType.OBJECT: result = useRealValue ? value.ToString() : parameterName; break; - case WirePortDataType.FLOAT2: - case WirePortDataType.FLOAT3: - case WirePortDataType.COLOR: - case WirePortDataType.FLOAT4: - { - string localVal = CreateLocalValueName( currentPrecision, newType, localVarName, ( ( useRealValue ) ? value.ToString() : parameterName ) ); - dataCollector.AddToLocalVariables( dataCollector.PortCategory, -1, localVal ); - result = localVarName; - } - break; - case WirePortDataType.FLOAT3x3: - { - string localVal = CreateLocalValueName( currentPrecision, oldType, localVarName, ( ( useRealValue ) ? value.ToString() : parameterName ) ); - dataCollector.AddToLocalVariables( dataCollector.PortCategory, -1, localVal ); - result = localVarName; - } - break; - case WirePortDataType.FLOAT4x4: - { - string localVal = CreateLocalValueName( currentPrecision, oldType, localVarName, ( ( useRealValue ) ? value.ToString() : parameterName ) ); - dataCollector.AddToLocalVariables( dataCollector.PortCategory, -1, localVal ); - result = localVarName; - } - break; - case WirePortDataType.FLOAT: - { - result = ( useRealValue ) ? ( (int)value ).ToString() : "(float)" + parameterName; - } - break; - } - } - break; - - } - if( result.Equals( string.Empty ) ) - { - result = "0"; - string warningStr = string.Format( "Unable to cast from {0} to {1}. Generating dummy data ( {2} )", oldType, newType, result ); - - if( oldType == WirePortDataType.SAMPLER1D || oldType == WirePortDataType.SAMPLER2D || oldType == WirePortDataType.SAMPLER3D || oldType == WirePortDataType.SAMPLERCUBE ) - { - warningStr = string.Format( "Unable to cast from {0} to {1}. You might want to use a Texture Sample node and connect it to the 'Tex' port. Generating dummy data ( {2} )", oldType, newType, result ); - } - ShowMessage( warningStr, MessageSeverity.Warning ); - } - return result; - } - - public static bool CanCast( WirePortDataType from, WirePortDataType to ) - { - if( from == WirePortDataType.OBJECT || to == WirePortDataType.OBJECT || from == to ) - return true; - - switch( from ) - { - case WirePortDataType.FLOAT: - { - if( to == WirePortDataType.INT ) - return true; - } - break; - case WirePortDataType.FLOAT2: - { - return false; - } - case WirePortDataType.FLOAT3: - { - if( to == WirePortDataType.COLOR || - to == WirePortDataType.FLOAT4 ) - return true; - } - break; - case WirePortDataType.FLOAT4: - { - if( to == WirePortDataType.FLOAT3 || - to == WirePortDataType.COLOR ) - return true; - } - break; - case WirePortDataType.FLOAT3x3: - { - if( to == WirePortDataType.FLOAT4x4 ) - return true; - } - break; - case WirePortDataType.FLOAT4x4: - { - if( to == WirePortDataType.FLOAT3x3 ) - return true; - } - break; - case WirePortDataType.COLOR: - { - if( to == WirePortDataType.FLOAT3 || - to == WirePortDataType.FLOAT4 ) - return true; - - } - break; - case WirePortDataType.INT: - { - if( to == WirePortDataType.FLOAT ) - return true; - } - break; - } - - return false; - } - - public static int GetChannelsAmount( WirePortDataType type ) - { - switch( type ) - { - case WirePortDataType.OBJECT: return 0; - case WirePortDataType.FLOAT: return 1; - case WirePortDataType.FLOAT2: return 2; - case WirePortDataType.FLOAT3: return 3; - case WirePortDataType.FLOAT4: return 4; - case WirePortDataType.FLOAT3x3: return 9; - case WirePortDataType.FLOAT4x4: return 16; - case WirePortDataType.COLOR: return 4; - case WirePortDataType.INT: return 1; - case WirePortDataType.UINT: return 1; - } - return 0; - } - - public static WirePortDataType GetWireTypeForChannelAmount( int channelAmount ) - { - switch( channelAmount ) - { - case 1: return WirePortDataType.FLOAT; - case 2: return WirePortDataType.FLOAT2; - case 3: return WirePortDataType.FLOAT3; - case 4: return WirePortDataType.FLOAT4; - case 9: return WirePortDataType.FLOAT3x3; - case 16: return WirePortDataType.FLOAT4x4; - } - return WirePortDataType.FLOAT; - } - - public static string GenerateUniformName( bool excludeUniformKeyword, WirePortDataType dataType, string dataName ) - { - return GenerateUniformName( excludeUniformKeyword, WirePortToCgType( dataType ), dataName ); - } - - public static string GenerateUniformName( bool excludeUniformKeyword, string dataType, string dataName ) - { - int index = excludeUniformKeyword ? 1 : 0; - return string.Format( Constants.UniformDec[index], dataType, dataName ); - } - - public static string GeneratePropertyName( string name, PropertyType propertyType, bool forceUnderscore = false ) - { - if( string.IsNullOrEmpty( name ) ) - return name; - - name = RemoveInvalidCharacters( name ); - if( propertyType != PropertyType.Global || forceUnderscore ) - { - if( name[ 0 ] != '_' ) - { - name = '_' + name; - } - } - - return name; - } - - public static string UrlReplaceInvalidStrings( string originalString ) - { - for( int i = 0; i < Constants.UrlReplacementStringValuesLen; i++ ) - { - originalString = originalString.Replace( Constants.UrlReplacementStringValues[i,0], Constants.UrlReplacementStringValues[i,1] ); - } - return originalString; - } - - public static string ReplaceInvalidStrings( string originalString ) - { - for(int i = 0; i< Constants.ReplacementStringValuesLen;i++ ) - { - originalString = originalString.Replace( Constants.ReplacementStringValues[i,0], Constants.ReplacementStringValues[ i, 1 ] ); - } - return originalString; - } - - public static string RemoveWikiInvalidCharacters( string originalString ) - { - for( int i = 0; i < Constants.WikiInvalidChars.Length; i++ ) - { - originalString = originalString.Replace( Constants.WikiInvalidChars[ i ], string.Empty ); - } - return originalString; - } - - public static string RemoveInvalidEnumCharacters( string originalString ) - { - for( int i = 0; i < Constants.EnumInvalidChars.Length; i++ ) - { - originalString = originalString.Replace( Constants.EnumInvalidChars[ i ], string.Empty ); - } - return originalString; - } - - public static string RemoveInvalidAttrCharacters( string originalString ) - { - for( int i = 0; i < Constants.AttrInvalidChars.Length; i++ ) - { - originalString = originalString.Replace( Constants.AttrInvalidChars[ i ], string.Empty ); - } - return originalString; - } - - public static string RemoveInvalidCharacters( string originalString ) - { - for( int i = 0; i < Constants.OverallInvalidChars.Length; i++ ) - { - originalString = originalString.Replace( Constants.OverallInvalidChars[ i ], string.Empty ); - } - return originalString; - } - - public static string RemoveShaderInvalidCharacters( string originalString ) - { - originalString = originalString.Replace( '\\', '/' ); - for( int i = 0; i < Constants.ShaderInvalidChars.Length; i++ ) - { - originalString = originalString.Replace( Constants.ShaderInvalidChars[ i ], string.Empty ); - } - return originalString; - } - - public static bool IsUnityNativeShader( Shader shader ) - { - string pathName = AssetDatabase.GetAssetPath( shader ); - - if( pathName.Contains( "unity_builtin_extra") || - pathName.Contains( "unity default resources" )) - return true; - - return false; - } - public static bool IsUnityNativeShader( string path ) { return m_unityNativeShaderPaths.ContainsKey( path ); } - - public static string GetComponentForPosition( int pos, WirePortDataType type, bool addDot = false ) - { - string result = addDot ? "." : string.Empty; - switch( pos ) - { - case 0: - { - return ( ( type == WirePortDataType.COLOR ) ? ( result + "r" ) : ( result + "x" ) ); - } - case 1: - { - return ( ( type == WirePortDataType.COLOR ) ? ( result + "g" ) : ( result + "y" ) ); - } - case 2: - { - return ( ( type == WirePortDataType.COLOR ) ? ( result + "b" ) : ( result + "z" ) ); - } - case 3: - { - return ( ( type == WirePortDataType.COLOR ) ? ( result + "a" ) : ( result + "w" ) ); - } - } - return string.Empty; - } - - public static string InvalidParameter( ParentNode node ) - { - ShowMessage( node.UniqueId, "Invalid entrance type on node" + node, MessageSeverity.Error ); - return "0"; - } - - public static string NoConnection( ParentNode node ) - { - ShowMessage( node.UniqueId, "No Input connection on node" + node, MessageSeverity.Error ); - return "0"; - } - - public static string UnknownError( ParentNode node ) - { - ShowMessage( node.UniqueId, "Unknown error on node" + node, MessageSeverity.Error ); - return "0"; - } - - public static string GetTex2DProperty( string name, TexturePropertyValues defaultValue ) { return name + "(\"" + name + "\", 2D) = \"" + defaultValue + "\" {}"; } - public static string AddBrackets( string value ) { return "( " + value + " )"; } - public static Color GetColorFromWireStatus( WireStatus status ) { return m_wireStatusToColor[ status ]; } - public static bool HasColorCategory( string category ) { return m_nodeCategoryToColor.ContainsKey( category ); } - public static void AddColorCategory( string category, Color color ) - { - m_nodeCategoryToColor.Add( category, color ); - } - - public static Color AddColorCategory( string category, string hexColor ) - { - try - { - Color color = new Color(); - ColorUtility.TryParseHtmlString( hexColor, out color ); - m_nodeCategoryToColor.Add( category, color ); - return color; - } - catch( System.Exception e ) - { - Debug.LogException( e ); - } - return m_nodeCategoryToColor[ "Default" ]; - } - - public static Color GetColorFromCategory( string category ) - { - if( m_nodeCategoryToColor.ContainsKey( category ) ) - return m_nodeCategoryToColor[ category ]; - - - if(DebugConsoleWindow.DeveloperMode) - Debug.LogWarning( category + " category does not contain an associated color" ); - - return m_nodeCategoryToColor[ "Default" ]; - } - - public static string LatestOpenedFolder - { - get { return m_latestOpenedFolder; } - set { m_latestOpenedFolder = value; } - } - - public static Shader CreateNewUnlit() - { - if( CurrentWindow == null ) - return null; - - string shaderName; - string pathName; - Shader newShader = null; - IOUtils.GetShaderName( out shaderName, out pathName, "MyUnlitShader", m_latestOpenedFolder ); - if( !System.String.IsNullOrEmpty( shaderName ) && !System.String.IsNullOrEmpty( pathName ) ) - { - CurrentWindow.CreateNewGraph( shaderName ); - CurrentWindow.PreMadeShadersInstance.FlatColorSequence.Execute(); - - CurrentWindow.CurrentGraph.CurrentMasterNode.SetName( shaderName ); - newShader = CurrentWindow.CurrentGraph.FireMasterNode( pathName, true ); - AssetDatabase.Refresh(); - } - return newShader; - } - - public static Shader CreateNewEmpty( string customPath = null , string customShaderName = null ) - { - if( CurrentWindow == null ) - return null; - - string shaderName; - string pathName; - Shader newShader = null; - - - string path = AssetDatabase.GetAssetPath( Selection.activeObject ); - if( path == "" ) - { - path = "Assets"; - } - else if( System.IO.Path.GetExtension( path ) != "" ) - { - path = path.Replace( System.IO.Path.GetFileName( AssetDatabase.GetAssetPath( Selection.activeObject ) ), "" ); - } - - - if( string.IsNullOrEmpty( customPath ) ) - { - IOUtils.GetShaderName( out shaderName, out pathName, Constants.DefaultShaderName, m_latestOpenedFolder ); - } - else - { - pathName = customPath; - if( string.IsNullOrEmpty( customShaderName ) ) - { - shaderName = Constants.DefaultShaderName; - int indexOfAssets = pathName.IndexOf( "Assets" ); - string uniquePath = ( indexOfAssets > 0 ) ? pathName.Remove( 0, indexOfAssets ) : pathName; - string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath( uniquePath + shaderName + ".shader" ); - pathName = assetPathAndName; - shaderName = assetPathAndName.Remove( 0, assetPathAndName.IndexOf( shaderName ) ); - } - else - { - shaderName = customShaderName; - } - shaderName = shaderName.Remove( shaderName.Length - 7 ); - } - if( !System.String.IsNullOrEmpty( shaderName ) && !System.String.IsNullOrEmpty( pathName ) ) - { - m_latestOpenedFolder = pathName; - - CurrentWindow.titleContent.text = AmplifyShaderEditorWindow.GenerateTabTitle( shaderName ); - CurrentWindow.titleContent.image = ShaderIcon; - CurrentWindow.CreateNewGraph( shaderName ); - CurrentWindow.LastOpenedLocation = pathName; - CurrentWindow.CurrentGraph.CurrentMasterNode.SetName( shaderName ); - newShader = CurrentWindow.CurrentGraph.FireMasterNode( pathName, true ); - AssetDatabase.Refresh(); - } - - return newShader; - } - - - public static Shader CreateNewEmptyTemplate( string templateGUID, string customPath = null, string customShaderName = null ) - { - if( CurrentWindow == null ) - return null; - - string shaderName; - string pathName; - Shader newShader = null; - - - string path = AssetDatabase.GetAssetPath( Selection.activeObject ); - if( path == "" ) - { - path = "Assets"; - } - else if( System.IO.Path.GetExtension( path ) != "" ) - { - path = path.Replace( System.IO.Path.GetFileName( AssetDatabase.GetAssetPath( Selection.activeObject ) ), "" ); - } - - - if( string.IsNullOrEmpty( customPath ) ) - { - IOUtils.GetShaderName( out shaderName, out pathName, Constants.DefaultShaderName, m_latestOpenedFolder ); - } - else - { - pathName = customPath; - if( string.IsNullOrEmpty( customShaderName ) ) - { - shaderName = Constants.DefaultShaderName; - int indexOfAssets = pathName.IndexOf( "Assets" ); - string uniquePath = ( indexOfAssets > 0 ) ? pathName.Remove( 0, indexOfAssets ) : pathName; - string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath( uniquePath + shaderName + ".shader" ); - pathName = assetPathAndName; - shaderName = assetPathAndName.Remove( 0, assetPathAndName.IndexOf( shaderName ) ); - } - else - { - shaderName = customShaderName; - } - shaderName = shaderName.Remove( shaderName.Length - 7 ); - } - if( !System.String.IsNullOrEmpty( shaderName ) && !System.String.IsNullOrEmpty( pathName ) ) - { - m_latestOpenedFolder = pathName; - - CurrentWindow.titleContent.text = AmplifyShaderEditorWindow.GenerateTabTitle( shaderName ); - CurrentWindow.titleContent.image = UIUtils.ShaderIcon; - CurrentWindow.CreateNewTemplateGraph( templateGUID ); - CurrentWindow.CurrentGraph.CurrentMasterNode.SetName( shaderName ); - newShader = CurrentWindow.CurrentGraph.FireMasterNode( pathName, true ); - AssetDatabase.Refresh(); - } - - return newShader; - } - - - public static void SetDelayedMaterialMode( Material material ) - { - if( CurrentWindow == null ) - return; - CurrentWindow.SetDelayedMaterialMode( material ); - } - - public static void CreateEmptyFromInvalid( Shader shader ) - { - if( CurrentWindow == null ) - return; - - CurrentWindow.CreateNewGraph( shader ); - CurrentWindow.ForceRepaint(); - } - - public static void CreateEmptyFunction( AmplifyShaderFunction shaderFunction ) - { - if( CurrentWindow == null ) - return; - - CurrentWindow.CreateNewFunctionGraph( shaderFunction ); - CurrentWindow.SaveToDisk( false ); - CurrentWindow.ForceRepaint(); - } - - public static void DrawFloat( UndoParentNode owner, ref Rect propertyDrawPos, ref float value, float newLabelWidth = 8 ) - { - float labelWidth = EditorGUIUtility.labelWidth; - EditorGUIUtility.labelWidth = newLabelWidth; - value = owner.EditorGUIFloatField( propertyDrawPos, " ", value, UIUtils.MainSkin.textField ); - EditorGUIUtility.labelWidth = labelWidth; - } - - public static GUIStyle GetCustomStyle( CustomStyle style ) - { - return ( Initialized ) ? MainSkin.customStyles[ (int)style ] : null; - } - - public static void SetCustomStyle( CustomStyle style, GUIStyle guiStyle ) - { - if( MainSkin != null ) - MainSkin.customStyles[ (int)style ] = new GUIStyle( guiStyle ); - } - - public static void OpenFile() - { - if( CurrentWindow == null ) - return; - string newShader = EditorUtility.OpenFilePanel( "Select Shader to open", m_latestOpenedFolder, "shader" ); - if( !System.String.IsNullOrEmpty( newShader ) ) - { - m_latestOpenedFolder = newShader.Substring( 0, newShader.LastIndexOf( '/' ) + 1 ); - int relFilenameId = newShader.IndexOf( Application.dataPath ); - if( relFilenameId > -1 ) - { - string relFilename = newShader.Substring( relFilenameId + Application.dataPath.Length - 6 );// -6 need to also copy the assets/ part - CurrentWindow.LoadFromDisk( relFilename ); - } - else - { - ShowMessage( "Can only load shaders\nfrom inside the projects folder", MessageSeverity.Error ); - } - } - } - - public static bool DetectNodeLoopsFrom( ParentNode node, Dictionary<int, int> currentNodes ) - { - for( int i = 0; i < node.InputPorts.Count; i++ ) - { - if( node.InputPorts[ i ].IsConnected ) - { - ParentNode newNode = node.InputPorts[ i ].GetOutputNode(); - if( !currentNodes.ContainsKey( newNode.UniqueId ) ) - RecursiveNodeFill( newNode, currentNodes ); - } - } - - bool found = currentNodes.ContainsKey( node.UniqueId ); - currentNodes.Clear(); - currentNodes = null; - - return found; - } - - private static void RecursiveNodeFill( ParentNode node, Dictionary<int, int> currentNodes ) - { - if( !currentNodes.ContainsKey( node.UniqueId ) ) - currentNodes.Add( node.UniqueId, 1 ); - - for( int i = 0; i < node.InputPorts.Count; i++ ) - { - if( node.InputPorts[ i ].IsConnected ) - { - ParentNode newNode = node.InputPorts[ i ].GetOutputNode(); - if( !currentNodes.ContainsKey( newNode.UniqueId ) ) - RecursiveNodeFill( newNode, currentNodes ); - } - } - } - - public static ParentNode CreateNode( System.Type type, bool registerUndo, Vector2 pos, int nodeId = -1, bool addLast = true ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.CurrentGraph.CreateNode( type, registerUndo, pos, nodeId, addLast ); - } - return null; - } - - public static void DestroyNode( int nodeId ) - { - if( CurrentWindow != null ) - { - CurrentWindow.CurrentGraph.DestroyNode( nodeId ); - } - } - - public static void ShowMessage( int ownerId, string message, MessageSeverity severity = MessageSeverity.Normal, bool registerTimestamp = true ) - { - if( CurrentWindow != null ) - { - CurrentWindow.ShowMessage( ownerId, message, severity, registerTimestamp ); - } - } - - public static void ShowMessage( string message, MessageSeverity severity = MessageSeverity.Normal, bool registerTimestamp = true ) - { - if( CurrentWindow != null ) - { - CurrentWindow.ShowMessage( message, severity, registerTimestamp ); - } - } - - public static ParentNode GetNode( int nodeId ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.CurrentGraph.GetNode( nodeId ); - } - return null; - } - - public static PropertyNode GetInternalTemplateNode( int nodeId ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.CurrentGraph.GetInternalTemplateNode( nodeId ); - } - return null; - } - - public static PropertyNode GetInternalTemplateNode( string propertyName ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.CurrentGraph.GetInternalTemplateNode( propertyName ); - } - return null; - } - - - public static void DeleteConnection( bool isInput, int nodeId, int portId, bool registerOnLog, bool propagateCallback ) - { - if( CurrentWindow != null ) - { - CurrentWindow.DeleteConnection( isInput, nodeId, portId, registerOnLog, propagateCallback ); - } - } - - public static void ConnectInputToOutput( int inNodeId, int inPortId, int outNodeId, int outPortId ) - { - if( CurrentWindow != null ) - { - CurrentWindow.ConnectInputToOutput( inNodeId, inPortId, outNodeId, outPortId ); - } - } - - public static Shader CreateNewGraph( string name ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.CreateNewGraph( name ); - } - return null; - } - public static void SetConnection( int InNodeId, int InPortId, int OutNodeId, int OutPortId ) - { - if( CurrentWindow != null ) - { - CurrentWindow.CurrentGraph.SetConnection( InNodeId, InPortId, OutNodeId, OutPortId ); - } - } - - public static bool IsChannelAvailable( int channelId ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.IsChannelAvailable( channelId ); - } - return false; - } - - public static bool ReleaseUVChannel( int nodeId, int channelId ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.ReleaseUVChannel( nodeId, channelId ); - } - return false; - } - - public static bool RegisterUVChannel( int nodeId, int channelId, string name ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.RegisterUVChannel( nodeId, channelId, name ); - } - return false; - } - - public static void GetFirstAvailableName( int nodeId, WirePortDataType type, out string outProperty, out string outInspector, bool useCustomPrefix = false, string customPrefix = null ) - { - outProperty = string.Empty; - outInspector = string.Empty; - if( CurrentWindow != null ) - { - CurrentWindow.DuplicatePrevBufferInstance.GetFirstAvailableName( nodeId, type, out outProperty, out outInspector, useCustomPrefix, customPrefix ); - } - } - - - public static bool IsNumericName( string name ) - { - Match match = Regex.Match( name, NumericNamePattern ); - if( match != null && match.Success ) - return true; - return false; - } - - public static bool CheckInvalidUniformName( string name ) - { - if( m_reservedPropertyNames.ContainsKey( name ) ) - { - ShowMessage( string.Format( Constants.ReservedPropertyNameStr, name ) ); - return true; - } - - if( IsNumericName( name )) - { - ShowMessage( string.Format( Constants.NumericPropertyNameStr, name ) ); - return true; - } - - return false; - } - - public static bool RegisterUniformName( int nodeId, string name ) - { - if( CheckInvalidUniformName( name ) ) - { - return false; - } - - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.RegisterUniformName( nodeId, name ); - } - return false; - } - - public static bool ReleaseUniformName( int nodeId, string name ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.ReleaseUniformName( nodeId, name ); - } - return false; - } - - public static bool IsUniformNameAvailable( string name ) - { - if( CheckInvalidUniformName( name ) ) - { - return false; - } - - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.IsUniformNameAvailable( name ); - } - return false; - } - - public static int CheckUniformNameOwner( string name ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.CheckUniformNameOwner( name ); - } - return -1; - } - - public static string GetUniqueUniformName( string name ) - { - int num = 0; - Regex reg = new Regex( @"([0-9]+)$" ); - Match match = reg.Match( name ); - if( match.Success ) - { - string s = match.Groups[ 1 ].Captures[ 0 ].Value; - num = int.Parse( s ); - name = name.Replace( s, "" ); - } - - for( int i = num + 1; i < 1000; i++ ) - { - string testName = name + i; - - if( CheckInvalidUniformName( testName ) ) - { - continue; - } - - if( CurrentWindow != null ) - { - if( CurrentWindow.DuplicatePrevBufferInstance.IsUniformNameAvailable( testName ) ) - { - return testName; - } - } - } - return name; - } - - public static bool RegisterLocalVariableName( int nodeId, string name ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.RegisterLocalVariableName( nodeId, name ); - } - return false; - } - - public static bool ReleaseLocalVariableName( int nodeId, string name ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.ReleaseLocalVariableName( nodeId, name ); - } - return false; - } - - public static bool IsLocalvariableNameAvailable( string name ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.IsLocalvariableNameAvailable( name ); - } - return false; - } - - public static string GetChannelName( int channelId ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.GetChannelName( channelId ); - } - return string.Empty; - } - - public static void SetChannelName( int channelId, string name ) - { - if( CurrentWindow != null ) - { - CurrentWindow.DuplicatePrevBufferInstance.SetChannelName( channelId, name ); - } - } - - public static int RegisterFirstAvailableChannel( int nodeId, string name ) - { - if( CurrentWindow != null ) - { - return CurrentWindow.DuplicatePrevBufferInstance.RegisterFirstAvailableChannel( nodeId, name ); - } - return -1; - } - - public static int PortCategorytoAttayIdx( MasterNodePortCategory category ) - { - if( m_portCategoryToArrayIdx.ContainsKey( category )) - return m_portCategoryToArrayIdx[category]; - - return m_portCategoryToArrayIdx[ MasterNodePortCategory.Fragment ]; - } - - public static bool DisplayDialog( string shaderPath ) - { - string value = System.String.Format( "Save changes to the shader {0} before closing?", shaderPath ); - return EditorUtility.DisplayDialog( "Load selected", value, "Yes", "No" ); - } - - public static void ForceUpdateFromMaterial() - { - if( CurrentWindow != null ) - { - // CurrentWindow.Focus(); - CurrentWindow.ForceUpdateFromMaterial(); - } - } - - public static void MarkToRepaint() { if( CurrentWindow != null ) CurrentWindow.MarkToRepaint(); } - public static void RequestSave() { if( CurrentWindow != null ) CurrentWindow.RequestSave(); } - public static string FloatToString( float value ) - { - string floatStr = value.ToString(); - if( value % 1 == 0 ) - { - floatStr += ".0"; - } - return floatStr; - } - - public static int CurrentShaderVersion() - { - if( CurrentWindow != null ) - { - return CurrentWindow.CurrentGraph.LoadedShaderVersion; - } - return -1; - } - - public static bool IsProperty( PropertyType type ) { return ( type == PropertyType.Property || type == PropertyType.InstancedProperty ); } - - public static MasterNode CurrentMasterNode() - { - if( CurrentWindow != null ) - { - return CurrentWindow.CurrentGraph.CurrentMasterNode; - } - return null; - } - - public static void AddVirtualTextureCount() { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.AddVirtualTextureCount(); } } - - public static bool HasVirtualTexture() - { - if( CurrentWindow != null ) - { - return CurrentWindow.CurrentGraph.HasVirtualTexture; - } - return false; - } - - public static void RemoveVirtualTextureCount() { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.RemoveVirtualTextureCount(); } } - - //public static void AddInstancePropertyCount() { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.AddInstancePropertyCount(); } } - - public static bool IsInstancedShader() - { - if( CurrentWindow != null ) - { - return CurrentWindow.CurrentGraph.IsInstancedShader; - } - return false; - } - - //public static void RemoveInstancePropertyCount() { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.RemoveInstancePropertyCount(); } } - //public static void AddNormalDependentCount() { if ( CurrentWindow != null ) { CurrentWindow.CurrentGraph.AddNormalDependentCount(); } } - //public static void RemoveNormalDependentCount() { if ( CurrentWindow != null ) { CurrentWindow.CurrentGraph.RemoveNormalDependentCount(); } } - //public static bool IsNormalDependent() - //{ - // if ( CurrentWindow != null ) - // { - // return CurrentWindow.CurrentGraph.IsNormalDependent; - // } - // return false; - //} - - public static void CopyValuesFromMaterial( Material mat ) - { - if( CurrentWindow != null && CurrentWindow.CurrentMaterial == mat ) - { - CurrentWindow.CurrentGraph.CopyValuesFromMaterial( mat ); - } - else - { - int aseWindowCount = IOUtils.AllOpenedWindows.Count; - for( int i = 0; i < aseWindowCount; i++ ) - { - if( IOUtils.AllOpenedWindows[ i ] != m_currentWindow && IOUtils.AllOpenedWindows[ i ].CurrentMaterial == mat ) - { - IOUtils.AllOpenedWindows[ i ].CurrentGraph.CopyValuesFromMaterial( mat ); - break; - } - } - } - } - - // Sampler Node - public static void RegisterSamplerNode( SamplerNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.SamplerNodes.AddNode( node ); } } - public static void UnregisterSamplerNode( SamplerNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.SamplerNodes.RemoveNode( node ); } } - public static string[] SamplerNodeArr() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.SamplerNodes.NodesArr; } return null; } - public static SamplerNode GetSamplerNode( int idx ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.SamplerNodes.GetNode( idx ); } return null; } - public static void UpdateSamplerDataNode( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.SamplerNodes.UpdateDataOnNode( uniqueId, data ); } } - public static int GetSamplerNodeRegisterId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.SamplerNodes.GetNodeRegisterIdx( uniqueId ); } return -1; } - public static int GetSamplerNodeAmount() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.SamplerNodes.NodesList.Count; } return -1; } - - // Float Node - public static void RegisterFloatIntNode( PropertyNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FloatIntNodes.AddNode( node ); } } - public static void UnregisterFloatIntNode( PropertyNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FloatIntNodes.RemoveNode( node ); } } - public static string[] FloatIntNodeArr() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FloatIntNodes.NodesArr; } return null; } - public static int[] FloatIntNodeIds() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FloatIntNodes.NodeIds; } return null; } - public static PropertyNode GetFloatIntNode( int idx ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FloatIntNodes.GetNode( idx ); } return null; } - public static void UpdateFloatIntDataNode( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FloatIntNodes.UpdateDataOnNode( uniqueId, data ); } } - public static int GetFloatIntNodeRegisterId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FloatIntNodes.GetNodeRegisterIdx( uniqueId ); } return -1; } - public static int GetNodeIdByName( string name ) - { - if( CurrentWindow != null ) - { - UsageListFloatIntNodes list = CurrentWindow.CurrentGraph.FloatIntNodes; - int count = list.Count; - for( int i = 0; i < count; i++ ) - { - if( list.NodesList[ i ].PropertyName.Equals( name ) ) - return list.NodesList[ i ].UniqueId; - } - } - return -1; - } - public static PropertyNode GetFloatIntNodeByUniqueId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FloatIntNodes.GetNodeByUniqueId( uniqueId ); } return null; } - //public static int GetFloatNodeAmount() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FloatNodes.NodesList.Count; } return -1; } - - // Texture Property - public static void RegisterTexturePropertyNode( TexturePropertyNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.TexturePropertyNodes.AddNode( node ); } } - public static void UnregisterTexturePropertyNode( TexturePropertyNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.TexturePropertyNodes.RemoveNode( node ); } } - public static string[] TexturePropertyNodeArr() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.TexturePropertyNodes.NodesArr; } return null; } - public static TexturePropertyNode GetTexturePropertyNode( int idx ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.TexturePropertyNodes.GetNode( idx ); } return null; } - public static void UpdateTexturePropertyDataNode( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.TexturePropertyNodes.UpdateDataOnNode( uniqueId, data ); } } - public static int GetTexturePropertyNodeRegisterId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.TexturePropertyNodes.GetNodeRegisterIdx( uniqueId ); } return -1; } - public static int GetTexturePropertyNodeAmount() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.TexturePropertyNodes.NodesList.Count; } return -1; } - - // Texture Array - public static void RegisterTextureArrayNode( TextureArrayNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.TextureArrayNodes.AddNode( node ); } } - public static void UnregisterTextureArrayNode( TextureArrayNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.TextureArrayNodes.RemoveNode( node ); } } - public static string[] TextureArrayNodeArr() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.TextureArrayNodes.NodesArr; } return null; } - public static TextureArrayNode GetTextureArrayNode( int idx ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.TextureArrayNodes.GetNode( idx ); } return null; } - public static void UpdateTextureArrayDataNode( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.TextureArrayNodes.UpdateDataOnNode( uniqueId, data ); } } - public static int GetTextureArrayNodeRegisterId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.TextureArrayNodes.GetNodeRegisterIdx( uniqueId ); } return -1; } - public static int GetTextureArrayNodeAmount() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.TextureArrayNodes.NodesList.Count; } return -1; } - - // Raw Property Node - public static void RegisterRawPropertyNode( PropertyNode node ) { if( CurrentWindow != null ) { CurrentWindow.OutsideGraph.RawPropertyNodes.AddNode( node ); } } - public static void UnregisterRawPropertyNode( PropertyNode node ) { if( CurrentWindow != null ) { CurrentWindow.OutsideGraph.RawPropertyNodes.RemoveNode( node ); } } - - // Property Node - public static void RegisterPropertyNode( PropertyNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.PropertyNodes.AddNode( node ); } } - public static void UnregisterPropertyNode( PropertyNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.PropertyNodes.RemoveNode( node ); } } - public static string[] PropertyNodeNodeArr() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.PropertyNodes.NodesArr; } return null; } - public static PropertyNode GetPropertyNode( int idx ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.PropertyNodes.GetNode( idx ); } return null; } - public static PropertyNode GetPropertyNodeByUniqueId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.PropertyNodes.GetNodeByUniqueId( uniqueId ); } return null; } - public static void UpdatePropertyDataNode( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.PropertyNodes.UpdateDataOnNode( uniqueId, data ); } } - public static int GetPropertyNodeRegisterId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.PropertyNodes.GetNodeRegisterIdx( uniqueId ); } return -1; } - public static List<PropertyNode> PropertyNodesList() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.PropertyNodes.NodesList; } return null; } - public static int GetPropertyNodeAmount() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.PropertyNodes.NodesList.Count; } return -1; } - - // Function Inputs - public static void RegisterFunctionInputNode( FunctionInput node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionInputNodes.AddNode( node ); } } - public static void UnregisterFunctionInputNode( FunctionInput node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionInputNodes.RemoveNode( node ); } } - public static void UpdateFunctionInputData( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionInputNodes.UpdateDataOnNode( uniqueId, data ); } } - public static List<FunctionInput> FunctionInputList() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FunctionInputNodes.NodesList; } return null; } - - // Function Nodes - public static void RegisterFunctionNode( FunctionNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionNodes.AddNode( node ); } } - public static void UnregisterFunctionNode( FunctionNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionNodes.RemoveNode( node ); } } - public static void UpdateFunctionData( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionNodes.UpdateDataOnNode( uniqueId, data ); } } - public static List<FunctionNode> FunctionList() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FunctionNodes.NodesList; } return null; } - - // Function Outputs - public static void RegisterFunctionOutputNode( FunctionOutput node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionOutputNodes.AddNode( node ); } } - public static void UnregisterFunctionOutputNode( FunctionOutput node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionOutputNodes.RemoveNode( node ); } } - public static void UpdateFunctionOutputData( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionOutputNodes.UpdateDataOnNode( uniqueId, data ); } } - public static List<FunctionOutput> FunctionOutputList() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FunctionOutputNodes.NodesList; } return null; } - - // Function Switches Copy - public static void RegisterFunctionSwitchCopyNode( FunctionSwitch node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionSwitchCopyNodes.AddNode( node ); } } - public static void UnregisterFunctionSwitchCopyNode( FunctionSwitch node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionSwitchCopyNodes.RemoveNode( node ); } } - public static void UpdateFunctionSwitchCopyData( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionSwitchCopyNodes.UpdateDataOnNode( uniqueId, data ); } } - public static List<FunctionSwitch> FunctionSwitchCopyList() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FunctionSwitchCopyNodes.NodesList; } return null; } - - // Function Switches - public static void RegisterFunctionSwitchNode( FunctionSwitch node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionSwitchNodes.AddNode( node ); } } - public static void UnregisterFunctionSwitchNode( FunctionSwitch node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionSwitchNodes.RemoveNode( node ); } } - public static void UpdateFunctionSwitchData( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionSwitchNodes.UpdateDataOnNode( uniqueId, data ); } } - public static List<FunctionSwitch> FunctionSwitchList() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FunctionSwitchNodes.NodesList; } return null; } - public static void UpdateFunctionSwitchArr() { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.FunctionSwitchNodes.UpdateNodeArr(); } } - public static string[] FunctionSwitchesNodeArr() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FunctionSwitchNodes.NodesArr; } return null; } - public static FunctionSwitch GetFunctionSwitchNode( int idx ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FunctionSwitchNodes.GetNode( idx ); } return null; } - public static int GetFunctionSwitchNodeIndex( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.FunctionSwitchNodes.GetNodeRegisterIdx( uniqueId ); } return -1; } - - // Screen Color Node - public static void RegisterScreenColorNode( ScreenColorNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.ScreenColorNodes.AddNode( node ); } } - public static void UnregisterScreenColorNode( ScreenColorNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.ScreenColorNodes.RemoveNode( node ); } } - public static string[] ScreenColorNodeArr() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.ScreenColorNodes.NodesArr; } return null; } - public static ScreenColorNode GetScreenColorNode( int idx ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.ScreenColorNodes.GetNode( idx ); } return null; } - public static int GetScreenColorNodeRegisterId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.ScreenColorNodes.GetNodeRegisterIdx( uniqueId ); } return -1; } - public static void UpdateScreenColorDataNode( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.ScreenColorNodes.UpdateDataOnNode( uniqueId, data ); } } - public static int GetScreenColorNodeAmount() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.ScreenColorNodes.NodesList.Count; } return -1; } - - // Local Var Node - public static int RegisterLocalVarNode( RegisterLocalVarNode node ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.LocalVarNodes.AddNode( node ); } return -1; } - public static void UnregisterLocalVarNode( RegisterLocalVarNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.LocalVarNodes.RemoveNode( node ); } } - public static string[] LocalVarNodeArr() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.LocalVarNodes.NodesArr; } return null; } - public static int LocalVarNodeAmount() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.LocalVarNodes.NodesList.Count; } return 0; } - public static int GetLocalVarNodeRegisterId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.LocalVarNodes.GetNodeRegisterIdx( uniqueId ); } return -1; } - public static RegisterLocalVarNode GetLocalVarNode( int idx ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.LocalVarNodes.GetNode( idx ); } return null; } - public static void UpdateLocalVarDataNode( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.LocalVarNodes.UpdateDataOnNode( uniqueId, data ); } } - - //Global Array - public static void RegisterGlobalArrayNode( GlobalArrayNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.GlobalArrayNodes.AddNode( node ); } } - public static void UnregisterGlobalArrayNode( GlobalArrayNode node ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.GlobalArrayNodes.RemoveNode( node ); } } - public static string[] GlobalArrayNodeArr() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.GlobalArrayNodes.NodesArr; } return null; } - public static GlobalArrayNode GetGlobalArrayNode( int idx ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.GlobalArrayNodes.GetNode( idx ); } return null; } - public static int GetGlobalArrayNodeRegisterId( int uniqueId ) { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.GlobalArrayNodes.GetNodeRegisterIdx( uniqueId ); } return -1; } - public static void UpdateGlobalArrayDataNode( int uniqueId, string data ) { if( CurrentWindow != null ) { CurrentWindow.CurrentGraph.GlobalArrayNodes.UpdateDataOnNode( uniqueId, data ); } } - public static int GetGlobalArrayNodeAmount() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.GlobalArrayNodes.NodesList.Count; } return -1; } - - - public static void FocusOnNode( ParentNode node, float zoom, bool selectNode ) { if( CurrentWindow != null ) { CurrentWindow.FocusOnNode( node, zoom, selectNode ); } } - public static PrecisionType CurrentPrecision() { if( CurrentWindow != null ) { return CurrentWindow.CurrentGraph.CurrentPrecision; } return PrecisionType.Float; } - public static string CurrentPrecisionCg() { if( CurrentWindow != null ) { return m_precisionTypeToCg[ CurrentWindow.CurrentGraph.CurrentPrecision ]; } return m_precisionTypeToCg[ PrecisionType.Float ]; } - - public static PrecisionType GetFinalPrecision( PrecisionType precision ) - { - if( CurrentWindow != null && CurrentWindow.CurrentGraph != null ) - { - PrecisionType mainPrecision = CurrentWindow.CurrentGraph.CurrentPrecision; - if( (int)mainPrecision > (int)precision ) - return mainPrecision; - } - return precision; - } - - public static bool GetNodeAvailabilityInBitArray( int bitArray, NodeAvailability availability ) { return ( bitArray & (int)availability ) != 0; } - public static bool GetCategoryInBitArray( int bitArray, MasterNodePortCategory category ) { return ( bitArray & (int)category ) != 0; } - public static void SetCategoryInBitArray( ref int bitArray, MasterNodePortCategory category ) { bitArray = bitArray | (int)category; } - - public static int GetPriority( WirePortDataType type ) { return m_portPriority[ type ]; } - - public static void ShowIncompatiblePortMessage( bool fromInput, ParentNode inNode, WirePort inPort, ParentNode outNode, WirePort outPort ) - { - string inPortName = inPort.Name.Equals( Constants.EmptyPortValue ) ? inPort.PortId.ToString() : inPort.Name; - string outPortName = outPort.Name.Equals( Constants.EmptyPortValue ) ? outPort.PortId.ToString() : outPort.Name; - ShowMessage( outNode.UniqueId, string.Format( ( fromInput ? IncorrectInputConnectionErrorMsg : IncorrectOutputConnectionErrorMsg ), inPortName, inNode.Attributes.Name, inPort.DataType, outPort.DataType, outPortName, outNode.Attributes.Name ) ); - } - - public static void ShowNoVertexModeNodeMessage( ParentNode node ) - { - ShowMessage( node.UniqueId, string.Format( NoVertexModeNodeWarning, node.Attributes.Name ), MessageSeverity.Warning ); - } - - public static int TotalExampleMaterials { get { return m_exampleMaterialIDs.Count; } } - - public static int ShaderIndentLevel - { - get { return m_shaderIndentLevel; } - set - { - m_shaderIndentLevel = Mathf.Max( value, 0 ); - m_shaderIndentTabs = string.Empty; - for( int i = 0; i < m_shaderIndentLevel; i++ ) { m_shaderIndentTabs += "\t"; } - } - } - - public static string ShaderIndentTabs { get { return m_shaderIndentTabs; } } - public static void AddLineToShaderBody( ref string ShaderBody, string line ) { ShaderBody += m_shaderIndentTabs + line; } - public static void AddMultiLineToShaderBody( ref string ShaderBody, string[] lines ) - { - for( int i = 0; i < lines.Length; i++ ) - { - ShaderBody += m_shaderIndentTabs + lines[ i ]; - } - } - - public static void ClearUndoHelper() - { - m_undoHelper.Clear(); - } - - public static bool CheckUndoNode( ParentNode node ) - { - if( node == null ) - return false; - if( m_undoHelper.ContainsKey( node.UniqueId ) ) - { - return false; - } - - m_undoHelper.Add( node.UniqueId, node ); - EditorUtility.SetDirty( node ); - return true; - } - - public static void MarkUndoAction() - { - SerializeHelperCounter = 2; - } - - public static bool SerializeFromUndo() - { - if( SerializeHelperCounter > 0 ) - { - SerializeHelperCounter--; - return true; - } - return false; - } - - public static int GetKeywordId( string keyword ) - { - if( AvailableKeywordsDict.Count != AvailableKeywords.Length ) - { - AvailableKeywordsDict.Clear(); - for( int i = 1; i < AvailableKeywords.Length; i++ ) - { - AvailableKeywordsDict.Add( AvailableKeywords[ i ], i ); - } - } - - if( AvailableKeywordsDict.ContainsKey( keyword ) ) - { - return AvailableKeywordsDict[ keyword ]; - } - - return 0; - } - } -} |