public RoomExitGenerator(IAreaPercentileSelector areaPercentileSelector, AreaGenerator hallGenerator, AreaGenerator doorGenerator, IPercentileSelector percentileSelector) { this.areaPercentileSelector = areaPercentileSelector; this.hallGenerator = hallGenerator; this.doorGenerator = doorGenerator; this.percentileSelector = percentileSelector; }
public ChamberGenerator(IAreaPercentileSelector areaPercentileSelector, AreaGenerator specialAreaGenerator, ExitGenerator exitGenerator, ContentsGenerator contentsGenerator) { this.areaPercentileSelector = areaPercentileSelector; this.specialAreaGenerator = specialAreaGenerator; this.exitGenerator = exitGenerator; this.contentsGenerator = contentsGenerator; }
public SpecialAreaGenerator(IAreaPercentileSelector areaPercentileSelector, IPercentileSelector percentileSelector, PoolGenerator poolGenerator, AreaGenerator caveGenerator) { this.areaPercentileSelector = areaPercentileSelector; this.percentileSelector = percentileSelector; this.poolGenerator = poolGenerator; this.caveGenerator = caveGenerator; }
// Use this for initialization void Start() { enemyGenerator = FindObjectOfType<EnemyGenerator>(); areaGenerator = FindObjectOfType<AreaGenerator>(); backgroundGenerator = FindObjectOfType<ParallaxController>(); player = FindObjectOfType<PlayerController>(); Load(levels[defaultLevelNo]); }
public DungeonGenerator(IAreaPercentileSelector areaPercentileSelector, IAreaGeneratorFactory areaGeneratorFactory, IEncounterGenerator encounterGenerator, ITrapGenerator trapGenerator, IPercentileSelector percentileSelector, AreaGenerator hallGenerator) { this.areaGeneratorFactory = areaGeneratorFactory; this.areaPercentileSelector = areaPercentileSelector; this.encounterGenerator = encounterGenerator; this.trapGenerator = trapGenerator; this.percentileSelector = percentileSelector; this.hallGenerator = hallGenerator; }
public AreaGeneratorFactory(AreaGenerator chamberGenerator, AreaGenerator doorGenerator, AreaGenerator roomGenerator, AreaGenerator sidePassageGenerator, AreaGenerator stairsGenerator, AreaGenerator turnGenerator, AreaGenerator parallelPassageGenerator) { areaGenerators = new Dictionary<string, AreaGenerator>(); areaGenerators[AreaTypeConstants.Chamber] = chamberGenerator; areaGenerators[AreaTypeConstants.Door] = doorGenerator; areaGenerators[AreaTypeConstants.Room] = roomGenerator; areaGenerators[AreaTypeConstants.SidePassage] = sidePassageGenerator; areaGenerators[AreaTypeConstants.Stairs] = stairsGenerator; areaGenerators[AreaTypeConstants.Turn] = turnGenerator; areaGenerators[SidePassageConstants.ParallelPassage] = parallelPassageGenerator; }
/// <summary> /// Initializes the noise manager /// </summary> /// <param name="seed">The random seed to use</param> /// <param name="width">The width of the generated results</param> /// <param name="height">The height of the generated results</param> /// <param name="depth">The depth of the generated results</param> public NoiseManager(int seed, int width, int height, int depth) { // World theme generators (theme per area) World = new WorldGenerator(seed, 3, 3); // Area generators Areas = new AreaGenerator(seed, width, height); AreaResources = new AreaResourceGenerator(seed, width, height, depth); AreaResources.Generators[NoiseAreaResourceType.Default].SetOutputSize(width, height, depth); AreaResources.Generators[NoiseAreaResourceType.Grainy].SetOutputSize(width, height, depth); }
public void Setup() { mockHallGenerator = new Mock<AreaGenerator>(); mockPercentileSelector = new Mock<IPercentileSelector>(); sidePassageGenerator = new SidePassageGenerator(mockPercentileSelector.Object, mockHallGenerator.Object); }
private void GenerateNavMesh() { Console.WriteLine("Generating NavMesh"); Stopwatch sw = new Stopwatch(); sw.Start(); long prevMs = 0; try { //level.SetBoundingBoxOffset(new Vector3(settings.CellSize * 0.5f, settings.CellHeight * 0.5f, settings.CellSize * 0.5f)); var levelTris = _level.Triangles().ToArray(); var triEnumerable = TriangleEnumerable.FromTriangle(levelTris, 0, levelTris.Length); BBox3 bounds = triEnumerable.GetBoundingBox(); heightfield = new Heightfield(bounds, settings); Console.WriteLine("Heightfield"); Console.WriteLine(" + Ctor\t\t\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; Area[] areas = AreaGenerator.From(triEnumerable, Area.Default) .MarkAboveHeight(areaSettings.MaxLevelHeight, Area.Null) .MarkBelowHeight(areaSettings.MinLevelHeight, Area.Null) .MarkBelowSlope(areaSettings.MaxTriSlope, Area.Null) .ToArray(); heightfield.RasterizeTrianglesWithAreas(levelTris, areas); //heightfield.RasterizeTriangles(levelTris, Area.Default); Console.WriteLine(" + Rasterization\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); Console.WriteLine(" + Filtering"); prevMs = sw.ElapsedMilliseconds; heightfield.FilterLedgeSpans(settings.VoxelAgentHeight, settings.VoxelMaxClimb); Console.WriteLine(" + Ledge Spans\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; heightfield.FilterLowHangingWalkableObstacles(settings.VoxelMaxClimb); Console.WriteLine(" + Low Hanging Obstacles\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; heightfield.FilterWalkableLowHeightSpans(settings.VoxelAgentHeight); Console.WriteLine(" + Low Height Spans\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; compactHeightfield = new CompactHeightfield(heightfield, settings); Console.WriteLine("CompactHeightfield"); Console.WriteLine(" + Ctor\t\t\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; compactHeightfield.Erode(settings.VoxelAgentRadius); Console.WriteLine(" + Erosion\t\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; compactHeightfield.BuildDistanceField(); Console.WriteLine(" + Distance Field\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; compactHeightfield.BuildRegions(0, settings.MinRegionSize, settings.MergedRegionSize); Console.WriteLine(" + Regions\t\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; Random r = new Random(); regionColors = new Color4[compactHeightfield.MaxRegions]; regionColors[0] = Color4.Black; for (int i = 1; i < regionColors.Length; i++) { regionColors[i] = new Color4((byte)r.Next(0, 255), (byte)r.Next(0, 255), (byte)r.Next(0, 255), 255); } Console.WriteLine(" + Colors\t\t\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; contourSet = compactHeightfield.BuildContourSet(settings); Console.WriteLine("ContourSet"); Console.WriteLine(" + Ctor\t\t\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; polyMesh = new PolyMesh(contourSet, settings); Console.WriteLine("PolyMesh"); Console.WriteLine(" + Ctor\t\t\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; polyMeshDetail = new PolyMeshDetail(polyMesh, compactHeightfield, settings); Console.WriteLine("PolyMeshDetail"); Console.WriteLine(" + Ctor\t\t\t\t" + (sw.ElapsedMilliseconds - prevMs).ToString("D3") + " ms"); prevMs = sw.ElapsedMilliseconds; hasGenerated = true; } catch (Exception e) { if (!interceptExceptions) { throw; } else { Console.WriteLine("Navmesh generation failed with exception:" + Environment.NewLine + e.ToString()); } } finally { sw.Stop(); } if (hasGenerated) { try { GeneratePathfinding(); //Pathfinding with multiple units GenerateCrowd(); } catch (Exception e) { Console.WriteLine("Pathfinding generation failed with exception" + Environment.NewLine + e.ToString()); } Label l = (Label)statusBar.FindChildByName("GenTime"); l.Text = "Generation Time: " + sw.ElapsedMilliseconds + "ms"; Console.WriteLine("Navmesh generated successfully in " + sw.ElapsedMilliseconds + "ms."); Console.WriteLine("Rasterized " + _level.TriangleCount + " triangles."); Console.WriteLine("Generated " + contourSet.Count + " regions."); Console.WriteLine("PolyMesh contains " + polyMesh.VertCount + " vertices in " + polyMesh.PolyCount + " polys."); Console.WriteLine("PolyMeshDetail contains " + polyMeshDetail.VertCount + " vertices and " + polyMeshDetail.TrisCount + " tris in " + polyMeshDetail.MeshCount + " meshes."); } }
public void Setup() { mockPercentileSelector = new Mock<IPercentileSelector>(); turnGenerator = new TurnGenerator(mockPercentileSelector.Object); }
public void Setup() { mockAreaPercentileSelector = new Mock<IAreaPercentileSelector>(); mockPercentileSelector = new Mock<IPercentileSelector>(); mockDice = new Mock<Dice>(); hallGenerator = new HallGenerator(mockAreaPercentileSelector.Object, mockPercentileSelector.Object, mockDice.Object); }
public SidePassageGenerator(IPercentileSelector percentileSelector, AreaGenerator hallGenerator) { this.percentileSelector = percentileSelector; this.hallGenerator = hallGenerator; }
public void Setup() { mockAreaPercentileSelector = new Mock<IAreaPercentileSelector>(); mockDice = new Mock<Dice>(); mockChamberGenerator = new Mock<AreaGenerator>(); stairsGenerator = new StairsGenerator(mockAreaPercentileSelector.Object, mockDice.Object, mockChamberGenerator.Object); selectedStairs = new Area(); mockAreaPercentileSelector.Setup(s => s.SelectFrom(TableNameConstants.Stairs)).Returns(selectedStairs); mockDice.Setup(d => d.Roll(1).IndividualRolls(100)).Returns(new[] { 1 }); }
public void Setup() { mockHallGenerator = new Mock<AreaGenerator>(); parallelPassageGenerator = new ParallelPassageGenerator(mockHallGenerator.Object); }
public StairsGenerator(IAreaPercentileSelector areaPercentileSelector, Dice dice, AreaGenerator chamberGenerator) { this.areaPercentileSelector = areaPercentileSelector; this.dice = dice; this.chamberGenerator = chamberGenerator; }
public ParallelPassageGenerator(AreaGenerator hallGenerator) { this.hallGenerator = hallGenerator; }
public void Setup() { mockAreaPercentileSelector = new Mock<IAreaPercentileSelector>(); mockPercentileSelector = new Mock<IPercentileSelector>(); mockPoolGenerator = new Mock<PoolGenerator>(); mockCaveGenerator = new Mock<AreaGenerator>(); specialAreaGenerator = new SpecialAreaGenerator(mockAreaPercentileSelector.Object, mockPercentileSelector.Object, mockPoolGenerator.Object, mockCaveGenerator.Object); }
public void Setup() { mockAreaPercentileSelector = new Mock<IAreaPercentileSelector>(); mockPoolGenerator = new Mock<PoolGenerator>(); mockPercentileSelector = new Mock<IPercentileSelector>(); mockEncounterGenerator = new Mock<IEncounterGenerator>(); caveGenerator = new CaveGenerator(mockAreaPercentileSelector.Object, mockPoolGenerator.Object, mockPercentileSelector.Object, mockEncounterGenerator.Object); selectedCave = new Area(); mockAreaPercentileSelector.Setup(s => s.SelectFrom(TableNameConstants.Caves)).Returns(selectedCave); }
public void Setup() { mockAreaPercentileSelector = new Mock<IAreaPercentileSelector>(); mockSpecialAreaGenerator = new Mock<AreaGenerator>(); mockExitGenerator = new Mock<ExitGenerator>(); mockContentsGenerator = new Mock<ContentsGenerator>(); chamberGenerator = new ChamberGenerator(mockAreaPercentileSelector.Object, mockSpecialAreaGenerator.Object, mockExitGenerator.Object, mockContentsGenerator.Object); selectedChamber = new Area(); selectedChamber.Length = 9266; selectedChamber.Width = 90210; mockAreaPercentileSelector.Setup(s => s.SelectFrom(TableNameConstants.Chambers)).Returns(selectedChamber); mockContentsGenerator.Setup(g => g.Generate(It.IsAny<int>())).Returns(() => new Contents()); }
public void Setup() { mockAreaPercentileSelector = new Mock<IAreaPercentileSelector>(); doorGenerator = new DoorGenerator(mockAreaPercentileSelector.Object); selectedDoor = new Area(); selectedDoor.Type = "door type"; selectedDoor.Descriptions = new[] { "complicated", DescriptionConstants.Wooden }; mockAreaPercentileSelector.Setup(s => s.SelectFrom(TableNameConstants.DoorTypes)).Returns(selectedDoor); }