use of org.terasology.math.Region3i in project Terasology by MovingBlocks.
the class SubSampledNoise method noise.
public float[] noise(Region3i region) {
Region3i fullRegion = determineRequiredRegion(region);
float[] keyData = getKeyValues(fullRegion);
float[] fullData = mapExpand(keyData, fullRegion);
return getSubset(fullData, fullRegion, region);
}
use of org.terasology.math.Region3i in project Terasology by MovingBlocks.
the class EntityAwareWorldProvider method onBlockRegionDeactivated.
@ReceiveEvent(components = { BlockRegionComponent.class })
public void onBlockRegionDeactivated(BeforeDeactivateComponent event, EntityRef entity) {
Region3i oldRegion = blockRegions.get(entity);
for (Vector3i pos : oldRegion) {
blockRegionLookup.remove(pos);
}
blockRegions.remove(entity);
}
use of org.terasology.math.Region3i in project Terasology by MovingBlocks.
the class EntityAwareWorldProvider method onBlockRegionChanged.
@ReceiveEvent(components = { BlockRegionComponent.class })
public void onBlockRegionChanged(OnChangedComponent event, EntityRef entity) {
Region3i oldRegion = blockRegions.get(entity);
for (Vector3i pos : oldRegion) {
blockRegionLookup.remove(pos);
}
BlockRegionComponent regionComp = entity.getComponent(BlockRegionComponent.class);
blockRegions.put(entity, regionComp.region);
for (Vector3i pos : regionComp.region) {
blockRegionLookup.put(pos, entity);
}
}
use of org.terasology.math.Region3i in project Terasology by MovingBlocks.
the class StandardBatchPropagator method propagateBetween.
@Override
public void propagateBetween(LitChunk chunk, LitChunk adjChunk, Side side, boolean propagateExternal) {
IndexProvider indexProvider = createIndexProvider(side);
Region3i edgeRegion = ChunkMath.getEdgeRegion(Region3i.createFromMinAndSize(Vector3i.zero(), ChunkConstants.CHUNK_SIZE), side);
int edgeSize = edgeRegion.size().x * edgeRegion.size().y * edgeRegion.size().z;
int[] depth = new int[edgeSize];
propagateSide(chunk, adjChunk, side, indexProvider, edgeRegion, depth);
propagateDepth(adjChunk, side, propagateExternal, indexProvider, edgeRegion, depth);
}
use of org.terasology.math.Region3i in project Terasology by MovingBlocks.
the class WorldBuilderTest method testCumulativeBorderCalculation.
@Test
public void testCumulativeBorderCalculation() {
WorldBuilder worldBuilder = new WorldBuilder(context.get(WorldGeneratorPluginLibrary.class));
worldBuilder.setSeed(12);
worldBuilder.addProvider(new Facet1Provider());
worldBuilder.addProvider(new Facet2Provider());
worldBuilder.addProvider(new Facet3Provider());
World world = worldBuilder.build();
Region3i regionToGenerate = Region3i.createFromCenterExtents(new Vector3i(), 1);
Region regionData = world.getWorldData(regionToGenerate);
Facet3 facet3 = regionData.getFacet(Facet3.class);
assertEquals(regionToGenerate, facet3.getWorldRegion());
Facet1 facet1 = regionData.getFacet(Facet1.class);
assertEquals(Region3i.createFromMinAndSize(new Vector3i(-2, -1, -2), new Vector3i(5, 3, 5)), facet1.getWorldRegion());
Facet2 facet2 = regionData.getFacet(Facet2.class);
assertEquals(Region3i.createFromMinAndSize(new Vector3i(-4, -1, -4), new Vector3i(9, 3, 9)), facet2.getWorldRegion());
}
Aggregations