void DrawInstancedProperties()
        {
            string[] arr = UIUtils.GlobalArrayNodeArr();
            bool     guiEnabledBuffer = GUI.enabled;

            if (arr != null && arr.Length > 0)
            {
                GUI.enabled = true;
            }
            else
            {
                m_referenceArrayId = -1;
                m_referenceNodeId  = -1;
                m_referenceNode    = null;
                GUI.enabled        = false;
            }
            EditorGUI.BeginChangeCheck();
            m_referenceArrayId = EditorGUILayoutPopup(Constants.AvailableReferenceStr, m_referenceArrayId, arr);
            if (EditorGUI.EndChangeCheck())
            {
                m_referenceNode = UIUtils.GetGlobalArrayNode(m_referenceArrayId);
                if (m_referenceNode != null)
                {
                    m_referenceNodeId = m_referenceNode.UniqueId;
                }
                UpdatePorts();
            }

            GUI.enabled = guiEnabledBuffer;

            InputPort indexXPort = GetInputPortByUniqueId(0);

            if (!indexXPort.IsConnected)
            {
                EditorGUI.BeginChangeCheck();
                m_indexX = EditorGUILayoutIntField(indexXPort.Name, m_indexX);
                if (EditorGUI.EndChangeCheck())
                {
                    m_indexX = Mathf.Clamp(m_indexX, 0, (m_arrayLengthX - 1));
                }
            }

            if (m_isJagged)
            {
                InputPort indexYPort = GetInputPortByUniqueId(2);
                if (!indexYPort.IsConnected)
                {
                    EditorGUI.BeginChangeCheck();
                    m_indexY = EditorGUILayoutIntField(indexYPort.Name, m_indexY);
                    if (EditorGUI.EndChangeCheck())
                    {
                        m_indexY = Mathf.Clamp(m_indexY, 0, (m_arrayLengthY - 1));
                    }
                }
            }
        }
        void UpdatePorts()
        {
            InputPort indexXPort       = GetInputPortByUniqueId(0);
            InputPort arrayLengthPortX = GetInputPortByUniqueId(1);
            InputPort indexYPort       = GetInputPortByUniqueId(2);
            InputPort arrayLengthPortY = GetInputPortByUniqueId(3);

            if (m_referenceType == TexReferenceType.Object)
            {
                m_headerColorModifier = Color.white;
                SetAdditonalTitleText(string.Format(Constants.SubTitleValueFormatStr, m_name));
                arrayLengthPortX.Visible = true;
                if (m_isJagged)
                {
                    indexXPort.Name          = "Index X";
                    arrayLengthPortX.Name    = "Array Length X";
                    indexYPort.Visible       = true;
                    arrayLengthPortY.Visible = true;
                }
                else
                {
                    indexXPort.Name          = "Index";
                    arrayLengthPortX.Name    = "Array Length";
                    indexYPort.Visible       = false;
                    arrayLengthPortY.Visible = false;
                }
            }
            else if (m_referenceNodeId > -1)
            {
                m_headerColorModifier = ReferenceHeaderColor;
                if (m_referenceNode == null)
                {
                    m_referenceNode = UIUtils.GetNode(m_referenceNodeId) as GlobalArrayNode;
                }

                if (m_referenceNode != null)
                {
                    SetAdditonalTitleText(string.Format(Constants.SubTitleValueFormatStr, m_referenceNode.DataToArray));
                    arrayLengthPortX.Visible = false;
                    arrayLengthPortY.Visible = false;
                    if (m_referenceNode.IsJagged)
                    {
                        indexXPort.Name    = "Index X";
                        indexYPort.Visible = true;
                    }
                    else
                    {
                        indexXPort.Name    = "Index";
                        indexYPort.Visible = false;
                    }
                }
            }
            m_sizeIsDirty = true;
        }
 public override void RefreshExternalReferences()
 {
     base.RefreshExternalReferences();
     if (m_referenceType == TexReferenceType.Instance && m_referenceNodeId > -1)
     {
         m_referenceNode = UIUtils.GetNode(m_referenceNodeId) as GlobalArrayNode;
         if (m_referenceNode != null)
         {
             m_referenceArrayId = UIUtils.GetGlobalArrayNodeRegisterId(m_referenceNodeId);
             UpdatePorts();
         }
         else
         {
             m_referenceNodeId = -1;
         }
     }
 }
 public override void OnNodeLayout(DrawInfo drawInfo)
 {
     base.OnNodeLayout(drawInfo);
     m_updated = false;
     if (m_referenceType == TexReferenceType.Instance)
     {
         if (m_referenceNodeId > -1 && m_referenceNode == null)
         {
             m_referenceNode = UIUtils.GetNode(m_referenceNodeId) as GlobalArrayNode;
             if (m_referenceNode == null)
             {
                 m_referenceNodeId = -1;
             }
         }
         if (m_referenceNode != null && m_referenceNode.Updated)
         {
             UpdatePorts();
         }
     }
 }