Exemple #1
0
        public void GetItem(int outputId, bool rebuildGlobalLists, bool resetTextures)
        {
            // Debug.Log("Terrain Layer GetItem " + TC.outputNames[outputId]);
            active = visible;

            if (t.childCount < 6)
            {
                active = false;
                return;
            }

            if (outputId == TC.objectOutput)
            {
                if (objectSelectItems == null)
                {
                    objectSelectItems = new List <TC_SelectItem>();
                }
                else
                {
                    objectSelectItems.Clear();
                }
            }
            else if (outputId == TC.treeOutput)
            {
                if (treeSelectItems == null)
                {
                    treeSelectItems = new List <TC_SelectItem>();
                }
                else
                {
                    treeSelectItems.Clear();
                }
            }

            Transform     child      = t.GetChild(outputId);
            TC_LayerGroup layerGroup = child.GetComponent <TC_LayerGroup>();

            if (layerGroup != null)
            {
                layerGroup.level      = 0;
                layerGroup.outputId   = outputId;
                layerGroup.listIndex  = outputId;
                layerGroup.parentItem = this;

                layerGroup.GetItems(true, rebuildGlobalLists, resetTextures);
                layerGroups[outputId] = layerGroup;
            }
        }
Exemple #2
0
        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;
            }
        }