public override void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress <string> progress)
        {
            progress.Report("Scattering specific items");

            var item = systemContainer.EntityEngine.GetEntityWithName(Item);

            foreach (var map in generatedBranch.Maps)
            {
                FillMap(map, systemContainer, item, random);
            }
        }
Esempio n. 2
0
    protected GameObject CreateLODFromMesh(GameObject target, int LOD_Level)
    {
        GameObject goToInstantiate = null;
        GameObject go = null;

        if (target.GetComponent <GeneratedBranch>())
        {
            go = target.GetComponent <GeneratedBranch>().CreateLODObject(target, transform, LOD_Level, target.GetComponent <MeshFilter>().mesh);
            go.transform.position   = target.transform.position;
            go.transform.localScale = target.transform.localScale;
            go.GetComponent <GeneratedMesh>().VerySlowlyConvertToFlatShading();
            generatedBranchLOD = go.GetComponent <GeneratedBranch>();
            return(go);
        }

        if (target.GetComponent <GeneratedCone>())
        {
            go = target.GetComponent <GeneratedCone>().CreateLODObject(target, transform, LOD_Level, target.GetComponent <MeshFilter>().mesh);
            go.transform.position   = target.transform.position;
            go.transform.localScale = target.transform.localScale;
            go.GetComponent <GeneratedMesh>().VerySlowlyConvertToFlatShading();
            return(go);
        }

        /*  if (target.GetComponent<GeneratedBranch>())
         * {
         *    goToInstantiate = VegetationGenerator.instance.generatedBranchPrefab.gameObject;
         * }
         * else */if (target.GetComponent <GeneratedLeaves>())
        {
            goToInstantiate = VegetationGenerator.instance.generatedLeavesPrefab.gameObject;
        }
        else
        {
            Debug.LogError("There is no implementation for creating LOD from this object!", target);
        }

        go      = Instantiate(goToInstantiate.gameObject, transform);
        go.name = "LOD_Test";

        if (target.GetComponent <GeneratedLeaves>())
        {
            go.transform.position               = target.transform.position;
            go.transform.localScale             = target.transform.localScale;
            go.GetComponent <MeshFilter>().mesh = target.GetComponent <MeshFilter>().mesh;
            go.GetComponent <GeneratedLeaves>().Generate(LOD_Level);
            generatedLeavesLOD = go.GetComponent <GeneratedLeaves>();
        }

        go.GetComponent <GeneratedMesh>().VerySlowlyConvertToFlatShading();
        return(go);
    }
        public override void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress <string> progress)
        {
            progress.Report("Placing biome-appropriate monsters");

            var power = BasePower;

            var monsterList = GetMonsterList(systemContainer, branch);

            foreach (var map in generatedBranch.Maps)
            {
                FillMap(map, systemContainer, power, monsterList, random);

                power += PowerIncrement;
            }
        }
Esempio n. 4
0
        public override void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress <string> progress)
        {
            progress.Report("Generating random items");

            var power = BasePower;

            var itemList = GetItemList(systemContainer, branch);

            IItemGenerator itemGenerator = GetItemGenerator(systemContainer, itemList);

            foreach (var map in generatedBranch.Maps)
            {
                FillMap(map, systemContainer, power, itemList, random, itemGenerator);

                power += PowerIncrement;
            }
        }
Esempio n. 5
0
        public override void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress <string> progress)
        {
            progress.Report("Placing shops");

            var itemLevel = BasePower;

            var itemList = systemContainer.ItemSystem.GetSpawnableItems();

            itemList = itemList.Where(i => !i.Has <Wealth>()).ToList();

            var shopGenerator = new EnchantedItemShopGenerator();

            foreach (var map in generatedBranch.Maps)
            {
                FillMap(map, systemContainer, itemLevel, itemList, random, shopGenerator);

                itemLevel += PowerIncrement;
            }
        }
        public override void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress <string> progress)
        {
            progress.Report("Generating random exit portals");

            BranchGenerator.PlaceDefaultExitPortal(systemContainer, generatedBranch, random);
        }
Esempio n. 7
0
    protected IEnumerator MergeChildTrees(float LOD0_Distance, float LOD1_Distance)
    {
        yield return(new WaitForEndOfFrame());

        List <Tree> treesToMerge = new List <Tree>();

        if (transform.parent && !transform.parent.GetComponent <Tree>())
        {
            treesToMerge.Add(this);
            for (int i = 0; i < transform.childCount; i++)
            {
                if (transform.GetChild(i).GetComponent <Tree>())
                {
                    treesToMerge.Add(transform.GetChild(i).GetComponent <Tree>());
                }
            }


            //Merge
            int count = treesToMerge.Count;
            if (count > 0)
            {
                List <MeshFilter> meshFiltersBranches = new List <MeshFilter>();
                List <MeshFilter> meshFiltersLeaves   = new List <MeshFilter>();

                List <MeshFilter> meshFiltersBranchesLOD = new List <MeshFilter>();
                List <MeshFilter> meshFiltersLeavesLOD   = new List <MeshFilter>();
                for (int i = 0; i < count; i++)
                {
                    meshFiltersBranches.Add(treesToMerge[i].generatedBranch.GetComponent <MeshFilter>());
                    meshFiltersBranches.AddRange(treesToMerge[i].generatedBranchesParent.GetComponentsInChildren <MeshFilter>());
                    meshFiltersLeaves.Add(treesToMerge[i].generatedLeaves.GetComponent <MeshFilter>());

                    meshFiltersBranchesLOD.Add(treesToMerge[i].generatedBranchLOD.GetComponent <MeshFilter>());
                    meshFiltersLeavesLOD.Add(treesToMerge[i].generatedLeavesLOD.GetComponent <MeshFilter>());
                }
                GameObject mergedBranches = GeneratedMesh.CombineMeshes(transform, meshFiltersBranches.ToArray());
                mergedBranches.AddComponent <GeneratedBranch>();
                mergedBranches.name = "Newly merged branches";
                generatedBranch     = mergedBranches.GetComponent <GeneratedBranch>();

                GameObject mergedLeaves = GeneratedMesh.CombineMeshes(transform, meshFiltersLeaves.ToArray());
                mergedLeaves.AddComponent <GeneratedLeaves>();
                mergedLeaves.name = "Newly merged leaves";
                generatedLeaves   = mergedLeaves.GetComponent <GeneratedLeaves>();

                //LOD
                GameObject mergedBranchesLOD = GeneratedMesh.CombineMeshes(transform, meshFiltersBranchesLOD.ToArray());
                mergedBranchesLOD.AddComponent <GeneratedBranch>();
                mergedBranchesLOD.name = "Newly merged branches LOD";
                generatedBranchLOD     = mergedBranchesLOD.GetComponent <GeneratedBranch>();

                GameObject mergedLeavesLOD = GeneratedMesh.CombineMeshes(transform, meshFiltersLeavesLOD.ToArray());
                mergedLeavesLOD.AddComponent <GeneratedLeaves>();
                mergedLeavesLOD.name = "Newly merged leaves LOD";
                generatedLeavesLOD   = mergedLeavesLOD.GetComponent <GeneratedLeaves>();
            }

            AddLODsNew(LOD0_Distance, LOD1_Distance);
        }
    }
Esempio n. 8
0
 public override void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress <string> progress)
 {
     progress.Report("Placing specific items");
     SpawnItemRandomly(generatedBranch.Maps[Floor - 1], systemContainer, Item, random);
 }
Esempio n. 9
0
        public override void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress<string> progress)
        {
            progress.Report("Placing stairs");

            BranchGenerator.PlaceStairs(systemContainer, generatedBranch, random);
        }
Esempio n. 10
0
 public abstract void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress <string> progress);