Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(JOML): migrate chunk #4475

Merged
merged 4 commits into from
Feb 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,9 @@
import org.joml.Vector3i;
import org.joml.Vector3ic;
import org.terasology.entitySystem.entity.EntityRef;
import org.terasology.math.JomlUtil;
import org.terasology.world.WorldChangeListener;
import org.terasology.world.block.Block;
import org.terasology.world.block.BlockManager;
import org.terasology.world.block.BlockRegion;
import org.terasology.world.block.BlockRegionc;
import org.terasology.world.chunks.Chunk;
import org.terasology.world.chunks.Chunks;
Expand Down Expand Up @@ -104,7 +102,7 @@ public Block getBlock(int x, int y, int z) {
Vector3i chunkPos = Chunks.toChunkPos(pos, new Vector3i());
Chunk chunk = chunks.get(chunkPos);
if (chunk == null && worldGenerator != null) {
chunk = new ChunkImpl(JomlUtil.from(chunkPos), blockManager, extraDataManager);
chunk = new ChunkImpl(chunkPos, blockManager, extraDataManager);
worldGenerator.createChunk(chunk, entityBuffer);
chunks.put(chunkPos, chunk);
}
Expand Down Expand Up @@ -174,7 +172,7 @@ public void dispose() {
}

@Override
public Collection<BlockRegion> getRelevantRegions() {
public Collection<BlockRegionc> getRelevantRegions() {
return Collections.emptySet();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@

package org.terasology.testUtil;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps;
import org.joml.Vector3i;
import org.joml.Vector3ic;
import org.terasology.entitySystem.entity.EntityRef;
import org.terasology.world.WorldChangeListener;
import org.terasology.world.block.Block;
import org.terasology.world.block.BlockRegion;
import org.terasology.world.block.BlockRegionc;
import org.terasology.world.internal.ChunkViewCore;
import org.terasology.world.internal.WorldInfo;
Expand Down Expand Up @@ -163,7 +163,7 @@ public WorldTime getTime() {
}

@Override
public Collection<BlockRegion> getRelevantRegions() {
public Collection<BlockRegionc> getRelevantRegions() {
return Collections.emptySet();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
import org.terasology.entitySystem.stubs.StringComponent;
import org.terasology.joml.geom.AABBfc;
import org.terasology.logic.location.LocationComponent;
import org.terasology.math.JomlUtil;
import org.terasology.module.ModuleEnvironment;
import org.terasology.network.Client;
import org.terasology.network.ClientComponent;
Expand Down Expand Up @@ -280,7 +279,7 @@ public void testGetUnstoredChunkReturnsNothing() {

@Test
public void testStoreAndRestoreChunkStore() {
Chunk chunk = new ChunkImpl(JomlUtil.from(CHUNK_POS), blockManager, extraDataManager);
Chunk chunk = new ChunkImpl(CHUNK_POS, blockManager, extraDataManager);
chunk.setBlock(0, 0, 0, testBlock);
chunk.markReady();
ChunkProvider chunkProvider = mock(ChunkProvider.class);
Expand All @@ -299,7 +298,7 @@ public void testStoreAndRestoreChunkStore() {

@Test
public void testChunkSurvivesStorageSaveAndRestore() throws Exception {
Chunk chunk = new ChunkImpl(JomlUtil.from(CHUNK_POS), blockManager, extraDataManager);
Chunk chunk = new ChunkImpl(CHUNK_POS, blockManager, extraDataManager);
chunk.setBlock(0, 0, 0, testBlock);
chunk.setBlock(0, 4, 2, testBlock2);
chunk.markReady();
Expand Down Expand Up @@ -331,7 +330,7 @@ public void testChunkSurvivesStorageSaveAndRestore() throws Exception {

@Test
public void testEntitySurvivesStorageInChunkStore() throws Exception {
Chunk chunk = new ChunkImpl(JomlUtil.from(CHUNK_POS), blockManager, extraDataManager);
Chunk chunk = new ChunkImpl(CHUNK_POS, blockManager, extraDataManager);
chunk.setBlock(0, 0, 0, testBlock);
chunk.markReady();
ChunkProvider chunkProvider = mock(ChunkProvider.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import org.terasology.assets.ResourceUrn;
import org.terasology.assets.management.AssetManager;
import org.terasology.joml.geom.AABBfc;
import org.terasology.math.JomlUtil;
import org.terasology.registry.CoreRegistry;
import org.terasology.world.block.Block;
import org.terasology.world.block.BlockManager;
Expand All @@ -35,7 +34,6 @@
import org.terasology.world.block.shapes.BlockShape;
import org.terasology.world.block.tiles.NullWorldAtlas;
import org.terasology.world.chunks.Chunk;
import org.terasology.world.chunks.ChunkConstants;
import org.terasology.world.chunks.Chunks;
import org.terasology.world.chunks.blockdata.ExtraBlockDataManager;
import org.terasology.world.chunks.internal.ChunkImpl;
Expand All @@ -57,7 +55,7 @@ public void setup() throws Exception {

ExtraBlockDataManager extraDataManager = new ExtraBlockDataManager();

chunk = new ChunkImpl(JomlUtil.from(new Vector3i(0, 0, 0)), blockManager, extraDataManager);
chunk = new ChunkImpl(new Vector3i(0, 0, 0), blockManager, extraDataManager);

BlockFamilyDefinitionData solidData = new BlockFamilyDefinitionData();
solidData.getBaseSection().setDisplayName("Stone");
Expand All @@ -77,8 +75,8 @@ public void testChangeBlock() {
@Test
public void testGetAabb() {
AABBfc aabb = chunk.getAABB();
assertEquals(new Vector3f(0, 0, 0), new Vector3f(aabb.minX(), aabb.minY(), aabb.minZ()));
assertEquals(new Vector3f(Chunks.SIZE_X, Chunks.SIZE_Y, Chunks.SIZE_Z), new Vector3f(aabb.maxX(), aabb.maxY(), aabb.maxZ()));
assertEquals(new Vector3f(-.5f, -.5f, -.5f), new Vector3f(aabb.minX(), aabb.minY(), aabb.minZ()));
assertEquals(new Vector3f(Chunks.SIZE_X - .5f, Chunks.SIZE_Y - .5f, Chunks.SIZE_Z - .5f), new Vector3f(aabb.maxX(), aabb.maxY(), aabb.maxZ()));
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import org.terasology.TerasologyTestingEnvironment;
import org.terasology.assets.ResourceUrn;
import org.terasology.assets.management.AssetManager;
import org.terasology.math.JomlUtil;
import org.terasology.registry.CoreRegistry;
import org.terasology.world.block.Block;
import org.terasology.world.block.BlockManager;
Expand All @@ -35,6 +34,7 @@
import org.terasology.world.block.tiles.NullWorldAtlas;
import org.terasology.world.chunks.Chunk;
import org.terasology.world.chunks.ChunkConstants;
import org.terasology.world.chunks.Chunks;
import org.terasology.world.chunks.blockdata.ExtraBlockDataManager;
import org.terasology.world.chunks.internal.ChunkImpl;
import org.terasology.world.internal.ChunkViewCore;
Expand Down Expand Up @@ -145,10 +145,10 @@ public void testLocalToWorld() {

ChunkViewCoreImpl chunkView = new ChunkViewCoreImpl(chunks,
new BlockRegion(1, 0, 1).expand(1, 0, 1), new Vector3i(1, 1, 1), airBlock);
assertEquals(new Vector3i(ChunkConstants.SIZE_X, ChunkConstants.SIZE_Y, ChunkConstants.SIZE_Z), chunkView.toWorldPos(new Vector3i()));
assertEquals(new Vector3i(Chunks.SIZE_X, Chunks.SIZE_Y, Chunks.SIZE_Z), chunkView.toWorldPos(new Vector3i()));
}

private Chunk createChunk(int x, int y, int z) {
return new ChunkImpl(JomlUtil.from(new Vector3i(x, y, z)), blockManager, extraDataManager);
return new ChunkImpl(new Vector3i(x, y, z), blockManager, extraDataManager);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import org.terasology.fixtures.TestChunkStore;
import org.terasology.fixtures.TestStorageManager;
import org.terasology.fixtures.TestWorldGenerator;
import org.terasology.math.JomlUtil;
import org.terasology.world.BlockEntityRegistry;
import org.terasology.world.block.BeforeDeactivateBlocks;
import org.terasology.world.block.Block;
Expand Down Expand Up @@ -178,7 +177,7 @@ void testGenerateSingleChunkWithBlockLifeCycle() throws InterruptedException, Ex
@Test
void testLoadSingleChunk() throws InterruptedException, ExecutionException, TimeoutException {
Vector3i chunkPosition = new Vector3i(0, 0, 0);
Chunk chunk = new ChunkImpl(JomlUtil.from(chunkPosition), blockManager, extraDataManager);
Chunk chunk = new ChunkImpl(chunkPosition, blockManager, extraDataManager);
generator.createChunk(chunk, null);
storageManager.add(chunk);

Expand All @@ -201,7 +200,7 @@ void testLoadSingleChunk() throws InterruptedException, ExecutionException, Time
@Test
void testLoadSingleChunkWithBlockLifecycle() throws InterruptedException, ExecutionException, TimeoutException {
Vector3i chunkPosition = new Vector3i(0, 0, 0);
Chunk chunk = new ChunkImpl(JomlUtil.from(chunkPosition), blockManager, extraDataManager);
Chunk chunk = new ChunkImpl(chunkPosition, blockManager, extraDataManager);
generator.createChunk(chunk, null);
storageManager.add(chunk);
blockAtBlockManager.setLifecycleEventsRequired(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ void multiRequirementsChunksExistsSuccess() throws ExecutionException, Interrupt
pipeline.addStage(ChunkTaskProvider.createMulti(
"flat merging task",
(chunks) -> chunks.stream()
.filter((c) -> c.getPosition(new Vector3i()).equals(positionToGenerate))
.filter((c) -> c.getPosition().equals(positionToGenerate))
.findFirst() // return central chunk.
.get(),
this::getNearChunkPositions));
Expand Down Expand Up @@ -142,7 +142,7 @@ void multiRequirementsChunksWillGeneratedSuccess() throws ExecutionException, In
pipeline.addStage(ChunkTaskProvider.createMulti(
"flat merging task",
(chunks) -> chunks.stream()
.filter((c) -> c.getPosition(new Vector3i()).equals(positionToGenerate)).findFirst() // return central chunk.
.filter((c) -> c.getPosition().equals(positionToGenerate)).findFirst() // return central chunk.
.get(),
this::getNearChunkPositions));

Expand Down Expand Up @@ -254,9 +254,8 @@ private Set<Vector3ic> getNearChunkPositions(Vector3ic p, int distance) {
return requirements;
}

private ChunkImpl createChunkAt(Vector3ic pos) {
return new ChunkImpl(JomlUtil.from(pos), blockManager, extraDataManager);
private ChunkImpl createChunkAt(Vector3ic chunkPos) {
return new ChunkImpl(chunkPos, blockManager, extraDataManager);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import org.terasology.assets.ResourceUrn;
import org.terasology.assets.management.AssetManager;
import org.terasology.entitySystem.entity.EntityRef;
import org.terasology.math.JomlUtil;
import org.terasology.math.Side;
import org.terasology.registry.CoreRegistry;
import org.terasology.world.block.Block;
Expand Down Expand Up @@ -100,8 +99,8 @@ public void setup() throws Exception {

@Test
public void testBetweenChunksSimple() {
Chunk topChunk = new ChunkImpl(JomlUtil.from(new Vector3i(0, 1, 0)), blockManager, extraDataManager);
Chunk bottomChunk = new ChunkImpl(JomlUtil.from(new Vector3i(0, 0, 0)), blockManager, extraDataManager);
Chunk topChunk = new ChunkImpl(new Vector3i(0, 1, 0), blockManager, extraDataManager);
Chunk bottomChunk = new ChunkImpl(new Vector3i(0, 0, 0), blockManager, extraDataManager);

provider.addChunk(topChunk);
provider.addChunk(bottomChunk);
Expand All @@ -122,8 +121,8 @@ public void testBetweenChunksSimple() {

@Test
public void testBetweenChunksSimpleSunlightRegenOnly() {
Chunk topChunk = new ChunkImpl(JomlUtil.from(new Vector3i(0, 1, 0)), blockManager, extraDataManager);
Chunk bottomChunk = new ChunkImpl(JomlUtil.from(new Vector3i(0, 0, 0)), blockManager, extraDataManager);
Chunk topChunk = new ChunkImpl(new Vector3i(0, 1, 0), blockManager, extraDataManager);
Chunk bottomChunk = new ChunkImpl(new Vector3i(0, 0, 0), blockManager, extraDataManager);

provider.addChunk(topChunk);
provider.addChunk(bottomChunk);
Expand All @@ -142,8 +141,8 @@ public void testBetweenChunksSimpleSunlightRegenOnly() {

@Test
public void testBetweenChunksWithOverhang() {
Chunk topChunk = new ChunkImpl(JomlUtil.from(new Vector3i(0, 1, 0)), blockManager, extraDataManager);
Chunk bottomChunk = new ChunkImpl(JomlUtil.from(new Vector3i(0, 0, 0)), blockManager, extraDataManager);
Chunk topChunk = new ChunkImpl(new Vector3i(0, 1, 0), blockManager, extraDataManager);
Chunk bottomChunk = new ChunkImpl(new Vector3i(0, 0, 0), blockManager, extraDataManager);

provider.addChunk(topChunk);
provider.addChunk(bottomChunk);
Expand All @@ -170,8 +169,8 @@ public void testBetweenChunksWithOverhang() {

@Test
public void testPropagateSunlightAppearingMidChunk() {
Chunk topChunk = new ChunkImpl(JomlUtil.from(new Vector3i(0, 1, 0)), blockManager, extraDataManager);
Chunk bottomChunk = new ChunkImpl(JomlUtil.from(new Vector3i(0, 0, 0)), blockManager, extraDataManager);
Chunk topChunk = new ChunkImpl(new Vector3i(0, 1, 0), blockManager, extraDataManager);
Chunk bottomChunk = new ChunkImpl(new Vector3i(0, 0, 0), blockManager, extraDataManager);

provider.addChunk(topChunk);
provider.addChunk(bottomChunk);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ private Vector3i calcCamChunkOffset() {
}

private float distanceToCamera(RenderableChunk chunk) {
Vector3f result = new Vector3f((chunk.getPosition().x + 0.5f) * Chunks.SIZE_X, 0, (chunk.getPosition().z + 0.5f) * Chunks.SIZE_Z);
Vector3f result = new Vector3f((chunk.getPosition().x() + 0.5f) * Chunks.SIZE_X, 0, (chunk.getPosition().z() + 0.5f) * Chunks.SIZE_Z);

org.joml.Vector3f cameraPos = getActiveCamera().getPosition();
result.x -= cameraPos.x;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import com.google.common.collect.Maps;
import org.joml.Vector3i;
import org.joml.Vector3ic;
import org.terasology.entitySystem.entity.internal.EngineEntityManager;
import org.terasology.game.GameManifest;
import org.terasology.math.JomlUtil;
Expand Down Expand Up @@ -81,8 +82,8 @@ void addUnloadedChunk(final org.terasology.math.geom.Vector3i chunkPosition, fin
}


void addLoadedChunk(final org.terasology.math.geom.Vector3i chunkPosition, final ChunkImpl chunk) {
loadedChunks.put(JomlUtil.from(chunkPosition), chunk);
void addLoadedChunk(final Vector3ic chunkPosition, final ChunkImpl chunk) {
loadedChunks.put(new Vector3i(chunkPosition), chunk);
}

public SaveTransaction build() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
package org.terasology.world.chunks;

import org.terasology.math.geom.Vector3i;
import org.joml.Vector3ic;
import org.terasology.module.sandbox.API;
import org.terasology.world.block.Block;

Expand All @@ -39,5 +39,5 @@ public interface ChunkBlockIterator {
/**
* @return The world coords of the current block
*/
Vector3i getBlockPos();
Vector3ic getBlockPos();
}
Loading