Unified naming schemes for blocks, tiles and registries

- Blocks are now in packages *.world.block
- Tiles are now in packages *.world.tile
- Renamed WorldRenderable to Renderable
- GraphicsInterface now exposes frame counter
  - ...which is now a long
- Removed leftover debug FPS console spam
This commit is contained in:
OLEGSHA 2020-08-31 15:15:04 +03:00
parent 30e61cf33f
commit 3ff074e384
51 changed files with 228 additions and 223 deletions

View File

@ -1,14 +1,7 @@
package ru.windcorp.progressia.client;
import static ru.windcorp.progressia.client.world.renders.BlockRenders.register;
import static ru.windcorp.progressia.client.world.renders.BlockRenders.getBlockTexture;
import static ru.windcorp.progressia.client.world.renders.TileRenders.register;
import static ru.windcorp.progressia.client.world.renders.TileRenders.getTileTexture;
import static ru.windcorp.progressia.common.block.BlockDataRegistry.register;
import static ru.windcorp.progressia.common.block.TileDataRegistry.register;
import static ru.windcorp.progressia.server.block.BlockLogicRegistry.register;
import static ru.windcorp.progressia.client.world.block.BlockRenderRegistry.getBlockTexture;
import static ru.windcorp.progressia.client.world.tile.TileRenderRegistry.getTileTexture;
import org.lwjgl.glfw.GLFW;
@ -16,17 +9,23 @@ import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.client.comms.controls.ControlTriggerOnKeyPress;
import ru.windcorp.progressia.client.comms.controls.ControlTriggerRegistry;
import ru.windcorp.progressia.client.graphics.input.KeyMatcher;
import ru.windcorp.progressia.client.world.renders.*;
import ru.windcorp.progressia.common.block.*;
import ru.windcorp.progressia.client.world.block.*;
import ru.windcorp.progressia.client.world.tile.TileRender;
import ru.windcorp.progressia.client.world.tile.TileRenderGrass;
import ru.windcorp.progressia.client.world.tile.TileRenderRegistry;
import ru.windcorp.progressia.client.world.tile.TileRenderSimple;
import ru.windcorp.progressia.common.comms.controls.ControlData;
import ru.windcorp.progressia.common.comms.controls.ControlDataRegistry;
import ru.windcorp.progressia.common.comms.controls.PacketControl;
import ru.windcorp.progressia.common.world.ChunkData;
import ru.windcorp.progressia.common.world.block.*;
import ru.windcorp.progressia.common.world.tile.TileData;
import ru.windcorp.progressia.common.world.tile.TileDataRegistry;
import ru.windcorp.progressia.server.Server;
import ru.windcorp.progressia.server.block.*;
import ru.windcorp.progressia.server.comms.Client;
import ru.windcorp.progressia.server.comms.controls.ControlLogic;
import ru.windcorp.progressia.server.comms.controls.ControlLogicRegistry;
import ru.windcorp.progressia.server.world.block.*;
public class TestContent {
@ -88,9 +87,9 @@ public class TestContent {
BlockData block;
if (data.getBlock(z000).getId().equals("Test:Stone")) {
block = BlockDataRegistry.get("Test:Glass");
block = BlockDataRegistry.getInstance().get("Test:Glass");
} else {
block = BlockDataRegistry.get("Test:Stone");
block = BlockDataRegistry.getInstance().get("Test:Stone");
}
server.getAdHocChanger().setBlock(z000, block);
@ -98,4 +97,28 @@ public class TestContent {
});
}
private static void register(BlockData x) {
BlockDataRegistry.getInstance().register(x);
}
private static void register(TileData x) {
TileDataRegistry.getInstance().register(x);
}
private static void register(BlockRender x) {
BlockRenderRegistry.getInstance().register(x);
}
private static void register(TileRender x) {
TileRenderRegistry.getInstance().register(x);
}
private static void register(BlockLogic x) {
BlockLogicRegistry.getInstance().register(x);
}
// private static void register(TileRender x) {
// TileLogicRegistry.getInstance().register(x);
// }
}

View File

@ -32,7 +32,7 @@ public class GraphicsBackend {
private static final Vec2i FRAME_SIZE = new Vec2i();
private static double frameLength = 1.0 / 60; // TODO do something about it
private static int framesRendered = 0;
private static long framesRendered = 0;
private static double frameStart = Double.NaN;
private GraphicsBackend() {}
@ -102,7 +102,7 @@ public class GraphicsBackend {
return frameLength;
}
public static int getFramesRendered() {
public static long getFramesRendered() {
return framesRendered;
}

View File

@ -59,6 +59,10 @@ public class GraphicsInterface {
return 1 / GraphicsBackend.getFrameLength();
}
public static long getFramesRendered() {
return GraphicsBackend.getFramesRendered();
}
public static void subscribeToInputEvents(Object listener) {
InputHandler.register(listener);
}

View File

@ -30,7 +30,7 @@ import ru.windcorp.progressia.client.graphics.backend.Usage;
import ru.windcorp.progressia.client.graphics.model.Face;
import ru.windcorp.progressia.client.graphics.model.Faces;
import ru.windcorp.progressia.client.graphics.model.Shape;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.client.graphics.texture.Texture;
public class RenderTarget {
@ -41,12 +41,12 @@ public class RenderTarget {
private final MaskStack masks = new MaskStack();
private final Mat4 transform;
private final WorldRenderable renderable;
private final Renderable renderable;
public Clip(
Iterable<TransformedMask> masks,
Mat4 transform,
WorldRenderable renderable
Renderable renderable
) {
for (TransformedMask mask : masks) {
this.masks.pushMask(mask);
@ -60,7 +60,7 @@ public class RenderTarget {
return transform;
}
public WorldRenderable getRenderable() {
public Renderable getRenderable() {
return renderable;
}
@ -177,7 +177,7 @@ public class RenderTarget {
return transformStack.getFirst();
}
public void addCustomRenderer(WorldRenderable renderable) {
public void addCustomRenderer(Renderable renderable) {
assembleCurrentClipFromFaces();
assembled.add(new Clip(
maskStack, getTransform(), renderable

View File

@ -2,7 +2,7 @@ package ru.windcorp.progressia.client.graphics.font;
import glm.vec._2.i.Vec2i;
import ru.windcorp.progressia.client.graphics.Colors;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
public class Font {
@ -43,7 +43,7 @@ public class Font {
return color;
}
public WorldRenderable assemble(
public Renderable assemble(
CharSequence chars, int maxWidth
) {
return typeface.assemble(chars, style, align, maxWidth, color);

View File

@ -11,7 +11,7 @@ import ru.windcorp.progressia.client.graphics.model.Face;
import ru.windcorp.progressia.client.graphics.model.Faces;
import ru.windcorp.progressia.client.graphics.model.Shape;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.client.graphics.texture.Texture;
public abstract class SpriteTypeface extends Typeface {
@ -64,7 +64,7 @@ public abstract class SpriteTypeface extends Typeface {
public abstract ShapeRenderProgram getProgram();
@Override
public WorldRenderable assemble(
public Renderable assemble(
CharSequence chars, int style,
float align, int maxWidth,
int color

View File

@ -1,7 +1,7 @@
package ru.windcorp.progressia.client.graphics.font;
import glm.vec._2.i.Vec2i;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.common.util.CoordinatePacker;
import ru.windcorp.progressia.common.util.Named;
@ -46,7 +46,7 @@ public abstract class Typeface extends Named {
super(name);
}
public abstract WorldRenderable assemble(
public abstract Renderable assemble(
CharSequence chars, int style,
float align, int maxWidth,
int color

View File

@ -1,11 +1,11 @@
package ru.windcorp.progressia.client.graphics.model;
import static ru.windcorp.progressia.common.block.BlockFace.*;
import static ru.windcorp.progressia.common.world.block.BlockFace.*;
import com.google.common.collect.ImmutableMap;
import glm.vec._3.Vec3;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.world.block.BlockFace;
class BlockFaceVectors {

View File

@ -33,7 +33,7 @@ public abstract class DynamicModel extends Model {
private final boolean[] dynamics;
public DynamicModel(
WorldRenderable[] parts,
Renderable[] parts,
Mat4[] transforms,
boolean[] dynamic
) {
@ -70,14 +70,14 @@ public abstract class DynamicModel extends Model {
public static class Builder {
private final List<WorldRenderable> parts = new ArrayList<>();
private final List<Renderable> parts = new ArrayList<>();
private final List<Mat4> transforms = new ArrayList<>();
private final List<Boolean> dynamics = new ArrayList<>();
protected Builder() {}
private Builder addPart(
WorldRenderable part,
Renderable part,
Mat4 transform,
boolean isDynamic
) {
@ -89,26 +89,26 @@ public abstract class DynamicModel extends Model {
}
public Builder addStaticPart(
WorldRenderable part,
Renderable part,
Mat4 transform
) {
return addPart(part, new Mat4(transform), false);
}
public Builder addDynamicPart(
WorldRenderable part
Renderable part
) {
return addPart(part, new Mat4(), true);
}
public Builder addStaticPart(
WorldRenderable part
Renderable part
) {
return addStaticPart(part, IDENTITY);
}
private WorldRenderable[] getParts() {
return parts.toArray(new WorldRenderable[parts.size()]);
private Renderable[] getParts() {
return parts.toArray(new Renderable[parts.size()]);
}
private Mat4[] getTransforms() {

View File

@ -24,7 +24,7 @@ public class EmptyModel extends Model {
private static final EmptyModel INSTANCE = new EmptyModel();
private EmptyModel() {
super(new WorldRenderable[0]);
super(new Renderable[0]);
}
public static EmptyModel getInstance() {

View File

@ -23,8 +23,8 @@ import glm.vec._2.Vec2;
import glm.vec._3.Vec3;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram.VertexBuilder;
import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class Faces {

View File

@ -37,7 +37,7 @@ public class LambdaModel extends DynamicModel {
private final TransformGetter[] getters;
public LambdaModel(
WorldRenderable[] parts,
Renderable[] parts,
Mat4[] transforms,
boolean[] dynamic,
TransformGetter[] getters
@ -64,7 +64,7 @@ public class LambdaModel extends DynamicModel {
public static class Builder {
private final List<WorldRenderable> parts = new ArrayList<>();
private final List<Renderable> parts = new ArrayList<>();
private final List<Mat4> transforms = new ArrayList<>();
private final List<Boolean> dynamics = new ArrayList<>();
private final List<TransformGetter> getters = new ArrayList<>();
@ -72,7 +72,7 @@ public class LambdaModel extends DynamicModel {
protected Builder() {}
private Builder addPart(
WorldRenderable part,
Renderable part,
Mat4 transform,
TransformGetter getter
) {
@ -85,27 +85,27 @@ public class LambdaModel extends DynamicModel {
}
public Builder addStaticPart(
WorldRenderable part,
Renderable part,
Mat4 transform
) {
return addPart(part, new Mat4(transform), null);
}
public Builder addDynamicPart(
WorldRenderable part,
Renderable part,
TransformGetter getter
) {
return addPart(part, new Mat4(), getter);
}
public Builder addStaticPart(
WorldRenderable part
Renderable part
) {
return addStaticPart(part, IDENTITY);
}
private WorldRenderable[] getParts() {
return parts.toArray(new WorldRenderable[parts.size()]);
private Renderable[] getParts() {
return parts.toArray(new Renderable[parts.size()]);
}
private Mat4[] getTransforms() {

View File

@ -19,11 +19,11 @@ package ru.windcorp.progressia.client.graphics.model;
import glm.mat._4.Mat4;
public abstract class Model implements WorldRenderable {
public abstract class Model implements Renderable {
private final WorldRenderable[] parts;
private final Renderable[] parts;
public Model(WorldRenderable[] parts) {
public Model(Renderable[] parts) {
this.parts = parts;
}
@ -32,7 +32,7 @@ public abstract class Model implements WorldRenderable {
@Override
public void render(ShapeRenderHelper helper) {
for (int i = 0; i < parts.length; ++i) {
WorldRenderable part = parts[i];
Renderable part = parts[i];
Mat4 transform = getTransform(i);
try {

View File

@ -17,7 +17,7 @@
*******************************************************************************/
package ru.windcorp.progressia.client.graphics.model;
public interface WorldRenderable {
public interface Renderable {
void render(ShapeRenderHelper renderer);

View File

@ -25,7 +25,7 @@ import org.lwjgl.BufferUtils;
import ru.windcorp.progressia.client.graphics.backend.Usage;
import ru.windcorp.progressia.client.graphics.backend.VertexBufferObject;
public class Shape implements WorldRenderable {
public class Shape implements Renderable {
private final ShapeRenderProgram program;
private final Face[] faces;

View File

@ -30,7 +30,7 @@ public class StaticModel extends Model {
private final Mat4[] transforms;
public StaticModel(
WorldRenderable[] parts,
Renderable[] parts,
Mat4[] transforms
) {
super(parts);
@ -52,13 +52,13 @@ public class StaticModel extends Model {
public static class Builder {
private final List<WorldRenderable> parts = new ArrayList<>();
private final List<Renderable> parts = new ArrayList<>();
private final List<Mat4> transforms = new ArrayList<>();
protected Builder() {}
public Builder addPart(
WorldRenderable part,
Renderable part,
Mat4 transform
) {
parts.add(Objects.requireNonNull(part, "part"));
@ -68,13 +68,13 @@ public class StaticModel extends Model {
}
public Builder addPart(
WorldRenderable part
Renderable part
) {
return addPart(part, IDENTITY);
}
private WorldRenderable[] getParts() {
return parts.toArray(new WorldRenderable[parts.size()]);
private Renderable[] getParts() {
return parts.toArray(new Renderable[parts.size()]);
}
private Mat4[] getTransforms() {

View File

@ -91,10 +91,6 @@ public class LayerWorld extends Layer {
client.getCamera().move(velCopy);
Vectors.release(velCopy);
if (GraphicsBackend.getFramesRendered() % 60 == 0) {
System.out.println(GraphicsInterface.getFPS());
}
}
private void renderWorld() {

View File

@ -28,20 +28,20 @@ import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.client.graphics.model.Model;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderHelper;
import ru.windcorp.progressia.client.graphics.model.StaticModel;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.client.graphics.model.StaticModel.Builder;
import ru.windcorp.progressia.client.world.renders.BlockRender;
import ru.windcorp.progressia.client.world.renders.BlockRenderNone;
import ru.windcorp.progressia.client.world.renders.BlockRenders;
import ru.windcorp.progressia.client.world.renders.TileRender;
import ru.windcorp.progressia.client.world.renders.TileRenders;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizer;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerSupplier;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizers;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.block.TileData;
import ru.windcorp.progressia.client.world.block.BlockRender;
import ru.windcorp.progressia.client.world.block.BlockRenderNone;
import ru.windcorp.progressia.client.world.block.BlockRenderRegistry;
import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizer;
import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerSupplier;
import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizers;
import ru.windcorp.progressia.client.world.tile.TileRender;
import ru.windcorp.progressia.client.world.tile.TileRenderRegistry;
import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.ChunkData;
import ru.windcorp.progressia.common.world.block.BlockFace;
import ru.windcorp.progressia.common.world.tile.TileData;
public class ChunkRender {
@ -73,7 +73,9 @@ public class ChunkRender {
}
public BlockRender getBlock(Vec3i posInChunk) {
return BlockRenders.get(getData().getBlock(posInChunk).getId());
return BlockRenderRegistry.getInstance().get(
getData().getBlock(posInChunk).getId()
);
}
public void render(ShapeRenderHelper renderer) {
@ -155,7 +157,7 @@ public class ChunkRender {
Vec3i cursor,
Builder builder
) {
WorldRenderable renderable = block.createRenderable();
Renderable renderable = block.createRenderable();
if (renderable == null) {
renderable = block::render;
@ -196,7 +198,9 @@ public class ChunkRender {
buildTile(
cursor, face,
TileRenders.get(tiles.get(layer).getId()),
TileRenderRegistry.getInstance().get(
tiles.get(layer).getId()
),
layer,
optimizers, builder
);

View File

@ -15,10 +15,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders;
package ru.windcorp.progressia.client.world.block;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderHelper;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.common.util.Namespaced;
public abstract class BlockRender extends Namespaced {
@ -33,7 +33,7 @@ public abstract class BlockRender extends Namespaced {
);
}
public WorldRenderable createRenderable() {
public Renderable createRenderable() {
return null;
}

View File

@ -15,10 +15,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders;
package ru.windcorp.progressia.client.world.block;
import ru.windcorp.progressia.client.graphics.model.EmptyModel;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
public class BlockRenderNone extends BlockRender {
@ -27,7 +27,7 @@ public class BlockRenderNone extends BlockRender {
}
@Override
public WorldRenderable createRenderable() {
public Renderable createRenderable() {
return EmptyModel.getInstance();
}

View File

@ -15,10 +15,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders;
package ru.windcorp.progressia.client.world.block;
import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class BlockRenderOpaqueCube extends BlockRenderTexturedCube {

View File

@ -15,33 +15,25 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders;
import java.util.HashMap;
import java.util.Map;
package ru.windcorp.progressia.client.world.block;
import ru.windcorp.progressia.client.graphics.texture.Atlases;
import ru.windcorp.progressia.client.graphics.texture.Atlases.AtlasGroup;
import ru.windcorp.progressia.client.graphics.texture.SimpleTexture;
import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.common.resource.ResourceManager;
import ru.windcorp.progressia.common.util.NamespacedRegistry;
public class BlockRenders {
public class BlockRenderRegistry extends NamespacedRegistry<BlockRender> {
private static final Map<String, BlockRender> BLOCK_RENDERS =
new HashMap<>();
private static final BlockRenderRegistry INSTANCE =
new BlockRenderRegistry();
private static final AtlasGroup BLOCKS_ATLAS_GROUP =
new AtlasGroup("Blocks", 1 << 12);
private BlockRenders() {}
public static BlockRender get(String name) {
return BLOCK_RENDERS.get(name);
}
public static void register(BlockRender blockRender) {
BLOCK_RENDERS.put(blockRender.getId(), blockRender);
public static BlockRenderRegistry getInstance() {
return INSTANCE;
}
public static Texture getBlockTexture(String name) {
@ -53,4 +45,8 @@ public class BlockRenders {
);
}
public static AtlasGroup getBlocksAtlasGroup() {
return BLOCKS_ATLAS_GROUP;
}
}

View File

@ -15,19 +15,19 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders;
package ru.windcorp.progressia.client.world.block;
import static ru.windcorp.progressia.common.block.BlockFace.*;
import static ru.windcorp.progressia.common.world.block.BlockFace.*;
import java.util.HashMap;
import java.util.Map;
import ru.windcorp.progressia.client.graphics.model.Shapes;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueCube;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerCube.OpaqueCube;
import ru.windcorp.progressia.common.world.block.BlockFace;
public abstract class BlockRenderTexturedCube
extends BlockRender
@ -57,7 +57,7 @@ implements OpaqueCube {
}
@Override
public WorldRenderable createRenderable() {
public Renderable createRenderable() {
return new Shapes.PppBuilder(
WorldRenderProgram.getDefault(),
getTexture(TOP), getTexture(BOTTOM),

View File

@ -15,10 +15,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders;
package ru.windcorp.progressia.client.world.block;
import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class BlockRenderTransparentCube extends BlockRenderTexturedCube {

View File

@ -15,14 +15,14 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders.cro;
package ru.windcorp.progressia.client.world.cro;
import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.client.graphics.model.Shape;
import ru.windcorp.progressia.client.world.ChunkRender;
import ru.windcorp.progressia.client.world.renders.BlockRender;
import ru.windcorp.progressia.client.world.renders.TileRender;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.client.world.block.BlockRender;
import ru.windcorp.progressia.client.world.tile.TileRender;
import ru.windcorp.progressia.common.world.block.BlockFace;
public abstract class ChunkRenderOptimizer {

View File

@ -15,11 +15,11 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders.cro;
package ru.windcorp.progressia.client.world.cro;
import static ru.windcorp.progressia.common.block.BlockFace.BLOCK_FACE_COUNT;
import static ru.windcorp.progressia.common.world.ChunkData.BLOCKS_PER_CHUNK;
import static ru.windcorp.progressia.common.world.ChunkData.TILES_PER_FACE;
import static ru.windcorp.progressia.common.world.block.BlockFace.BLOCK_FACE_COUNT;
import java.util.ArrayList;
import java.util.Collection;
@ -34,10 +34,10 @@ import ru.windcorp.progressia.client.graphics.model.Shape;
import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram;
import ru.windcorp.progressia.client.world.ChunkRender;
import ru.windcorp.progressia.client.world.renders.BlockRender;
import ru.windcorp.progressia.client.world.renders.TileRender;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.client.world.block.BlockRender;
import ru.windcorp.progressia.client.world.tile.TileRender;
import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class ChunkRenderOptimizerCube extends ChunkRenderOptimizer {

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders.cro;
package ru.windcorp.progressia.client.world.cro;
import com.google.common.base.Supplier;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders.cro;
package ru.windcorp.progressia.client.world.cro;
import java.util.Collection;
import java.util.HashMap;

View File

@ -1,10 +1,10 @@
package ru.windcorp.progressia.client.world.renders;
package ru.windcorp.progressia.client.world.tile;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderHelper;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizer;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizer;
import ru.windcorp.progressia.common.util.Namespaced;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class TileRender extends Namespaced {
@ -18,7 +18,7 @@ public class TileRender extends Namespaced {
);
}
public WorldRenderable createRenderable(BlockFace face) {
public Renderable createRenderable(BlockFace face) {
return null;
}

View File

@ -1,16 +1,16 @@
package ru.windcorp.progressia.client.world.renders;
package ru.windcorp.progressia.client.world.tile;
import glm.vec._3.Vec3;
import ru.windcorp.progressia.client.graphics.backend.Usage;
import ru.windcorp.progressia.client.graphics.model.Faces;
import ru.windcorp.progressia.client.graphics.model.Shape;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueTile;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerCube.OpaqueTile;
import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class TileRenderGrass extends TileRender implements OpaqueTile {
@ -37,7 +37,7 @@ public class TileRenderGrass extends TileRender implements OpaqueTile {
}
@Override
public WorldRenderable createRenderable(BlockFace face) {
public Renderable createRenderable(BlockFace face) {
ShapeRenderProgram program = WorldRenderProgram.getDefault();
Vec3 color = Vectors.grab3().set(1, 1, 1);

View File

@ -15,33 +15,28 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.client.world.renders;
import java.util.HashMap;
import java.util.Map;
package ru.windcorp.progressia.client.world.tile;
import ru.windcorp.progressia.client.graphics.texture.Atlases;
import ru.windcorp.progressia.client.graphics.texture.Atlases.AtlasGroup;
import ru.windcorp.progressia.client.graphics.texture.SimpleTexture;
import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.common.resource.ResourceManager;
import ru.windcorp.progressia.common.util.NamespacedRegistry;
public class TileRenders {
public class TileRenderRegistry extends NamespacedRegistry<TileRender> {
private static final Map<String, TileRender> TILE_RENDERS =
new HashMap<>();
private static final TileRenderRegistry INSTANCE = new TileRenderRegistry();
private static final AtlasGroup TILES_ATLAS_GROUP =
new AtlasGroup("Tiles", 1 << 12);
private TileRenders() {}
public static TileRender get(String name) {
return TILE_RENDERS.get(name);
public static TileRenderRegistry getInstance() {
return INSTANCE;
}
public static void register(TileRender tileRender) {
TILE_RENDERS.put(tileRender.getId(), tileRender);
public static AtlasGroup getTilesAtlasGroup() {
return TILES_ATLAS_GROUP;
}
public static Texture getTileTexture(String name) {

View File

@ -1,16 +1,16 @@
package ru.windcorp.progressia.client.world.renders;
package ru.windcorp.progressia.client.world.tile;
import glm.vec._3.Vec3;
import ru.windcorp.progressia.client.graphics.backend.Usage;
import ru.windcorp.progressia.client.graphics.model.Faces;
import ru.windcorp.progressia.client.graphics.model.Shape;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueTile;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerCube.OpaqueTile;
import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class TileRenderSimple extends TileRender implements OpaqueTile {
@ -32,7 +32,7 @@ public class TileRenderSimple extends TileRender implements OpaqueTile {
}
@Override
public WorldRenderable createRenderable(BlockFace face) {
public Renderable createRenderable(BlockFace face) {
ShapeRenderProgram program = WorldRenderProgram.getDefault();
Vec3 color = Vectors.grab3().set(1, 1, 1);

View File

@ -17,7 +17,7 @@
*******************************************************************************/
package ru.windcorp.progressia.common.world;
import static ru.windcorp.progressia.common.block.BlockFace.*;
import static ru.windcorp.progressia.common.world.block.BlockFace.*;
import java.util.ArrayList;
import java.util.List;
@ -26,14 +26,14 @@ import java.util.function.Consumer;
import com.google.common.collect.Lists;
import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.common.block.BlockData;
import ru.windcorp.progressia.common.block.BlockDataRegistry;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.block.TileData;
import ru.windcorp.progressia.common.block.TileDataRegistry;
import ru.windcorp.progressia.common.util.SizeLimitedList;
import ru.windcorp.progressia.common.util.VectorUtil;
import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.block.BlockData;
import ru.windcorp.progressia.common.world.block.BlockDataRegistry;
import ru.windcorp.progressia.common.world.block.BlockFace;
import ru.windcorp.progressia.common.world.tile.TileData;
import ru.windcorp.progressia.common.world.tile.TileDataRegistry;
public class ChunkData {
@ -61,14 +61,14 @@ public class ChunkData {
}
private void tmp_generate() {
BlockData dirt = BlockDataRegistry.get("Test:Dirt");
BlockData stone = BlockDataRegistry.get("Test:Stone");
BlockData air = BlockDataRegistry.get("Test:Air");
BlockData dirt = BlockDataRegistry.getInstance().get("Test:Dirt");
BlockData stone = BlockDataRegistry.getInstance().get("Test:Stone");
BlockData air = BlockDataRegistry.getInstance().get("Test:Air");
TileData grass = TileDataRegistry.get("Test:Grass");
TileData stones = TileDataRegistry.get("Test:Stones");
TileData flowers = TileDataRegistry.get("Test:YellowFlowers");
TileData sand = TileDataRegistry.get("Test:Sand");
TileData grass = TileDataRegistry.getInstance().get("Test:Grass");
TileData stones = TileDataRegistry.getInstance().get("Test:Stones");
TileData flowers = TileDataRegistry.getInstance().get("Test:YellowFlowers");
TileData sand = TileDataRegistry.getInstance().get("Test:Sand");
Vec3i aPoint = new Vec3i(5, 0, BLOCKS_PER_CHUNK + BLOCKS_PER_CHUNK/2);
Vec3i pos = new Vec3i();

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.common.block;
package ru.windcorp.progressia.common.world.block;
import ru.windcorp.progressia.common.util.Namespaced;

View File

@ -15,21 +15,16 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.common.block;
package ru.windcorp.progressia.common.world.block;
import java.util.HashMap;
import java.util.Map;
import ru.windcorp.progressia.common.util.NamespacedRegistry;
public class BlockDataRegistry {
public class BlockDataRegistry extends NamespacedRegistry<BlockData> {
private static final Map<String, BlockData> REGISTRY = new HashMap<>();
private static final BlockDataRegistry INSTANCE = new BlockDataRegistry();
public static BlockData get(String name) {
return REGISTRY.get(name);
}
public static void register(BlockData blockData) {
REGISTRY.put(blockData.getId(), blockData);
public static BlockDataRegistry getInstance() {
return INSTANCE;
}
}

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.common.block;
package ru.windcorp.progressia.common.world.block;
import com.google.common.collect.ImmutableList;

View File

@ -1,4 +1,4 @@
package ru.windcorp.progressia.common.block;
package ru.windcorp.progressia.common.world.block;
import static java.lang.Math.abs;
import static java.lang.Math.max;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.common.block;
package ru.windcorp.progressia.common.world.tile;
import ru.windcorp.progressia.common.util.Namespaced;

View File

@ -15,21 +15,16 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/
package ru.windcorp.progressia.common.block;
package ru.windcorp.progressia.common.world.tile;
import java.util.HashMap;
import java.util.Map;
import ru.windcorp.progressia.common.util.NamespacedRegistry;
public class TileDataRegistry {
public class TileDataRegistry extends NamespacedRegistry<TileData> {
private static final Map<String, TileData> REGISTRY = new HashMap<>();
private static final TileDataRegistry INSTANCE = new TileDataRegistry();
public static TileData get(String name) {
return REGISTRY.get(name);
}
public static void register(TileData tileData) {
REGISTRY.put(tileData.getId(), tileData);
public static TileDataRegistry getInstance() {
return INSTANCE;
}
}

View File

@ -1,18 +0,0 @@
package ru.windcorp.progressia.server.block;
import java.util.HashMap;
import java.util.Map;
public class BlockLogicRegistry {
private static final Map<String, BlockLogic> REGISTRY = new HashMap<>();
public static BlockLogic get(String name) {
return REGISTRY.get(name);
}
public static void register(BlockLogic blockLogic) {
REGISTRY.put(blockLogic.getId(), blockLogic);
}
}

View File

@ -1,9 +1,9 @@
package ru.windcorp.progressia.server.world;
import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.common.block.BlockData;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.block.TileData;
import ru.windcorp.progressia.common.world.block.BlockData;
import ru.windcorp.progressia.common.world.block.BlockFace;
import ru.windcorp.progressia.common.world.tile.TileData;
public interface Changer {

View File

@ -6,9 +6,9 @@ import java.util.function.BiConsumer;
import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.common.world.ChunkData;
import ru.windcorp.progressia.server.block.BlockLogic;
import ru.windcorp.progressia.server.block.BlockLogicRegistry;
import ru.windcorp.progressia.server.block.Tickable;
import ru.windcorp.progressia.server.world.block.BlockLogic;
import ru.windcorp.progressia.server.world.block.BlockLogicRegistry;
import ru.windcorp.progressia.server.world.block.Tickable;
public class ChunkLogic {
@ -63,7 +63,9 @@ public class ChunkLogic {
}
public BlockLogic getBlock(Vec3i blockInChunk) {
return BlockLogicRegistry.get(getData().getBlock(blockInChunk).getId());
return BlockLogicRegistry.getInstance().get(
getData().getBlock(blockInChunk).getId()
);
}
}

View File

@ -5,15 +5,15 @@ import java.util.List;
import java.util.Objects;
import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.common.block.BlockData;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.block.TileData;
import ru.windcorp.progressia.common.comms.packets.Packet;
import ru.windcorp.progressia.common.comms.packets.PacketWorldChange;
import ru.windcorp.progressia.common.util.LowOverheadCache;
import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.Coordinates;
import ru.windcorp.progressia.common.world.WorldData;
import ru.windcorp.progressia.common.world.block.BlockData;
import ru.windcorp.progressia.common.world.block.BlockFace;
import ru.windcorp.progressia.common.world.tile.TileData;
import ru.windcorp.progressia.server.Server;
public class ImplementedChangeTracker implements Changer {

View File

@ -4,7 +4,7 @@ import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.Coordinates;
import ru.windcorp.progressia.server.Server;
import ru.windcorp.progressia.server.block.BlockTickContext;
import ru.windcorp.progressia.server.world.block.BlockTickContext;
public class MutableBlockTickContext implements BlockTickContext {

View File

@ -1,7 +1,7 @@
package ru.windcorp.progressia.server.world;
import ru.windcorp.progressia.server.Server;
import ru.windcorp.progressia.server.block.Tickable;
import ru.windcorp.progressia.server.world.block.Tickable;
public class Ticker implements Runnable {

View File

@ -1,4 +1,4 @@
package ru.windcorp.progressia.server.block;
package ru.windcorp.progressia.server.world.block;
import ru.windcorp.progressia.common.util.Namespaced;

View File

@ -0,0 +1,13 @@
package ru.windcorp.progressia.server.world.block;
import ru.windcorp.progressia.common.util.NamespacedRegistry;
public class BlockLogicRegistry extends NamespacedRegistry<BlockLogic> {
private static final BlockLogicRegistry INSTANCE = new BlockLogicRegistry();
public static BlockLogicRegistry getInstance() {
return INSTANCE;
}
}

View File

@ -1,7 +1,7 @@
package ru.windcorp.progressia.server.block;
package ru.windcorp.progressia.server.world.block;
import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.common.block.BlockData;
import ru.windcorp.progressia.common.world.block.BlockData;
import ru.windcorp.progressia.server.world.ChunkTickContext;
public interface BlockTickContext extends ChunkTickContext {

View File

@ -1,9 +1,9 @@
package ru.windcorp.progressia.server.block;
package ru.windcorp.progressia.server.world.block;
import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.common.block.BlockData;
import ru.windcorp.progressia.common.world.ChunkData;
import ru.windcorp.progressia.common.world.WorldData;
import ru.windcorp.progressia.common.world.block.BlockData;
import ru.windcorp.progressia.server.Server;
import ru.windcorp.progressia.server.world.ChunkLogic;
import ru.windcorp.progressia.server.world.WorldLogic;

View File

@ -1,4 +1,4 @@
package ru.windcorp.progressia.server.block;
package ru.windcorp.progressia.server.world.block;
import ru.windcorp.progressia.server.world.Changer;

View File

@ -1,4 +1,4 @@
package ru.windcorp.progressia.server.block;
package ru.windcorp.progressia.server.world.block;
import ru.windcorp.progressia.server.world.Changer;