Beispiel #1
0
        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.");
        }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
 private void DestroyCriteriaGroupViews()
 {
     foreach (var view in CriteriaGroupViews.ToList())      // ToList to avoid modifying collection
     {
         RemoveCriteriaGroupView(view.CriteriaGroup, true);
     }
     ComputeSchema();
 }
Beispiel #4
0
        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();
            }
        }
Beispiel #5
0
        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();
            }
        }