Ejemplo n.º 1
0
        protected override void OnProcessOutputSchema(MutableObject newSchema)
        {
            DefaultState.TransmitSchema(newSchema);

            ChildBoundNameTarget.SetValue("Child Name", newSchema);

            PerChildState.TransmitSchema(newSchema);
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }