public T GetGroup <T>(int index, bool refresh, bool resetTextures) where T : TC_GroupBehaviour { if (resetTextures) { DisposeTextures(); } if (index >= t.childCount) { TC.MoveToDustbin(t); return(null); } Transform child = t.GetChild(index); T group = child.GetComponent <T>(); if (group == null) { TC.MoveToDustbin(t); } else { group.SetParameters(this, index); group.GetItems(refresh, resetTextures, true); } return(group); }
public override void GetItems(bool refresh, bool rebuildGlobalLists, bool resetTextures) { bool newBounds = true; active = visible; if (resetTextures) { DisposeTextures(); } maskNodeGroup = GetGroup <TC_NodeGroup>(0, refresh, resetTextures); if (maskNodeGroup == null) { active = false; } else { maskNodeGroup.type = NodeGroupType.Mask; if (maskNodeGroup.active) { if (newBounds) { bounds = maskNodeGroup.bounds; } else { bounds.Encapsulate(maskNodeGroup.bounds); } } } if (t.childCount <= 1) { active = false; } else { Transform child = t.GetChild(1); groupResult = child.GetComponent <TC_LayerGroupResult>(); if (groupResult == null) { TC.MoveToDustbin(child); active = false; } else { groupResult.SetParameters(this, 1); groupResult.GetItems(refresh, rebuildGlobalLists, resetTextures); if (!groupResult.active) { active = false; } } } }
public override void GetItems(bool refresh, bool rebuildGlobalLists, bool resetTextures) { if (resetTextures) { DisposeTextures(); } itemList.Clear(); totalActive = 0; int listIndex = 0; for (int i = t.childCount - 1; i >= 0; i--) { Transform child = t.GetChild(i); TC_SelectItem selectItem = child.GetComponent <TC_SelectItem>(); if (selectItem == null) { TC.MoveToDustbin(child); } else { selectItem.SetParameters(this, listIndex); selectItem.parentItem = this; selectItem.active = selectItem.visible; if (outputId == TC.splatOutput && selectItem.splatCustom) { if (TC_Settings.instance.hasMasterTerrain) { if (selectItem.splatCustomValues.Length != TC_Settings.instance.masterTerrain.terrainData.splatPrototypes.Length) { selectItem.splatCustomValues = Mathw.ResizeArray <float>(selectItem.splatCustomValues, TC_Settings.instance.masterTerrain.terrainData.splatPrototypes.Length); } } selectItem.CalcSplatCustomTotal(); } selectItem.SetPreviewItemTexture(); // Put deactive if listIndex is out of bounds if (selectItem.active) { ++totalActive; } if (outputId == TC.treeOutput) { if (selectItem.tree == null) { selectItem.tree = new TC_SelectItem.Tree(); } if (selectItem.active) { bool addToList = true; List <TC_SelectItem> treeSelectItems = TC_Area2D.current.terrainLayer.treeSelectItems; if (!rebuildGlobalLists) { int index = treeSelectItems.IndexOf(selectItem); if (index != -1) { addToList = false; selectItem.globalListIndex = index; } } if (addToList) { treeSelectItems.Add(selectItem); selectItem.globalListIndex = treeSelectItems.Count - 1; } } } else if (outputId == TC.objectOutput) { if (selectItem.spawnObject == null) { selectItem.spawnObject = new TC_SelectItem.SpawnObject(); } if (selectItem.spawnObject.go == null) { selectItem.active = false; TC_Area2D.current.terrainLayer.objectSelectItems.Remove(selectItem); // Debug.Log("Remove from list"); } if (selectItem.active) { bool addToList = true; List <TC_SelectItem> objectSelectItems = TC_Area2D.current.terrainLayer.objectSelectItems; if (!rebuildGlobalLists) { int index = objectSelectItems.IndexOf(selectItem); if (index != -1) { addToList = false; selectItem.globalListIndex = index; } } if (addToList) { objectSelectItems.Add(selectItem); selectItem.globalListIndex = objectSelectItems.Count - 1; } selectItem.selectIndex = listIndex; } } selectItem.SetPreviewItemTexture(); selectItem.SetPreviewColor(); itemList.Add(selectItem); listIndex++; } } if (refreshRangeItem != null || refreshRanges) { refreshRanges = false; RefreshRanges(); refreshRangeItem = null; } else if (refresh || TC.refreshPreviewImages) { CalcPreview(); } }
public override void GetItems(bool refresh, bool rebuildGlobalLists, bool resetTextures) { if (resetTextures) { DisposeTextures(); } active = visible; itemList.Clear(); firstActive = lastActive = -1; totalActive = 0; bool newBounds = true; int listIndex = 0; // Debug.Log(name + " GetItems"); for (int i = t.childCount - 1; i >= 0; i--) { Transform child = transform.GetChild(i); TC_Layer layer = child.GetComponent <TC_Layer>(); if (layer != null) { layer.SetParameters(this, listIndex); layer.GetItems(refresh, rebuildGlobalLists, resetTextures); if (layer.active) { ++totalActive; lastActive = listIndex; if (firstActive == -1) { firstActive = lastActive; } } itemList.Add(layer); ++listIndex; if (newBounds) { bounds = layer.bounds; newBounds = false; } else { bounds.Encapsulate(layer.bounds); } } else { TC_LayerGroup layerGroup = child.GetComponent <TC_LayerGroup>(); if (layerGroup == null) { TC.MoveToDustbin(child); } else { layerGroup.SetParameters(this, listIndex); layerGroup.GetItems(refresh, rebuildGlobalLists, resetTextures); if (layerGroup.active) { ++totalActive; lastActive = listIndex; if (firstActive == -1) { firstActive = lastActive; } } if (layerGroup.groupResult == null) { TC.MoveToDustbin(child); } else { itemList.Add(layerGroup); listIndex++; } if (newBounds) { bounds = layerGroup.bounds; newBounds = false; } else { bounds.Encapsulate(layerGroup.bounds); } } } } TC_Reporter.Log(TC.outputNames[outputId] + " Level " + level + " activeTotal " + totalActive); if (!active) { totalActive = 0; } else if (totalActive == 0) { active = false; } }