diff --git a/src/main/java/org/terasology/core/debug/benchmark/BenchmarkScreen.java b/src/main/java/org/terasology/core/debug/benchmark/BenchmarkScreen.java index 11b67f6..c1c9792 100644 --- a/src/main/java/org/terasology/core/debug/benchmark/BenchmarkScreen.java +++ b/src/main/java/org/terasology/core/debug/benchmark/BenchmarkScreen.java @@ -15,20 +15,20 @@ */ package org.terasology.core.debug.benchmark; -import org.terasology.context.Context; -import org.terasology.entitySystem.entity.EntityRef; -import org.terasology.math.ChunkMath; -import org.terasology.math.Region3i; -import org.terasology.math.geom.Vector3f; -import org.terasology.math.geom.Vector3i; -import org.terasology.registry.In; -import org.terasology.rendering.nui.BaseInteractionScreen; +import org.joml.RoundingMode; +import org.joml.Vector3f; +import org.joml.Vector3i; +import org.terasology.engine.context.Context; +import org.terasology.engine.entitySystem.entity.EntityRef; +import org.terasology.engine.registry.In; +import org.terasology.engine.rendering.nui.BaseInteractionScreen; +import org.terasology.engine.world.block.BlockRegion; +import org.terasology.engine.world.chunks.Chunks; import org.terasology.nui.UIWidget; import org.terasology.nui.databinding.Binding; import org.terasology.nui.widgets.UIButton; import org.terasology.nui.widgets.UIDropdownScrollable; import org.terasology.nui.widgets.UIText; -import org.terasology.world.chunks.ChunkConstants; import java.util.ArrayList; import java.util.Arrays; @@ -142,17 +142,18 @@ private void onCloseButton(UIWidget uiWidget) { getManager().popScreen(); } - static Region3i getChunkRegionAbove(Vector3f location) { - Vector3i charecterPos = new Vector3i(location); - Vector3i chunkAboveCharacter = ChunkMath.calcChunkPos(charecterPos); - chunkAboveCharacter.addY(1); - Vector3i chunkRelativePos = ChunkMath.calcRelativeBlockPos(charecterPos); + static BlockRegion getChunkRegionAbove(Vector3f location) { + Vector3i charecterPos = new Vector3i(location, RoundingMode.HALF_UP); + Vector3i chunkAboveCharacter = Chunks.toChunkPos(charecterPos); + chunkAboveCharacter.add(0, 1, 0); + Vector3i chunkRelativePos = Chunks.toRelative(charecterPos); Vector3i characterChunkOriginPos = new Vector3i(charecterPos); characterChunkOriginPos.sub(chunkRelativePos); Vector3i chunkAboveOrigin = new Vector3i(characterChunkOriginPos); - chunkAboveOrigin.addY(ChunkConstants.CHUNK_SIZE.getY()); - return ChunkConstants.CHUNK_REGION.move(chunkAboveOrigin); + chunkAboveOrigin.add(0, Chunks.CHUNK_SIZE.y(), 0); + BlockRegion region = new BlockRegion(Chunks.CHUNK_REGION); + return region.translate(chunkAboveOrigin); } @Override diff --git a/src/main/java/org/terasology/core/debug/benchmark/BenchmarkType.java b/src/main/java/org/terasology/core/debug/benchmark/BenchmarkType.java index 4c34914..a9e380d 100644 --- a/src/main/java/org/terasology/core/debug/benchmark/BenchmarkType.java +++ b/src/main/java/org/terasology/core/debug/benchmark/BenchmarkType.java @@ -15,8 +15,9 @@ */ package org.terasology.core.debug.benchmark; -import org.terasology.context.Context; -import org.terasology.world.chunks.ChunkConstants; + +import org.terasology.engine.context.Context; +import org.terasology.engine.world.chunks.Chunks; /** * Benchmark types the user can select and start. @@ -48,8 +49,8 @@ public String getDescription() { } }; - private static final int BLOCKS_PER_CHUNK = ChunkConstants.CHUNK_SIZE.x * ChunkConstants.CHUNK_SIZE.y - * ChunkConstants.CHUNK_SIZE.z; + private static final int BLOCKS_PER_CHUNK = Chunks.CHUNK_SIZE.x() * Chunks.CHUNK_SIZE.y() + * Chunks.CHUNK_SIZE.z(); private String title; private int maxIterations; diff --git a/src/main/java/org/terasology/core/debug/benchmark/BlockPlacementBenchmark.java b/src/main/java/org/terasology/core/debug/benchmark/BlockPlacementBenchmark.java index 5f93e6a..f6897db 100644 --- a/src/main/java/org/terasology/core/debug/benchmark/BlockPlacementBenchmark.java +++ b/src/main/java/org/terasology/core/debug/benchmark/BlockPlacementBenchmark.java @@ -15,33 +15,36 @@ */ package org.terasology.core.debug.benchmark; +import org.joml.Vector3f; +import org.joml.Vector3ic; +import org.terasology.engine.context.Context; +import org.terasology.engine.logic.players.LocalPlayer; +import org.terasology.engine.world.WorldProvider; +import org.terasology.engine.world.block.Block; +import org.terasology.engine.world.block.BlockManager; +import org.terasology.engine.world.block.BlockRegion; +import org.terasology.engine.world.generation.Region; +import org.terasology.math.geom.Vector3i; + import java.util.HashMap; import java.util.Map; -import org.terasology.context.Context; -import org.terasology.logic.players.LocalPlayer; -import org.terasology.math.Region3i; -import org.terasology.math.geom.Vector3i; -import org.terasology.world.WorldProvider; -import org.terasology.world.block.Block; -import org.terasology.world.block.BlockManager; - /** * Can benchmark either {@link WorldProvider#setBlock(Vector3i, Block)} or {@link WorldProvider#setBlocks(Map)} * depending on a constructor argument. */ class BlockPlacementBenchmark extends AbstractBenchmarkInstance { private final WorldProvider worldProvider; - private final Region3i region3i; + private final BlockRegion region3i; private final Block air; private final Block stone; private final boolean useSetBlocksInsteadOfSetBlock; private Block blockToPlace; BlockPlacementBenchmark(Context context, boolean useSetBlocksInsteadOfSetBlock) { - this.worldProvider = context.get(org.terasology.world.WorldProvider.class); + this.worldProvider = context.get(WorldProvider.class); LocalPlayer localPlayer = context.get(LocalPlayer.class); - this.region3i = BenchmarkScreen.getChunkRegionAbove(localPlayer.getPosition()); + this.region3i = BenchmarkScreen.getChunkRegionAbove(localPlayer.getPosition(new Vector3f())); BlockManager blockManager = context.get(BlockManager.class); this.stone = blockManager.getBlock("CoreBlocks:Stone"); this.useSetBlocksInsteadOfSetBlock = useSetBlocksInsteadOfSetBlock; @@ -52,13 +55,13 @@ class BlockPlacementBenchmark extends AbstractBenchmarkInstance { @Override public void runStep() { if (useSetBlocksInsteadOfSetBlock) { - Map blocksToPlace = new HashMap<>(); - for (Vector3i v : region3i) { + Map blocksToPlace = new HashMap<>(); + for (Vector3ic v : region3i) { blocksToPlace.put(v, blockToPlace); } worldProvider.setBlocks(blocksToPlace); } else { - for (Vector3i v : region3i) { + for (Vector3ic v : region3i) { worldProvider.setBlock(v, blockToPlace); } } diff --git a/src/main/java/org/terasology/core/debug/ui/AnimationScreen.java b/src/main/java/org/terasology/core/debug/ui/AnimationScreen.java index c58a0b5..34fe8da 100644 --- a/src/main/java/org/terasology/core/debug/ui/AnimationScreen.java +++ b/src/main/java/org/terasology/core/debug/ui/AnimationScreen.java @@ -15,22 +15,22 @@ */ package org.terasology.core.debug.ui; +import org.joml.Quaternionf; +import org.joml.Vector3f; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.entitySystem.entity.EntityManager; -import org.terasology.entitySystem.entity.EntityRef; -import org.terasology.entitySystem.prefab.Prefab; -import org.terasology.logic.characters.CharacterMovementComponent; -import org.terasology.logic.location.LocationComponent; -import org.terasology.logic.players.LocalPlayer; -import org.terasology.math.geom.Quat4f; -import org.terasology.math.geom.Vector3f; -import org.terasology.registry.In; -import org.terasology.rendering.assets.skeletalmesh.SkeletalMesh; -import org.terasology.rendering.logic.SkeletalMeshComponent; -import org.terasology.rendering.nui.CoreScreenLayer; +import org.terasology.engine.entitySystem.entity.EntityManager; +import org.terasology.engine.entitySystem.entity.EntityRef; +import org.terasology.engine.entitySystem.prefab.Prefab; +import org.terasology.engine.logic.characters.CharacterMovementComponent; +import org.terasology.engine.logic.location.LocationComponent; +import org.terasology.engine.logic.players.LocalPlayer; +import org.terasology.engine.registry.In; +import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMesh; +import org.terasology.engine.rendering.logic.SkeletalMeshComponent; +import org.terasology.engine.rendering.nui.CoreScreenLayer; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.nui.widgets.UIButton; import org.terasology.nui.widgets.UIDropdownScrollable; import org.terasology.nui.widgets.UISlider; @@ -71,13 +71,13 @@ public void initialise() { animationSpeedSlider.setPrecision(1); } spawnEntityIdButton.subscribe(widget -> { - Vector3f localPlayerPosition = localPlayer.getPosition(); - Vector3f offset = localPlayer.getViewDirection(); - offset.scale(2.0f); + Vector3f localPlayerPosition = localPlayer.getPosition(new org.joml.Vector3f()); + Vector3f offset = localPlayer.getViewDirection(new Vector3f()); + offset.normalize(2.0f); offset.y = 0; localPlayerPosition.add(offset); - Quat4f localPlayerRotation = localPlayer.getRotation(); + Quaternionf localPlayerRotation = localPlayer.getRotation(new Quaternionf()); assetManager.getAsset(entityDropdown.getSelection(), Prefab.class) .filter(prefab -> prefab.hasComponent(LocationComponent.class))