private void ComputeSchema() { //var debugTimer = DiagnosticTimer.Start("Schema Timing: "); if (ExternalSchemaProvider != null) { ExternalSchemaProvider.CacheSchema(); } var schemaList = PayloadExpression.ComputeSchemaForGroups(ChainView.Instance.Chain.RootBoundingBoxes); List <MutableObject> .Enumerator schemaEnumerator = schemaList.GetEnumerator(); var groupEnumerator = CriteriaGroupViews.GetEnumerator(); while (groupEnumerator.MoveNext() && schemaEnumerator.MoveNext()) { groupEnumerator.Current.Schema = schemaEnumerator.Current; } while (groupEnumerator.MoveNext()) { groupEnumerator.Current.Schema = new MutableObject { }; } if (ExternalSchemaProvider != null) { ExternalSchemaProvider.UnCacheSchema(); } //Debug.Log("Debug Timer: " + debugTimer.Stop().Conclusion + ", with " + MutableObject.SchemaCounter + " schema modifications."); }
private void AddCriteriaGroupView(CriteriaGroup criteriaGroup, bool ignoreSchemaChange = false) { var viewGo = Instantiate(CriteriaGroupViewPrefab); var view = viewGo.GetComponent <CriteriaGroupViewBehaviour>(); // set external schemas view.ExternalSchemaProvider = ExternalSchemaProvider; view.CriteriaGroup = criteriaGroup; view.transform.SetParent(CriteriaGroupAttachmentPoint, false); CriteriaGroupViews.Add(view); AddGroupButtonWrapperComponent.transform.SetAsLastSibling(); view.CriteriaChanged += HandleCriteriaGroupChanged; if (!ignoreSchemaChange) { HighlightSelection(); ComputeSchema(); ShowNewSchema(); } }
private void DestroyCriteriaGroupViews() { foreach (var view in CriteriaGroupViews.ToList()) // ToList to avoid modifying collection { RemoveCriteriaGroupView(view.CriteriaGroup, true); } ComputeSchema(); }
private void ClearCriteriaGroupViews(bool ignoreSchemaChange = false) { foreach (var view in CriteriaGroupViews) { if (view == null) { return; } Destroy(view.gameObject); CriteriaGroupViews.Remove(view); view.CriteriaChanged -= HandleCriteriaGroupChanged; } if (!ignoreSchemaChange) { HighlightSelection(); ComputeSchema(); ShowNewSchema(); } }
private void RemoveCriteriaGroupView(CriteriaGroup criteriaGroup, bool ignoreSchemaChange = false) { var view = CriteriaGroupViews.FirstOrDefault(v => v.CriteriaGroup == criteriaGroup); if (view == null) { return; } Destroy(view.gameObject); CriteriaGroupViews.Remove(view); view.CriteriaChanged -= HandleCriteriaGroupChanged; if (!ignoreSchemaChange) { HighlightSelection(); ComputeSchema(); ShowNewSchema(); } }