123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- // Amplify Shader Editor - Visual Shader Editing Tool
- // Copyright (c) Amplify Creations, Lda <info@amplify.pt>
- using System;
- using UnityEngine;
- namespace AmplifyShaderEditor
- {
- [Serializable]
- public class MatrixParentNode : PropertyNode
- {
- private readonly string[] AvailablePropertyTypeLabels = { PropertyType.Constant.ToString(), PropertyType.Global.ToString(), "Instanced" };
- private readonly int[] AvailablePropertyTypeValues = { (int)PropertyType.Constant, (int)PropertyType.Global , (int)PropertyType.InstancedProperty };
- private readonly string[] AvailablePropertyTypeLabelsSRP = { PropertyType.Constant.ToString() ,"CBuffer", PropertyType.Global.ToString() , "Instanced" };
- private readonly int[] AvailablePropertyTypeValuesSRP = { (int)PropertyType.Constant , (int)PropertyType.Property,( int)PropertyType.Global , (int)PropertyType.InstancedProperty };
- protected bool m_isEditingFields;
- protected bool m_showCBuffer = false;
- [SerializeField]
- protected Matrix4x4 m_defaultValue = Matrix4x4.identity;
- [SerializeField]
- protected Matrix4x4 m_materialValue = Matrix4x4.identity;
- [NonSerialized]
- protected Matrix4x4 m_previousValue;
- private UpperLeftWidgetHelper m_upperLeftWidget = new UpperLeftWidgetHelper();
- public MatrixParentNode() : base() { }
- public MatrixParentNode( int uniqueId, float x, float y, float width, float height ) : base( uniqueId, x, y, width, height ) { }
- protected override void CommonInit( int uniqueId )
- {
- base.CommonInit( uniqueId );
- m_freeType = false;
- m_showVariableMode = true;
- m_srpBatcherCompatible = true;
- }
- public override void AfterCommonInit()
- {
- base.AfterCommonInit();
- m_hasLeftDropdown = true;
- m_drawAttributes = false;
- m_availableAttribs.Clear();
- if( PaddingTitleLeft == 0 )
- {
- PaddingTitleLeft = Constants.PropertyPickerWidth + Constants.IconsLeftRightMargin;
- if( PaddingTitleRight == 0 )
- PaddingTitleRight = Constants.PropertyPickerWidth + Constants.IconsLeftRightMargin;
- }
- }
- public override void OnNodeLogicUpdate( DrawInfo drawInfo )
- {
- base.OnNodeLogicUpdate( drawInfo );
- m_showCBuffer = m_containerGraph.IsSRP || m_containerGraph.CurrentShaderFunction != null;
- }
- protected void DrawParameterType()
- {
- PropertyType parameterType;
- if( m_showCBuffer )
- {
- parameterType = (PropertyType)EditorGUILayoutIntPopup( ParameterTypeStr , (int)m_currentParameterType , AvailablePropertyTypeLabelsSRP , AvailablePropertyTypeValuesSRP );
- }
- else
- {
- parameterType = (PropertyType)EditorGUILayoutIntPopup( ParameterTypeStr , (int)m_currentParameterType , AvailablePropertyTypeLabels , AvailablePropertyTypeValues );
- }
- if( parameterType != m_currentParameterType )
- {
- ChangeParameterType( parameterType );
- }
- }
- public override void Draw( DrawInfo drawInfo )
- {
- base.Draw( drawInfo );
- PropertyType parameterType;
- if( m_showCBuffer )
- {
- parameterType = (PropertyType)m_upperLeftWidget.DrawWidget( this , (int)m_currentParameterType , AvailablePropertyTypeLabelsSRP , AvailablePropertyTypeValuesSRP );
- }
- else
- {
- parameterType = (PropertyType)m_upperLeftWidget.DrawWidget( this , (int)m_currentParameterType , AvailablePropertyTypeLabels , AvailablePropertyTypeValues );
- }
- if( parameterType != m_currentParameterType )
- {
- ChangeParameterType( parameterType );
- }
- }
- public override void DrawMainPropertyBlock()
- {
- DrawParameterType();
- base.DrawMainPropertyBlock();
- }
- public override void Destroy()
- {
- base.Destroy();
- m_upperLeftWidget = null;
- }
- public override void OnMasterNodeReplaced( MasterNode newMasterNode )
- {
- base.OnMasterNodeReplaced( newMasterNode );
- if( m_containerGraph.IsStandardSurface || !m_containerGraph.IsSRP )
- {
- if( m_currentParameterType == PropertyType.Property )
- {
- m_currentParameterType = PropertyType.Global;
- }
- }
- }
- public override void SetGlobalValue() { Shader.SetGlobalMatrix( m_propertyName, m_defaultValue ); }
- public override void FetchGlobalValue() { m_materialValue = Shader.GetGlobalMatrix( m_propertyName ); }
- }
- }
|