protected override IEnumerator ProcessPayload(VisualPayload payload) { Debug.LogWarning("[BOUND DEBUG] IsoGrid rendering to bound.", payload.VisualData.Bound); IsoGrid = VisualizerFactory.InstantiateIsoGrid(); IsoGrid.Initialize(this, payload); //payload.VisualData.Bound.ChildVisualizer(this, IsoGrid); IsoGrid.DrawBackgrounds = ShowBackgrounds.GetLastKeyValue(payload.Data); IsoGrid.InitializeIsoGrid(payload.VisualData.Bound); IsoGrid.AllowSlicer = AllowSlicerField.GetLastKeyValue(payload.Data); AssignStates(IsoGrid); var entries = EntryField.GetFirstValue(payload.Data); if (entries == null) { throw new Exception("Illegal mutable field here! " + EntryField.AbsoluteKey + " is not an enumerable of mutables!"); } // Determine the full size of the entire isogrid int numCellsXAxis = 0; int numCellsZAxis = 0; if (entries.Any()) { numCellsXAxis = XAxis.GetEntries(payload.Data).Max(e => XAxis.GetValue(e)) + 1; numCellsZAxis = ZAxis.GetEntries(payload.Data).Max(e => ZAxis.GetValue(e)) + 1; } IsoGrid.UpdateHorizontalScale(numCellsXAxis); IsoGrid.UpdateDepthScale(numCellsZAxis); AssignElements(entries); var iterator = IsoGrid.Apply(); while (iterator.MoveNext( )) { yield return(null); } // PROCESS the label stuff, that was specified by the author: LabelSystem.Render(payload, IsoGrid.transform, IsoGrid.SelectionManager); }