protected override void OnProcessOutputSchema(MutableObject newSchema) { DefaultState.TransmitSchema(newSchema); ChildBoundNameTarget.SetValue("Child Name", newSchema); PerChildState.TransmitSchema(newSchema); }
protected override IEnumerator ProcessPayload(VisualPayload payload) { foreach (var entry in PrefabType.GetEntries(payload.Data)) { var prefabType = PrefabType.GetValue(entry); var newVisualizer = VisualizerFactory.InstantiatePrefabVisualizer(prefabType); var newBound = newVisualizer.GetComponent <BoundingBox>(); if (newBound == null) { newBound = newVisualizer.gameObject.AddComponent <BoundingBox>(); } newVisualizer.Initialize(this, payload); foreach (var discriminateChild in newVisualizer.GetComponentsInChildren <PrefabDiscriminateChild>()) { var childBound = discriminateChild.FulfillValueDiscrimination(); ChildBoundNameTarget.SetValue(discriminateChild.ChildName, payload.Data); var childPayload = new VisualPayload(payload.Data, new VisualDescription(childBound)); var iterator = PerChildState.Transmit(childPayload); while (iterator.MoveNext()) { yield return(null); } } var newPayload = new VisualPayload(payload.Data, new VisualDescription(newBound)); var defaultIterator = DefaultState.Transmit(newPayload); while (defaultIterator.MoveNext()) { yield return(null); } } }