Package org.terasology.world.generation.facets

Examples of org.terasology.world.generation.facets.SeaLevelFacet


    }

    @Override
    public void generateChunk(CoreChunk chunk, Region chunkRegion) {
        PlantFacet facet = chunkRegion.getFacet(PlantFacet.class);
        SeaLevelFacet seaLevel = chunkRegion.getFacet(SeaLevelFacet.class);
        for (Vector3i pos : ChunkConstants.CHUNK_REGION) {
            if (pos.y + chunk.getChunkWorldOffsetY() > seaLevel.getSeaLevel() && facet.get(pos)) {
                chunk.setBlock(pos, tallGrass);
            }
        }
    }
View Full Code Here


    public void process(GeneratingRegion region) {
        Border3D borderForTreeFacet = region.getBorderForFacet(TreeFacet.class);
        TreeFacet facet = new TreeFacet(region.getRegion(), borderForTreeFacet.extendBy(0, 15, 10));
        SurfaceHeightFacet surface = region.getRegionFacet(SurfaceHeightFacet.class);
        DensityFacet density = region.getRegionFacet(DensityFacet.class);
        SeaLevelFacet seaLevel = region.getRegionFacet(SeaLevelFacet.class);

        Rect2i worldRegion2D = Rect2i.createFromMinAndMax(facet.getWorldRegion().minX(),
                facet.getWorldRegion().minZ(),
                facet.getWorldRegion().maxX(),
                facet.getWorldRegion().maxZ());

        for (Vector2i pos : worldRegion2D) {
            int x = pos.getX();
            int z = pos.getY();
            int height = TeraMath.floorToInt(surface.getWorld(x, z));
            // if the surface is in range, and if we are above sea level
            if (facet.getWorldRegion().encompasses(x, height, z) && facet.getWorldRegion().encompasses(x, height + 1, z) && height >= seaLevel.getSeaLevel()) {

                // if the block on the surface is dense enough
                if (density.getWorld(x, height, z) >= 0
                        && density.getWorld(x, height + 1, z) < 0
                        // and if there is a level surface in adjacent directions
View Full Code Here

        World world = worldGenerator.getWorld();
        if (world != null) {
            // try and find somewhere in this chunk a spot to land
            Region worldRegion = world.getWorldData(Region3i.createFromMinAndSize(new Vector3i(0, 0, 0), ChunkConstants.CHUNK_SIZE));
            SurfaceHeightFacet surfaceHeightFacet = worldRegion.getFacet(SurfaceHeightFacet.class);
            SeaLevelFacet seaLevelFacet = worldRegion.getFacet(SeaLevelFacet.class);
            int seaLevel = seaLevelFacet.getSeaLevel();

            for (Vector3i pos : ChunkConstants.CHUNK_REGION) {
                int height = TeraMath.floorToInt(surfaceHeightFacet.get(pos.x, pos.z));
                if (height > seaLevel) {
                    pos.y = height;
View Full Code Here

    @Override
    public void process(GeneratingRegion region) {
        World2dPreviewFacet facet = new World2dPreviewFacet();
        SurfaceHeightFacet surfaceFacet = region.getRegionFacet(SurfaceHeightFacet.class);
        SeaLevelFacet seaLevelFacet = region.getRegionFacet(SeaLevelFacet.class);
        float seaLevel = seaLevelFacet.getSeaLevel();

        float[] values = surfaceFacet.getInternal();
        float total = 0;
        // averaging every single value takes too much time, only use some of the values in our average
        int sampleRate = Math.max(1, region.getRegion().sizeX() / maxSamplesPerRegion);
View Full Code Here

    }

    @Override
    public void process(GeneratingRegion region) {
        Border3D border = region.getBorderForFacet(SeaLevelFacet.class);
        SeaLevelFacet facet = new SeaLevelFacet(region.getRegion(), border);
        facet.setSeaLevel(seaLevel);
        region.setRegionFacet(SeaLevelFacet.class, facet);
    }
View Full Code Here

    @Override
    public void process(GeneratingRegion region) {
        Border3D border = region.getBorderForFacet(SurfaceHeightFacet.class);
        SurfaceHeightFacet facet = new SurfaceHeightFacet(region.getRegion(), border);
        SeaLevelFacet seaLevelFacet = region.getRegionFacet(SeaLevelFacet.class);
        float seaLevel = seaLevelFacet.getSeaLevel();
        Rect2i processRegion = facet.getWorldRegion();
        float[] noise = surfaceNoise.noise(processRegion);

        for (int i = 0; i < noise.length; ++i) {
            noise[i] = seaLevel + seaLevel * ((noise[i] + 1f) / 2f);
View Full Code Here

    public void process(GeneratingRegion region) {
        // will give funny results for regions that are not exactly chunk sized, but it is better than sinking in the water on spawn
        Vector3i centerChunkPos = new Vector3i(ChunkConstants.CHUNK_REGION.center());
        if (region.getRegion().encompasses(centerChunkPos)) {
            SurfaceHeightFacet facet = region.getRegionFacet(SurfaceHeightFacet.class);
            SeaLevelFacet seaLevelFacet = region.getRegionFacet(SeaLevelFacet.class);
            float seaLevel = (float) seaLevelFacet.getSeaLevel();

            // update the surface height so that it spikes up to sea level
            Vector2i middlePos = new Vector2i(centerChunkPos.x, centerChunkPos.z);
            for (Vector2i pos : facet.getWorldRegion()) {
                float originalValue = facet.getWorld(pos);
View Full Code Here

TOP

Related Classes of org.terasology.world.generation.facets.SeaLevelFacet

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.