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); } }
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; } }
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; } }
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); }
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); } }
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); }
public override void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress<string> progress) { progress.Report("Placing stairs"); BranchGenerator.PlaceStairs(systemContainer, generatedBranch, random); }
public abstract void Generate(ISystemContainer systemContainer, GeneratedBranch generatedBranch, IEntity branch, IRandom random, IProgress <string> progress);