diff options
Diffstat (limited to 'Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplatesBlendModule.cs')
-rw-r--r-- | Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplatesBlendModule.cs | 782 |
1 files changed, 0 insertions, 782 deletions
diff --git a/Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplatesBlendModule.cs b/Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplatesBlendModule.cs deleted file mode 100644 index 93af8a36..00000000 --- a/Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplatesBlendModule.cs +++ /dev/null @@ -1,782 +0,0 @@ -// Amplify Shader Editor - Visual Shader Editing Tool -// Copyright (c) Amplify Creations, Lda <info@amplify.pt> - -using System; -using UnityEngine; -using UnityEditor; -using System.Collections.Generic; - -namespace AmplifyShaderEditor -{ - [Serializable] - public sealed class TemplatesBlendModule : TemplateModuleParent - { - private const string AlphaToMaskStr = "Alpha To Coverage"; - private const string BlendModeStr = " Blend Mode"; - - private const string BlendModesRGBStr = "Blend RGB"; - private const string BlendModesAlphaStr = "Blend Alpha"; - - private const string BlendOpsRGBStr = "Blend Op RGB"; - private const string BlendOpsAlphaStr = "Blend Op Alpha"; - - private const string SourceFactorStr = "Src"; - private const string DstFactorStr = "Dst"; - - private const string AlphaToMaskFormat = "AlphaToMask {0}"; - private const string BlendFactorOff = "Blend Off"; - private const string SingleBlendFactorStr = "Blend {0} {1}"; - private const string SeparateBlendFactorStr = "Blend {0} {1} , {2} {3}"; - - private const string SingleBlendOpStr = "BlendOp {0}"; - private const string SeparateBlendOpStr = "BlendOp {0} , {1}"; - private const string BlendOpOffStr = "BlendOp Off"; - - - private string[] m_commonBlendTypesArr; - private List<CommonBlendTypes> m_commonBlendTypes = new List<CommonBlendTypes> - { - new CommonBlendTypes("<OFF>", AvailableBlendFactor.Zero, AvailableBlendFactor.Zero ), - new CommonBlendTypes("Custom", AvailableBlendFactor.Zero, AvailableBlendFactor.Zero ) , - new CommonBlendTypes("Alpha Blend", AvailableBlendFactor.SrcAlpha, AvailableBlendFactor.OneMinusSrcAlpha ) , - new CommonBlendTypes("Premultiplied", AvailableBlendFactor.One, AvailableBlendFactor.OneMinusSrcAlpha ), - new CommonBlendTypes("Additive", AvailableBlendFactor.One, AvailableBlendFactor.One ), - new CommonBlendTypes("Soft Additive", AvailableBlendFactor.OneMinusDstColor, AvailableBlendFactor.One ), - new CommonBlendTypes("Multiplicative", AvailableBlendFactor.DstColor, AvailableBlendFactor.Zero ), - new CommonBlendTypes("2x Multiplicative", AvailableBlendFactor.DstColor, AvailableBlendFactor.SrcColor ), - new CommonBlendTypes("Particle Additive", AvailableBlendFactor.SrcAlpha, AvailableBlendFactor.One ) - }; - - [SerializeField] - private bool m_validBlendMode = false; - - [SerializeField] - private bool m_validBlendOp = false; - - [SerializeField] - private bool m_blendModeEnabled = false; - - [SerializeField] - private bool m_validAlphaToMask = false; - - [SerializeField] - private bool m_alphaToMaskValue = false; - - [SerializeField] - private bool m_alphaToMaskIndependent = false; - - // Blend Factor - // RGB - [SerializeField] - private int m_currentRGBIndex = 0; - - [SerializeField] - private AvailableBlendFactor m_sourceFactorRGB = AvailableBlendFactor.Zero; - [SerializeField] - private InlineProperty m_sourceFactorRGBInline = new InlineProperty(); - - [SerializeField] - private AvailableBlendFactor m_destFactorRGB = AvailableBlendFactor.Zero; - [SerializeField] - private InlineProperty m_destFactorRGBInline = new InlineProperty(); - - //Alpha - [SerializeField] - private int m_currentAlphaIndex = 0; - - [SerializeField] - private AvailableBlendFactor m_sourceFactorAlpha = AvailableBlendFactor.Zero; - [SerializeField] - private InlineProperty m_sourceFactorAlphaInline = new InlineProperty(); - - [SerializeField] - private AvailableBlendFactor m_destFactorAlpha = AvailableBlendFactor.Zero; - [SerializeField] - private InlineProperty m_destFactorAlphaInline = new InlineProperty(); - - //Blend Ops - [SerializeField] - private bool m_blendOpEnabled = false; - - [SerializeField] - private AvailableBlendOps m_blendOpRGB = AvailableBlendOps.OFF; - - [SerializeField] - private InlineProperty m_blendOpRGBInline = new InlineProperty(); - - [SerializeField] - private AvailableBlendOps m_blendOpAlpha = AvailableBlendOps.OFF; - - [SerializeField] - private InlineProperty m_blendOpAlphaInline = new InlineProperty(); - - public TemplatesBlendModule() : base( "Blend Mode and Ops" ) - { - m_commonBlendTypesArr = new string[ m_commonBlendTypes.Count ]; - for( int i = 0; i < m_commonBlendTypesArr.Length; i++ ) - { - m_commonBlendTypesArr[ i ] = m_commonBlendTypes[ i ].Name; - } - } - - public void CopyFrom( TemplatesBlendModule other, bool allData ) - { - if( allData ) - { - m_independentModule = other.IndependentModule; - m_alphaToMaskIndependent = other.AlphaToMaskIndependent; - m_validBlendMode = other.ValidBlendMode; - m_validBlendOp = other.ValidBlendOp; - m_validAlphaToMask = other.ValidAlphaToMask; - } - m_alphaToMaskValue = other.AlphaToMaskValue; - m_blendModeEnabled = other.BlendModeEnabled; - m_currentRGBIndex = other.CurrentRGBIndex; - m_sourceFactorRGB = other.SourceFactorRGB; - m_destFactorRGB = other.DestFactorRGB; - m_currentAlphaIndex = other.CurrentAlphaIndex; - m_sourceFactorAlpha = other.SourceFactorAlpha; - m_destFactorAlpha = other.DestFactorAlpha; - m_blendOpEnabled = other.BlendOpEnabled; - m_blendOpRGB = other.BlendOpRGB; - m_blendOpAlpha = other.BlendOpAlpha; - m_sourceFactorRGBInline = other.SourceFactorRGBInline; - m_destFactorRGBInline = other.DestFactorRGBInline; - m_sourceFactorAlphaInline = other.SourceFactorAlphaInline; - m_destFactorAlphaInline = other.DestFactorAlphaInline; - m_blendOpRGBInline = other.BlendOpRGBInline; - m_blendOpAlphaInline = other.BlendOpAlphaInline; - } - - public void ConfigureFromTemplateData( TemplateBlendData blendData ) - { - if( blendData.ValidAlphaToMask ) - { - if( m_validAlphaToMask != blendData.ValidAlphaToMask ) - { - m_alphaToMaskValue = blendData.AlphaToMaskValue; - m_validAlphaToMask = blendData.ValidAlphaToMask; - m_alphaToMaskIndependent = blendData.IndependentAlphaToMask; - } - } - - if( blendData.ValidBlendMode ) - { - if( m_validBlendMode != blendData.ValidBlendMode ) - { - m_blendModeEnabled = true; - m_independentModule = blendData.IndependentModule; - if( string.IsNullOrEmpty( blendData.SourceFactorRGBInline ) ) - { - m_sourceFactorRGB = blendData.SourceFactorRGB; - m_sourceFactorRGBInline.ResetProperty(); - } - else - { - m_sourceFactorRGBInline.SetInlineByName( blendData.SourceFactorRGBInline ); - } - - if( string.IsNullOrEmpty( blendData.DestFactorRGBInline ) ) - { - m_destFactorRGB = blendData.DestFactorRGB; - m_destFactorRGBInline.ResetProperty(); - } - else - { - m_destFactorRGBInline.SetInlineByName( blendData.DestFactorRGBInline ); - } - - if( string.IsNullOrEmpty( blendData.SourceFactorAlphaInline ) ) - { - m_sourceFactorAlpha = blendData.SourceFactorAlpha; - m_sourceFactorAlphaInline.ResetProperty(); - } - else - { - m_sourceFactorAlphaInline.SetInlineByName( blendData.SourceFactorAlphaInline ); - } - if( string.IsNullOrEmpty( blendData.DestFactorAlphaInline ) ) - { - m_destFactorAlpha = blendData.DestFactorAlpha; - m_destFactorAlphaInline.ResetProperty(); - } - else - { - m_destFactorAlphaInline.SetInlineByName( blendData.DestFactorAlphaInline ); - } - - if( blendData.SeparateBlendFactors ) - { - if( blendData.BlendModeOff ) - { - m_currentRGBIndex = 0; - } - else - { - CheckRGBIndex(); - } - CheckAlphaIndex(); - } - else - { - if( blendData.BlendModeOff ) - { - m_currentRGBIndex = 0; - } - else - { - CheckRGBIndex(); - } - m_currentAlphaIndex = 0; - } - } - } - else - { - m_blendModeEnabled = false; - } - - if( blendData.ValidBlendOp ) - { - if( m_validBlendOp != blendData.ValidBlendOp ) - { - m_blendOpEnabled = true; - if( string.IsNullOrEmpty( blendData.BlendOpRGBInline ) ) - { - m_blendOpRGB = blendData.BlendOpRGB; - m_blendOpRGBInline.ResetProperty(); - } - else - { - m_blendOpRGBInline.SetInlineByName( blendData.BlendOpRGBInline ); - } - - if( string.IsNullOrEmpty( blendData.BlendOpAlphaInline ) ) - { - m_blendOpAlpha = blendData.BlendOpAlpha; - m_blendOpAlphaInline.ResetProperty(); - } - else - { - m_blendOpAlphaInline.SetInlineByName( blendData.BlendOpAlphaInline ); - } - } - } - else - { - m_blendOpEnabled = false; - } - - m_validBlendMode = blendData.ValidBlendMode; - m_validBlendOp = blendData.ValidBlendOp; - m_validData = m_validBlendMode || m_validBlendOp; - } - - public override void ShowUnreadableDataMessage( ParentNode owner ) - { - bool foldout = owner.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedBlendModeModule; - NodeUtils.DrawPropertyGroup( ref foldout, BlendModeStr, base.ShowUnreadableDataMessage ); - owner.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedBlendModeModule = foldout; - } - - public override void Draw( UndoParentNode owner, bool style = true ) - { - bool foldout = owner.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedBlendModeModule; - if( style ) - { - NodeUtils.DrawPropertyGroup( ref foldout, BlendModeStr, () => - { - DrawBlock( owner, style ); - } ); - } - else - { - NodeUtils.DrawNestedPropertyGroup( ref foldout, BlendModeStr, () => - { - DrawBlock( owner, style ); - } ); - } - owner.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedBlendModeModule = foldout; - } - - void DrawBlock( UndoParentNode owner, bool style ) - { - EditorGUI.BeginChangeCheck(); - { - if( m_blendModeEnabled ) - { - // RGB - EditorGUI.BeginChangeCheck(); - m_currentRGBIndex = owner.EditorGUILayoutPopup( BlendModesRGBStr, m_currentRGBIndex, m_commonBlendTypesArr ); - if( EditorGUI.EndChangeCheck() ) - { - if( m_currentRGBIndex > 1 ) - { - m_sourceFactorRGB = m_commonBlendTypes[ m_currentRGBIndex ].SourceFactor; - m_sourceFactorRGBInline.IntValue = (int)m_sourceFactorRGB; - m_sourceFactorRGBInline.SetInlineNodeValue(); - - m_destFactorRGB = m_commonBlendTypes[ m_currentRGBIndex ].DestFactor; - m_destFactorRGBInline.IntValue = (int)m_destFactorRGB; - m_destFactorRGBInline.SetInlineNodeValue(); - } - } - EditorGUI.BeginDisabledGroup( m_currentRGBIndex == 0 ); - - EditorGUI.BeginChangeCheck(); - float cached = EditorGUIUtility.labelWidth; - if( style ) - { - EditorGUIUtility.labelWidth = 40; - } - else - { - EditorGUIUtility.labelWidth = 25; - } - - EditorGUILayout.BeginHorizontal(); - //m_sourceFactorRGB = (AvailableBlendFactor)owner.EditorGUILayoutEnumPopup( SourceFactorStr, m_sourceFactorRGB ); - m_sourceFactorRGBInline.CustomDrawer( ref owner, ( x ) => { m_sourceFactorRGB = (AvailableBlendFactor)x.EditorGUILayoutEnumPopup( SourceFactorStr, m_sourceFactorRGB ); }, SourceFactorStr ); - if( style ) - { - EditorGUI.indentLevel--; - EditorGUIUtility.labelWidth = 25; - } - //m_destFactorRGB = (AvailableBlendFactor)owner.EditorGUILayoutEnumPopup( DstFactorStr, m_destFactorRGB ); - m_destFactorRGBInline.CustomDrawer( ref owner, ( x ) => { m_destFactorRGB = (AvailableBlendFactor)x.EditorGUILayoutEnumPopup( DstFactorStr, m_destFactorRGB ); }, DstFactorStr ); - if( style ) - EditorGUI.indentLevel++; - - EditorGUILayout.EndHorizontal(); - - EditorGUIUtility.labelWidth = cached; - if( EditorGUI.EndChangeCheck() ) - { - CheckRGBIndex(); - } - - EditorGUI.EndDisabledGroup(); - // Alpha - EditorGUILayout.Separator(); - - EditorGUI.BeginChangeCheck(); - m_currentAlphaIndex = owner.EditorGUILayoutPopup( BlendModesAlphaStr, m_currentAlphaIndex, m_commonBlendTypesArr ); - if( EditorGUI.EndChangeCheck() ) - { - if( m_currentAlphaIndex > 0 ) - { - m_sourceFactorAlpha = m_commonBlendTypes[ m_currentAlphaIndex ].SourceFactor; - m_sourceFactorAlphaInline.IntValue = (int)m_sourceFactorAlpha; - m_sourceFactorAlphaInline.SetInlineNodeValue(); - - m_destFactorAlpha = m_commonBlendTypes[ m_currentAlphaIndex ].DestFactor; - m_destFactorAlphaInline.IntValue = (int)m_destFactorAlpha; - m_destFactorAlphaInline.SetInlineNodeValue(); - } - } - EditorGUI.BeginDisabledGroup( m_currentAlphaIndex == 0 ); - - EditorGUI.BeginChangeCheck(); - cached = EditorGUIUtility.labelWidth; - if( style ) - { - EditorGUIUtility.labelWidth = 40; - } - else - { - EditorGUIUtility.labelWidth = 25; - } - EditorGUILayout.BeginHorizontal(); - //m_sourceFactorAlpha = (AvailableBlendFactor)owner.EditorGUILayoutEnumPopup( SourceFactorStr, m_sourceFactorAlpha ); - m_sourceFactorAlphaInline.CustomDrawer( ref owner, ( x ) => { m_sourceFactorAlpha = (AvailableBlendFactor)x.EditorGUILayoutEnumPopup( SourceFactorStr, m_sourceFactorAlpha ); }, SourceFactorStr ); - if( style ) - { - EditorGUI.indentLevel--; - EditorGUIUtility.labelWidth = 25; - } - //m_destFactorAlpha = (AvailableBlendFactor)owner.EditorGUILayoutEnumPopup( DstFactorStr, m_destFactorAlpha ); - m_destFactorAlphaInline.CustomDrawer( ref owner, ( x ) => { m_destFactorAlpha = (AvailableBlendFactor)x.EditorGUILayoutEnumPopup( DstFactorStr, m_destFactorAlpha ); }, DstFactorStr ); - if( style ) - EditorGUI.indentLevel++; - EditorGUILayout.EndHorizontal(); - EditorGUIUtility.labelWidth = cached; - - if( EditorGUI.EndChangeCheck() ) - { - CheckAlphaIndex(); - } - - EditorGUI.EndDisabledGroup(); - EditorGUILayout.Separator(); - } - - if( m_blendOpEnabled ) - { - // Both these tests should be removed on a later stage - // ASE v154dev004 changed AvailableBlendOps.OFF value from -1 to 0 - // If importing the new package into an already opened ASE window makes - // hotcode to preserve the -1 value on these variables - if( (int)m_blendOpRGB == -1 ) - m_blendOpRGB = AvailableBlendOps.OFF; - - if( (int)m_blendOpAlpha == -1 ) - m_blendOpAlpha = AvailableBlendOps.OFF; - - //m_blendOpRGB = (AvailableBlendOps)owner.EditorGUILayoutEnumPopup( BlendOpsRGBStr, m_blendOpRGB ); - m_blendOpRGBInline.CustomDrawer( ref owner, ( x ) => { m_blendOpRGB = (AvailableBlendOps)x.EditorGUILayoutPopup( BlendOpsRGBStr, (int)m_blendOpRGB, BlendOpsHelper.BlendOpsLabels ); }, BlendOpsRGBStr ); - EditorGUILayout.Separator(); - //m_blendOpAlpha = (AvailableBlendOps)owner.EditorGUILayoutEnumPopup( BlendOpsAlphaStr, m_blendOpAlpha ); - m_blendOpAlphaInline.CustomDrawer( ref owner, ( x ) => { m_blendOpAlpha = (AvailableBlendOps)x.EditorGUILayoutPopup( BlendOpsAlphaStr, (int)m_blendOpAlpha, BlendOpsHelper.BlendOpsLabels ); }, BlendOpsAlphaStr ); - } - - if( m_validAlphaToMask ) - { - EditorGUILayout.Space(); - m_alphaToMaskValue = owner.EditorGUILayoutToggle( AlphaToMaskStr, m_alphaToMaskValue ); - } - } - - if( EditorGUI.EndChangeCheck() ) - { - m_isDirty = true; - } - } - - void CheckRGBIndex() - { - int count = m_commonBlendTypes.Count; - m_currentRGBIndex = 1; - for( int i = 1; i < count; i++ ) - { - if( m_commonBlendTypes[ i ].SourceFactor == m_sourceFactorRGB && m_commonBlendTypes[ i ].DestFactor == m_destFactorRGB ) - { - m_currentRGBIndex = i; - return; - } - } - - } - - void CheckAlphaIndex() - { - int count = m_commonBlendTypes.Count; - m_currentAlphaIndex = 1; - for( int i = 1; i < count; i++ ) - { - if( m_commonBlendTypes[ i ].SourceFactor == m_sourceFactorAlpha && m_commonBlendTypes[ i ].DestFactor == m_destFactorAlpha ) - { - m_currentAlphaIndex = i; - if( m_currentAlphaIndex > 0 && m_currentRGBIndex == 0 ) - m_currentRGBIndex = 1; - return; - } - } - - if( m_currentAlphaIndex > 0 && m_currentRGBIndex == 0 ) - m_currentRGBIndex = 1; - } - - public void ReadAlphaToMaskFromString( ref uint index, ref string[] nodeParams ) - { - if( UIUtils.CurrentShaderVersion() > 16102 ) - { - m_validAlphaToMask = Convert.ToBoolean( nodeParams[ index++ ] ); - if( m_validAlphaToMask ) - { - m_alphaToMaskValue = Convert.ToBoolean( nodeParams[ index++ ] ); - } - } - } - - public void ReadBlendModeFromString( ref uint index, ref string[] nodeParams ) - { - bool validDataOnMeta = m_validBlendMode; - if( UIUtils.CurrentShaderVersion() > TemplatesManager.MPShaderVersion ) - { - validDataOnMeta = Convert.ToBoolean( nodeParams[ index++ ] ); - } - - if( validDataOnMeta ) - { - if( UIUtils.CurrentShaderVersion() < 15304 ) - { - m_currentRGBIndex = Convert.ToInt32( nodeParams[ index++ ] ); - m_sourceFactorRGB = (AvailableBlendFactor)Enum.Parse( typeof( AvailableBlendFactor ), nodeParams[ index++ ] ); - m_destFactorRGB = (AvailableBlendFactor)Enum.Parse( typeof( AvailableBlendFactor ), nodeParams[ index++ ] ); - - m_currentAlphaIndex = Convert.ToInt32( nodeParams[ index++ ] ); - m_sourceFactorAlpha = (AvailableBlendFactor)Enum.Parse( typeof( AvailableBlendFactor ), nodeParams[ index++ ] ); - m_destFactorAlpha = (AvailableBlendFactor)Enum.Parse( typeof( AvailableBlendFactor ), nodeParams[ index++ ] ); - } - else - { - m_currentRGBIndex = Convert.ToInt32( nodeParams[ index++ ] ); - m_sourceFactorRGBInline.ReadFromString( ref index, ref nodeParams ); - m_sourceFactorRGB = (AvailableBlendFactor)m_sourceFactorRGBInline.IntValue; - m_destFactorRGBInline.ReadFromString( ref index, ref nodeParams ); - m_destFactorRGB = (AvailableBlendFactor)m_destFactorRGBInline.IntValue; - - m_currentAlphaIndex = Convert.ToInt32( nodeParams[ index++ ] ); - m_sourceFactorAlphaInline.ReadFromString( ref index, ref nodeParams ); - m_sourceFactorAlpha = (AvailableBlendFactor)m_sourceFactorAlphaInline.IntValue; - m_destFactorAlphaInline.ReadFromString( ref index, ref nodeParams ); - m_destFactorAlpha = (AvailableBlendFactor)m_destFactorAlphaInline.IntValue; - } - } - } - - public void ReadBlendOpFromString( ref uint index, ref string[] nodeParams ) - { - bool validDataOnMeta = m_validBlendOp; - if( UIUtils.CurrentShaderVersion() > TemplatesManager.MPShaderVersion ) - { - validDataOnMeta = Convert.ToBoolean( nodeParams[ index++ ] ); - } - - if( validDataOnMeta ) - { - if( UIUtils.CurrentShaderVersion() < 15304 ) - { - m_blendOpRGB = (AvailableBlendOps)Enum.Parse( typeof( AvailableBlendOps ), nodeParams[ index++ ] ); - m_blendOpAlpha = (AvailableBlendOps)Enum.Parse( typeof( AvailableBlendOps ), nodeParams[ index++ ] ); - } - else - { - m_blendOpRGBInline.ReadFromString( ref index, ref nodeParams ); - m_blendOpAlphaInline.ReadFromString( ref index, ref nodeParams ); - - if( UIUtils.CurrentShaderVersion() < 15404 ) - { - // Now BlendOps enum starts at 0 and not -1 - m_blendOpRGBInline.FloatValue += 1; - m_blendOpAlphaInline.FloatValue += 1; - } - - m_blendOpRGB = (AvailableBlendOps)m_blendOpRGBInline.IntValue; - m_blendOpAlpha = (AvailableBlendOps)m_blendOpAlphaInline.IntValue; - } - //m_blendOpEnabled = ( m_blendOpRGB != AvailableBlendOps.OFF ); - } - } - public void WriteAlphaToMaskToString( ref string nodeInfo ) - { - IOUtils.AddFieldValueToString( ref nodeInfo, m_validAlphaToMask ); - if( m_validAlphaToMask ) - { - IOUtils.AddFieldValueToString( ref nodeInfo, m_alphaToMaskValue ); - } - } - - public void WriteBlendModeToString( ref string nodeInfo ) - { - IOUtils.AddFieldValueToString( ref nodeInfo, m_validBlendMode ); - if( m_validBlendMode ) - { - IOUtils.AddFieldValueToString( ref nodeInfo, m_currentRGBIndex ); - if( !m_sourceFactorRGBInline.IsValid ) m_sourceFactorRGBInline.IntValue = (int)m_sourceFactorRGB; - m_sourceFactorRGBInline.WriteToString( ref nodeInfo ); - - if( !m_destFactorRGBInline.IsValid ) m_destFactorRGBInline.IntValue = (int)m_destFactorRGB; - m_destFactorRGBInline.WriteToString( ref nodeInfo ); - - IOUtils.AddFieldValueToString( ref nodeInfo, m_currentAlphaIndex ); - if( !m_sourceFactorAlphaInline.IsValid ) m_sourceFactorAlphaInline.IntValue = (int)m_sourceFactorAlpha; - m_sourceFactorAlphaInline.WriteToString( ref nodeInfo ); - - if( !m_destFactorAlphaInline.IsValid ) m_destFactorAlphaInline.IntValue = (int)m_destFactorAlpha; - m_destFactorAlphaInline.WriteToString( ref nodeInfo ); - } - } - - public void WriteBlendOpToString( ref string nodeInfo ) - { - IOUtils.AddFieldValueToString( ref nodeInfo, m_validBlendOp ); - if( m_validBlendOp ) - { - if( !m_blendOpRGBInline.IsValid ) m_blendOpRGBInline.IntValue = (int)m_blendOpRGB; - m_blendOpRGBInline.WriteToString( ref nodeInfo ); - - if( !m_blendOpAlphaInline.IsValid ) m_blendOpAlphaInline.IntValue = (int)m_blendOpAlpha; - m_blendOpAlphaInline.WriteToString( ref nodeInfo ); - } - } - - public override void ReadFromString( ref uint index, ref string[] nodeParams ) - { - ReadBlendModeFromString( ref index, ref nodeParams ); - ReadBlendOpFromString( ref index, ref nodeParams ); - ReadAlphaToMaskFromString( ref index, ref nodeParams ); - } - - public override void WriteToString( ref string nodeInfo ) - { - WriteBlendModeToString( ref nodeInfo ); - WriteBlendOpToString( ref nodeInfo ); - WriteAlphaToMaskToString( ref nodeInfo ); - } - - public override void Destroy() - { - base.Destroy(); - m_sourceFactorRGBInline = null; - m_destFactorRGBInline = null; - m_sourceFactorAlphaInline = null; - m_destFactorAlphaInline = null; - m_blendOpRGBInline = null; - m_blendOpAlphaInline = null; - } - - public string CurrentAlphaToMask - { - get - { - return string.Format( AlphaToMaskFormat, m_alphaToMaskValue ? "On" : "Off" ); - } - } - public string CurrentBlendFactorSingle - { - get - { - return ( m_currentRGBIndex > 0 ) ? string.Format( SingleBlendFactorStr, m_sourceFactorRGBInline.GetValueOrProperty( m_sourceFactorRGB.ToString() ), m_destFactorRGBInline.GetValueOrProperty( m_destFactorRGB.ToString() ) ) : BlendFactorOff; - } - } - - public string CurrentBlendFactorSeparate - { - get - { - return string.Format( SeparateBlendFactorStr, - m_sourceFactorRGBInline.GetValueOrProperty( ( m_currentRGBIndex > 0 ? m_sourceFactorRGB.ToString() : AvailableBlendFactor.One.ToString() ) ), - m_destFactorRGBInline.GetValueOrProperty( m_currentRGBIndex > 0 ? m_destFactorRGB.ToString() : AvailableBlendFactor.Zero.ToString() ), - m_sourceFactorAlphaInline.GetValueOrProperty( m_sourceFactorAlpha.ToString() ), - m_destFactorAlphaInline.GetValueOrProperty( m_destFactorAlpha.ToString() ) ); - } - } - - public string CurrentBlendFactor - { - get - { - return ( ( m_currentAlphaIndex > 0 ) ? CurrentBlendFactorSeparate : CurrentBlendFactorSingle ); - } - } - - - public string CurrentBlendOpSingle - { - get - { - return ( m_blendOpRGB != AvailableBlendOps.OFF || m_blendOpRGBInline.IsValid ) ? string.Format( SingleBlendOpStr, m_blendOpRGBInline.GetValueOrProperty( m_blendOpRGB.ToString() ) ) : string.Empty; - } - } - - public string CurrentBlendOpSeparate - { - get - { - return string.Format( SeparateBlendOpStr, m_blendOpRGBInline.GetValueOrProperty( ( m_currentRGBIndex > 0 && m_blendOpRGB != AvailableBlendOps.OFF ) ? m_blendOpRGB.ToString() : AvailableBlendOps.Add.ToString() ), m_blendOpAlphaInline.GetValueOrProperty( m_blendOpAlpha.ToString() ) ); - } - } - - public string CurrentBlendOp { get { return ( ( m_blendOpAlpha != AvailableBlendOps.OFF || m_blendOpAlphaInline.IsValid ) ? CurrentBlendOpSeparate : CurrentBlendOpSingle ); } } - public bool Active { get { return m_blendModeEnabled && ( m_currentRGBIndex > 0 || m_currentAlphaIndex > 0 ); } } - public bool BlendOpActive - { - get - { - return m_blendOpEnabled && - ( - m_blendOpRGBInline.Active || - m_blendOpAlphaInline.Active || - ( !m_blendOpRGBInline.Active && m_blendOpRGB != AvailableBlendOps.OFF ) || - ( !m_blendOpAlphaInline.Active && m_blendOpAlpha != AvailableBlendOps.OFF ) ); - } - } - - public bool ValidBlendMode { get { return m_validBlendMode; } } - public bool ValidBlendOp { get { return m_validBlendOp; } } - public int CurrentRGBIndex { get { return m_currentRGBIndex; } } - - public AvailableBlendFactor SourceFactorRGB - { - get { return m_sourceFactorRGB; } - set - { - m_sourceFactorRGB = value; - m_sourceFactorRGBInline.IntValue = (int)m_sourceFactorRGB; - m_sourceFactorRGBInline.Active = false; - } - - } - public AvailableBlendFactor DestFactorRGB - { - get { return m_destFactorRGB; } - set - { - m_destFactorRGB = value; - m_destFactorRGBInline.IntValue = (int)value; - } - } - - public int CurrentAlphaIndex { get { return m_currentAlphaIndex; } set { m_currentAlphaIndex = value; } } - - public AvailableBlendFactor SourceFactorAlpha - { - get { return m_sourceFactorAlpha; } - set - { - m_sourceFactorAlpha = value; - m_sourceFactorAlphaInline.IntValue = (int)value; - m_sourceFactorAlphaInline.Active = false; - } - } - - public AvailableBlendFactor DestFactorAlpha - { - get { return m_destFactorAlpha; } - set - { - m_destFactorAlpha = value; - m_destFactorAlphaInline.IntValue = (int)value; - m_destFactorAlphaInline.Active = false; - - } - } - - public bool BlendModeEnabled { get { return m_blendModeEnabled; } } - public bool BlendOpEnabled { get { return m_blendOpEnabled; } } - public AvailableBlendOps BlendOpRGB - { - get { return m_blendOpRGB; } - set - { - m_blendOpRGB = value; - m_blendOpRGBInline.IntValue = (int)value; - m_blendOpRGBInline.Active = false; - } - } - - public AvailableBlendOps BlendOpAlpha - { - get { return m_blendOpAlpha; } - set - { - m_blendOpAlpha = value; - m_blendOpAlphaInline.IntValue = (int)value; - m_blendOpAlphaInline.Active = false; - } - } - - public InlineProperty SourceFactorRGBInline { get { return m_sourceFactorRGBInline; } } - public InlineProperty DestFactorRGBInline { get { return m_destFactorRGBInline; } } - public InlineProperty SourceFactorAlphaInline { get { return m_sourceFactorAlphaInline; } } - public InlineProperty DestFactorAlphaInline { get { return m_destFactorAlphaInline; } } - public InlineProperty BlendOpRGBInline { get { return m_blendOpRGBInline; } } - public InlineProperty BlendOpAlphaInline { get { return m_blendOpAlphaInline; } } - public bool IsAdditiveRGB { get { return m_validBlendMode && m_blendModeEnabled && ( m_currentRGBIndex > 0 ) && ( m_sourceFactorRGB == AvailableBlendFactor.One ) && ( m_destFactorRGB == AvailableBlendFactor.One ); } } - public bool IsAlphaBlendRGB { get { return m_validBlendMode && m_blendModeEnabled && ( m_currentRGBIndex > 0 ) && ( m_sourceFactorRGB == AvailableBlendFactor.SrcAlpha ) && ( m_destFactorRGB == AvailableBlendFactor.OneMinusSrcAlpha ); } } - public bool ValidAlphaToMask { get { return m_validAlphaToMask; } } - public bool AlphaToMaskValue { get { return m_alphaToMaskValue; } } - public bool AlphaToMaskIndependent { get { return m_alphaToMaskIndependent; } } - } -} |