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(); } } }