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())));
}
}
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);
}
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));
}
}
}
}
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;
}
Aggregations