Search in sources :

Example 56 with Rect2i

use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.

the class PortList method onDraw.

public void onDraw(Canvas canvas) {
    Rect2i region = canvas.getRegion();
    inputPort.updateRect();
    canvas.drawWidget(inputPort, Rect2i.createFromMinAndMax((int) (inputPort.rect.minX() / 10.f * region.width()), (int) (inputPort.rect.minY() / 5.f * region.height()), (int) (inputPort.rect.maxX() / 10.f * region.width()), (int) (inputPort.rect.maxY() / 5.f * region.height())));
    for (Port port : ports) {
        port.updateRect();
        canvas.drawWidget(port, Rect2i.createFromMinAndMax((int) (port.rect.minX() / 10.f * region.width()), (int) (port.rect.minY() / 5.f * region.height()), (int) (port.rect.maxX() / 10.f * region.width()), (int) (port.rect.maxY() / 5.f * region.height())));
    }
}
Also used : Rect2i(org.terasology.math.geom.Rect2i)

Example 57 with Rect2i

use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.

the class SurfaceProvider method process.

@Override
public void process(GeneratingRegion region) {
    // Create our surface height facet (we will get into borders later)
    Border3D border = region.getBorderForFacet(SurfaceHeightFacet.class);
    SurfaceHeightFacet facet = new SurfaceHeightFacet(region.getRegion(), border);
    // loop through every position on our 2d array
    Rect2i processRegion = facet.getWorldRegion();
    for (BaseVector2i position : processRegion.contents()) {
        facet.setWorld(position, surfaceNoise.noise(position.x(), position.y()) * 20);
    }
    // give our newly created and populated facet to the region
    region.setRegionFacet(SurfaceHeightFacet.class, facet);
}
Also used : SurfaceHeightFacet(org.terasology.world.generation.facets.SurfaceHeightFacet) Rect2i(org.terasology.math.geom.Rect2i) Border3D(org.terasology.world.generation.Border3D) BaseVector2i(org.terasology.math.geom.BaseVector2i)

Example 58 with Rect2i

use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.

the class PlateauProvider method process.

@Override
public void process(GeneratingRegion region) {
    Region3i reg = region.getRegion();
    Rect2i rc = Rect2i.createFromMinAndMax(reg.minX(), reg.minZ(), reg.maxX(), reg.maxZ());
    if (rc.distanceSquared(centerPos.x(), centerPos.y()) <= outerRadius * outerRadius) {
        SurfaceHeightFacet facet = region.getRegionFacet(SurfaceHeightFacet.class);
        // update the surface height
        for (BaseVector2i pos : facet.getWorldRegion().contents()) {
            float originalValue = facet.getWorld(pos);
            int distSq = pos.distanceSquared(centerPos);
            if (distSq <= innerRadius * innerRadius) {
                facet.setWorld(pos, targetHeight);
            } else if (distSq <= outerRadius * outerRadius) {
                double dist = pos.distance(centerPos) - innerRadius;
                float norm = (float) dist / (outerRadius - innerRadius);
                facet.setWorld(pos, TeraMath.lerp(targetHeight, originalValue, norm));
            }
        }
    }
}
Also used : Rect2i(org.terasology.math.geom.Rect2i) SurfaceHeightFacet(org.terasology.world.generation.facets.SurfaceHeightFacet) BaseVector2i(org.terasology.math.geom.BaseVector2i) Region3i(org.terasology.math.Region3i)

Example 59 with Rect2i

use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.

the class TreeTests method computeAABB.

private Vector3i computeAABB(TreeGenerator treeGen, long seed) {
    Vector3i pos = new Vector3i(ChunkConstants.SIZE_X / 2, 0, ChunkConstants.SIZE_Z / 2);
    final Vector3i min = new Vector3i(pos);
    final Vector3i max = new Vector3i(pos);
    Rect2i chunks = Rect2i.createFromMinAndMax(-1, -1, 1, 1);
    for (BaseVector2i chunkPos : chunks.contents()) {
        Chunk chunk = new ChunkImpl(chunkPos.getX(), 0, chunkPos.getY(), blockManager, biomeManager) {

            @Override
            public Block setBlock(int x, int y, int z, Block block) {
                Vector3i world = chunkToWorldPosition(x, y, z);
                minimize(min, world);
                maximize(max, world);
                return null;
            }
        };
        Random random = new MersenneRandom(seed);
        BlockManager blockManagerLocal = CoreRegistry.get(BlockManager.class);
        Vector3i relPos = chunk.chunkToWorldPosition(0, 0, 0).sub(pos).invert();
        treeGen.generate(blockManagerLocal, chunk, random, relPos.x, relPos.y, relPos.z);
    }
    Vector3i ext = new Vector3i(max).sub(min);
    return ext;
}
Also used : Rect2i(org.terasology.math.geom.Rect2i) MersenneRandom(org.terasology.utilities.random.MersenneRandom) Random(org.terasology.utilities.random.Random) MersenneRandom(org.terasology.utilities.random.MersenneRandom) ChunkImpl(org.terasology.world.chunks.internal.ChunkImpl) BlockManager(org.terasology.world.block.BlockManager) Vector3i(org.terasology.math.geom.Vector3i) BaseVector2i(org.terasology.math.geom.BaseVector2i) Block(org.terasology.world.block.Block) Chunk(org.terasology.world.chunks.Chunk)

Aggregations

Rect2i (org.terasology.math.geom.Rect2i)59 Vector2i (org.terasology.math.geom.Vector2i)13 SubRegion (org.terasology.rendering.nui.SubRegion)8 BaseVector2i (org.terasology.math.geom.BaseVector2i)7 Font (org.terasology.rendering.assets.font.Font)5 LayoutHint (org.terasology.rendering.nui.LayoutHint)5 SurfaceHeightFacet (org.terasology.world.generation.facets.SurfaceHeightFacet)4 ByteBuffer (java.nio.ByteBuffer)3 List (java.util.List)3 Color (org.terasology.rendering.nui.Color)3 BufferedImage (java.awt.image.BufferedImage)2 Test (org.junit.Test)2 UIWidget (org.terasology.rendering.nui.UIWidget)2 FallbackParagraphRenderStyle (org.terasology.rendering.nui.widgets.browser.ui.style.FallbackParagraphRenderStyle)2 ParagraphRenderStyle (org.terasology.rendering.nui.widgets.browser.ui.style.ParagraphRenderStyle)2 Maps (com.google.common.collect.Maps)1 Sets (com.google.common.collect.Sets)1 TIntList (gnu.trove.list.TIntList)1 Graphics2D (java.awt.Graphics2D)1 DataBufferInt (java.awt.image.DataBufferInt)1