// setting already retrieved when new Chunk are created public WorldChunkData(WorldChunk chunk, WorldChunkSettings setting) { DevNoiseType devNoiseType = MapEndless.instance.devNoiseType; // Get Height Map FastNoise fastNoiseGround = setting.fastNoiseGround.fastNoise; FastNoise fastNoiseRegion = setting.fastNoiseRegion.fastNoise; int length = setting.scaledSize * setting.scaledSize; int chunkOffsetX = chunk.coord.x * setting.scaledSize - (setting.scaledSize / 2); int chunkOffsetY = chunk.coord.y * setting.scaledSize - (setting.scaledSize / 2); this.heightMap = new float[length]; this.regionMap = new float[length]; for (int y = 0; y < setting.scaledSize; y++) { for (int x = 0; x < setting.scaledSize; x++) { // Test and return only a mountain on [1;1] to [9;1] Coord c = new Coord(x, y, setting); if (devNoiseType != DevNoiseType.NoDev) { // Use dev noise this.heightMap [c.idx] = this.getZonesHeightTest(new Coord(c.x + chunkOffsetX, c.y + chunkOffsetY), devNoiseType); } else { // Use fastNoiseGround this.heightMap [c.idx] = (fastNoiseGround.GetNoise(c.x + chunkOffsetX, c.y + chunkOffsetY) + 1f) / 2f; } this.regionMap [c.idx] = (fastNoiseRegion.GetNoise(c.x + chunkOffsetX, c.y + chunkOffsetY) + 1f) / 2f; } } }
// DEV [chunk: 20x20] float getZonesHeightTest(Coord c, DevNoiseType devNoiseType) { if (devNoiseType == DevNoiseType.Empty) { return(0.5f); } if (devNoiseType == DevNoiseType.SmallZoneNoBorder) { if ((c.y >= 0 && c.y <= 2 && c.x >= 0 && c.x <= 2)) { return(1f); } return(0.5f); } if (devNoiseType == DevNoiseType.OneSmallLine) { if ((c.y > 0 && c.y < 2 && c.x > 7 && c.x < 13)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.TwoSmallLines) { if ((c.y > 0 && c.y < 2 && c.x > 7 && c.x < 13) || (c.y > 6 && c.y < 8 && c.x > 7 && c.x < 13)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.LongHorizontalBar) { if ((c.x > -5 && c.x < 35 && c.y > -5 && c.y < 5)) { return(1f); } return(.5f); } else if (devNoiseType == DevNoiseType.LongHorizontalBarWithStop) { if ((c.x > 5 && c.x < 35 && c.y > -5 && c.y < 5) || (c.x > 37 && c.x < 65 && c.y > -5 && c.y < 5)) { return(1f); } return(.5f); } else if (devNoiseType == DevNoiseType.LongVerticalBar) { if ((c.x > -5 && c.x < 5 && c.y > -35 && c.y < 35)) { return(1f); } return(.5f); } else if (devNoiseType == DevNoiseType.L) { if ((c.x > -5 && c.x < 5 && c.y > -5 && c.y < 35) || (c.x > -5 && c.x < 35 && c.y > -5 && c.y < 5)) { return(1f); } return(.5f); } else if (devNoiseType == DevNoiseType.SmallL) { if ((c.x > -5 && c.x < 5 && c.y > -5 && c.y < 15) || (c.x > -5 && c.x < 15 && c.y > -5 && c.y < 5)) { return(1f); } return(.5f); } else if (devNoiseType == DevNoiseType.T) { if ((c.x > -15 && c.x < 15 && c.y > 15 && c.y < 25) || (c.x > -5 && c.x < 5 && c.y > -5 && c.y < 25)) { return(1f); } return(.5f); } else if (devNoiseType == DevNoiseType.ReversedT) { if ((c.x > -35 && c.x < 35 && c.y > -5 && c.y < 5) || (c.x > -5 && c.x < 5 && c.y > -5 && c.y < 45)) { return(1f); } return(.5f); } else if (devNoiseType == DevNoiseType.SmallCross) { if ((c.x > -25 && c.x < 25 && c.y > -5 && c.y < 5) || (c.x > -5 && c.x < 5 && c.y > -25 && c.y < 25)) { return(1f); } return(.5f); } else if (devNoiseType == DevNoiseType.LargeCross) { if ((c.x > -55 && c.x < 55 && c.y > -5 && c.y < 5) || (c.x > -5 && c.x < 5 && c.y > -55 && c.y < 55)) { return(1f); } return(.5f); } else if (devNoiseType == DevNoiseType.TwoLongParallelLines) { if ((c.y > 0 && c.y < 45 && c.x > 0 && c.x < 5) || (c.y > 20 && c.y < 60 && c.x > -6 && c.x < -1)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.TwoLongParallelLinesWithOneBigger) { if ((c.y > 0 && c.y < 45 && c.x > 0 && c.x < 5) || (c.y > 20 && c.y < 45 && c.x > -6 && c.x < -1)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.FakeZone) { if ((c.y > 0 && c.y < 10 && c.x > 0 && c.x < 5) || (c.y > 12 && c.y < 15 && c.x > 0 && c.x < 4)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.DoubleFakeZone) { if ((c.y > 0 && c.y < 10 && c.x > -15 && c.x < -5) || (c.y > 0 && c.y < 10 && c.x > 5 && c.x < 10)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.FakeZoneAndEmpty) { if (c.y > 0 && c.y < 10 && c.x > 0 && c.x < 5) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.FakeZoneOnTop) { if (c.y > 10 && c.y < 15 && c.x > 0 && c.x < 5) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.SmallGroundMergeMainGround) { if ((c.y > 5 && c.y < 15 && c.x > 0 && c.x < 5) || (c.y > 5 && c.y < 15 && c.x > -7 && c.x < -3) || (c.y > 5 && c.y < 7 && c.x > -7 && c.x < 5)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.FakeZoneU) { if ((c.y > 0 && c.y < 10 && c.x > 0 && c.x < 5) || (c.y > 0 && c.y < 10 && c.x > -7 && c.x < -3) || (c.y > 0 && c.y < 2 && c.x > -7 && c.x < 5)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.FakeCross) { if ((c.y > -8 && c.y < 8 && c.x > -11 && c.x < 10) || (c.y > -11 && c.y < 10 && c.x > -8 && c.x < 8)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.FakeCornerLTopRight) { if ((c.y > 0 && c.y < 20 && c.x > 9 && c.x < 16) || (c.y > 9 && c.y < 16 && c.x > 0 && c.x < 20)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.Hook) { if ((c.y > 0 && c.y < 15 && c.x > -8 && c.x < -2) || (c.y > 7 && c.y < 15 && c.x > 2 && c.x < 8) || (c.y > 12 && c.y < 15 && c.x > -8 && c.x < 8)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.PreCreatedHook) { if ((c.y > 8 && c.y < 12 && c.x > -5 && c.x < -3) || (c.y > 20 && c.y < 35 && c.x > -8 && c.x < -2) || (c.y > 27 && c.y < 35 && c.x > 2 && c.x < 8) || (c.y > 32 && c.y < 35 && c.x > -8 && c.x < 8)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.N) { if ((c.y > 0 && c.y < 15 && c.x > -8 && c.x < -5) || (c.y > 0 && c.y < 15 && c.x > -2 && c.x < 2) || (c.y > 0 && c.y < 15 && c.x > 5 && c.x < 8) || (c.y > 13 && c.y < 15 && c.x > -8 && c.x < 2) || (c.y > 0 && c.y < 2 && c.x > -2 && c.x < 8)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.LongHook) { if ((c.y > 0 && c.y < 35 && c.x > -8 && c.x < -2) || (c.y > 7 && c.y < 35 && c.x > 2 && c.x < 8) || (c.y > 32 && c.y < 35 && c.x > -8 && c.x < 8)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.Corner) { if ((c.y > -15 && c.y < -5 && c.x > 5 && c.x < 15)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.Corners) { if ((c.y > -15 && c.y < -5 && c.x > 5 && c.x < 15) || (c.y > 5 && c.y < 15 && c.x > 5 && c.x < 15) || (c.y > -15 && c.y < -5 && c.x > -15 && c.x < -5) || (c.y > 5 && c.y < 15 && c.x > -15 && c.x < -5)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.CornerSquare) { if ((c.y >= 0 && c.y <= 20 && (c.x == 0 || c.x == 20)) || (c.x >= 0 && c.x <= 20 && (c.y == 0 || c.y == 20))) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.Big) { if ((c.y > -15 && c.y < 50 && c.x > 0 && c.x < 65)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.MainGroundCorner) { if ((c.y > -5 && c.y < 10 && c.x > -19 && c.x < -14) || (c.y > -5 && c.y < 5 && c.x > -15 && c.x < 5) || (c.y > -5 && c.y < 19 && c.x > -8 && c.x < 5) || (c.y > 14 && c.y < 19 && c.x > -11 && c.x < 0)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.FakeZoneCrossCorner) { if ((c.x == -10 && c.y >= 9 && c.y <= 11) || (c.y == 10 && c.x >= -11 && c.x <= -9)) { return(1f); } return(0.5f); } else if (devNoiseType == DevNoiseType.CaseA) { if ((c.y > 0 && c.y < 40 && c.x > -10 && c.x < 0) || (c.y > 20 && c.y < 40 && c.x > 3 && c.x < 6)) { return(1f); } return(0.5f); } return(0f); }