private bool TryEdit(UnityEngine.Object inObject) { IRSRuleTableSource ruleTableSource; bool bFoundTable = RSEditorUtility.EditorPlugin.TryGetRuleTable(inObject, out ruleTableSource); if (!bFoundTable || ruleTableSource.TableData == null) { return(false); } m_TargetState.Select(inObject); m_SelectionState.ClearAll(); m_SelectionState.Source = ruleTableSource; m_SelectionState.Table = ruleTableSource.TableData; if (m_SelectionState.Table.Rules == null) { m_TargetState.UndoTarget.MarkDirty("Initialized Rules"); m_SelectionState.Table.Rules = new RSRuleData[0]; } bool bCleanUpChanged = TableUtils.CleanUp(m_SelectionState.Table); if (bCleanUpChanged) { m_TargetState.UndoTarget.MarkDirtyWithoutUndo("Cleaned up Rule Table data"); } ConfigureRuleList(m_SelectionState.Table, ref m_RuleList); m_Context = new RSValidationContext(RSEditorUtility.EditorPlugin.Library); RegenContext(true); ScanForIssues(); UnityEditor.Selection.activeObject = inObject; return(true); }
private void RegenContext(bool inbForce = false) { if (!inbForce && Event.current.type != EventType.Layout) { return; } m_SelfUndoTarget = new UndoTarget(this, "RuleTableEditor"); m_TargetState.Refresh(); if (m_TargetState.SelectedObject == null) { m_TargetState.Clear(); m_SelectionState.ClearAll(); return; } if (m_TargetState.SelectedObject != null && m_SelectionState.Source == null) { IRSRuleTableSource tableSource; if (!RSEditorUtility.EditorPlugin.TryGetRuleTable(m_TargetState.SelectedObject, out tableSource)) { m_TargetState.Clear(); m_SelectionState.ClearAll(); return; } if (tableSource.TableData == null) { m_TargetState.Clear(); m_SelectionState.ClearAll(); return; } m_SelectionState.Source = tableSource; m_SelectionState.Table = tableSource.TableData; bool bCleanUpChanged = TableUtils.CleanUp(tableSource.TableData); if (bCleanUpChanged) { m_TargetState.UndoTarget.MarkDirtyWithoutUndo("Cleaned up Rule Table data"); } } m_SelectionState.Refresh(); m_Context = m_Context.WithLibrary(RSEditorUtility.EditorPlugin.Library); IRSEntity entity = null; if (m_TargetState.SelectedObject) { RSEditorUtility.EditorPlugin.TryGetEntity(m_TargetState.SelectedObject, out entity); } m_Context = m_Context.WithEntity(entity); IRSEntityMgr manager = null; if (manager == null || m_TargetState.SelectedObject) { RSEditorUtility.EditorPlugin.TryGetEntityManager(m_TargetState.SelectedObject, out manager); } m_Context = m_Context.WithManager(manager); }