Example #1
0
        /// <summary>
        /// 收集依赖
        /// </summary>
        public int CollectDeps(Dictionary <string, ResExportDesc> dictRes)
        {
            // 没有对象
            if (_items.Length < 1)
            {
                return(0);
            }

            // 收集对象中的依赖
            int nDepCount = 0;

            for (int i = 0; i < _items.Length; ++i)
            {
                _deps.Clear();
                var item = _items[i];

                // 检查游戏对象, 收集go对象所依赖对象
                ResDepBase.CollectRendererDependencies(item.go, false, _deps, null);

                // 没有依赖
                if (_deps.Count <= 0)
                {
                    continue;
                }

                nDepCount += _deps.Count;

                // LOD0
                var resDep = new TreeNodeObjectDep();
                resDep.lods.Add(new TreeNodeObjectLodDep {
                    go = item.go, deps = new List <ResDepBase>(_deps)
                });

                // 只有地形才导出Lightmap
                var isTerrain = item.go.tag.Equals("Terrain");
                if (null != item.cfg)
                {
                    if (null != item.cfg.lods)
                    {
                        for (int n = 0; n < item.cfg.lods.Length; n++)
                        {
                            _deps.Clear();

                            var lod = item.cfg.lods[n];
                            if (lod == null)
                            {
                                continue;
                            }

                            ResDepBase.CollectRendererDependencies(lod.go, false, _deps, item.go, isTerrain);
                            if (_deps.Count <= 0)
                            {
                                continue;
                            }
                            resDep.lods.Add(new TreeNodeObjectLodDep {
                                go = lod.go, deps = new List <ResDepBase>(_deps)
                            });
                            nDepCount += _deps.Count;
                        }
                    }
                }
                item.resDep = resDep;
                _items[i]   = item;
            }

            return(nDepCount);
        }