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; package ru.windcorp.progressia.client;
import static ru.windcorp.progressia.client.world.renders.BlockRenders.register; import static ru.windcorp.progressia.client.world.block.BlockRenderRegistry.getBlockTexture;
import static ru.windcorp.progressia.client.world.renders.BlockRenders.getBlockTexture; import static ru.windcorp.progressia.client.world.tile.TileRenderRegistry.getTileTexture;
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 org.lwjgl.glfw.GLFW; 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.ControlTriggerOnKeyPress;
import ru.windcorp.progressia.client.comms.controls.ControlTriggerRegistry; import ru.windcorp.progressia.client.comms.controls.ControlTriggerRegistry;
import ru.windcorp.progressia.client.graphics.input.KeyMatcher; import ru.windcorp.progressia.client.graphics.input.KeyMatcher;
import ru.windcorp.progressia.client.world.renders.*; import ru.windcorp.progressia.client.world.block.*;
import ru.windcorp.progressia.common.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.ControlData;
import ru.windcorp.progressia.common.comms.controls.ControlDataRegistry; import ru.windcorp.progressia.common.comms.controls.ControlDataRegistry;
import ru.windcorp.progressia.common.comms.controls.PacketControl; import ru.windcorp.progressia.common.comms.controls.PacketControl;
import ru.windcorp.progressia.common.world.ChunkData; 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.Server;
import ru.windcorp.progressia.server.block.*;
import ru.windcorp.progressia.server.comms.Client; import ru.windcorp.progressia.server.comms.Client;
import ru.windcorp.progressia.server.comms.controls.ControlLogic; import ru.windcorp.progressia.server.comms.controls.ControlLogic;
import ru.windcorp.progressia.server.comms.controls.ControlLogicRegistry; import ru.windcorp.progressia.server.comms.controls.ControlLogicRegistry;
import ru.windcorp.progressia.server.world.block.*;
public class TestContent { public class TestContent {
@ -88,9 +87,9 @@ public class TestContent {
BlockData block; BlockData block;
if (data.getBlock(z000).getId().equals("Test:Stone")) { if (data.getBlock(z000).getId().equals("Test:Stone")) {
block = BlockDataRegistry.get("Test:Glass"); block = BlockDataRegistry.getInstance().get("Test:Glass");
} else { } else {
block = BlockDataRegistry.get("Test:Stone"); block = BlockDataRegistry.getInstance().get("Test:Stone");
} }
server.getAdHocChanger().setBlock(z000, block); 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 final Vec2i FRAME_SIZE = new Vec2i();
private static double frameLength = 1.0 / 60; // TODO do something about it 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 static double frameStart = Double.NaN;
private GraphicsBackend() {} private GraphicsBackend() {}
@ -102,7 +102,7 @@ public class GraphicsBackend {
return frameLength; return frameLength;
} }
public static int getFramesRendered() { public static long getFramesRendered() {
return framesRendered; return framesRendered;
} }

View File

@ -59,6 +59,10 @@ public class GraphicsInterface {
return 1 / GraphicsBackend.getFrameLength(); return 1 / GraphicsBackend.getFrameLength();
} }
public static long getFramesRendered() {
return GraphicsBackend.getFramesRendered();
}
public static void subscribeToInputEvents(Object listener) { public static void subscribeToInputEvents(Object listener) {
InputHandler.register(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.Face;
import ru.windcorp.progressia.client.graphics.model.Faces; import ru.windcorp.progressia.client.graphics.model.Faces;
import ru.windcorp.progressia.client.graphics.model.Shape; 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; import ru.windcorp.progressia.client.graphics.texture.Texture;
public class RenderTarget { public class RenderTarget {
@ -41,12 +41,12 @@ public class RenderTarget {
private final MaskStack masks = new MaskStack(); private final MaskStack masks = new MaskStack();
private final Mat4 transform; private final Mat4 transform;
private final WorldRenderable renderable; private final Renderable renderable;
public Clip( public Clip(
Iterable<TransformedMask> masks, Iterable<TransformedMask> masks,
Mat4 transform, Mat4 transform,
WorldRenderable renderable Renderable renderable
) { ) {
for (TransformedMask mask : masks) { for (TransformedMask mask : masks) {
this.masks.pushMask(mask); this.masks.pushMask(mask);
@ -60,7 +60,7 @@ public class RenderTarget {
return transform; return transform;
} }
public WorldRenderable getRenderable() { public Renderable getRenderable() {
return renderable; return renderable;
} }
@ -177,7 +177,7 @@ public class RenderTarget {
return transformStack.getFirst(); return transformStack.getFirst();
} }
public void addCustomRenderer(WorldRenderable renderable) { public void addCustomRenderer(Renderable renderable) {
assembleCurrentClipFromFaces(); assembleCurrentClipFromFaces();
assembled.add(new Clip( assembled.add(new Clip(
maskStack, getTransform(), renderable maskStack, getTransform(), renderable

View File

@ -2,7 +2,7 @@ package ru.windcorp.progressia.client.graphics.font;
import glm.vec._2.i.Vec2i; import glm.vec._2.i.Vec2i;
import ru.windcorp.progressia.client.graphics.Colors; 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 { public class Font {
@ -43,7 +43,7 @@ public class Font {
return color; return color;
} }
public WorldRenderable assemble( public Renderable assemble(
CharSequence chars, int maxWidth CharSequence chars, int maxWidth
) { ) {
return typeface.assemble(chars, style, align, maxWidth, color); 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.Faces;
import ru.windcorp.progressia.client.graphics.model.Shape; import ru.windcorp.progressia.client.graphics.model.Shape;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram; 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.texture.Texture;
public abstract class SpriteTypeface extends Typeface { public abstract class SpriteTypeface extends Typeface {
@ -64,7 +64,7 @@ public abstract class SpriteTypeface extends Typeface {
public abstract ShapeRenderProgram getProgram(); public abstract ShapeRenderProgram getProgram();
@Override @Override
public WorldRenderable assemble( public Renderable assemble(
CharSequence chars, int style, CharSequence chars, int style,
float align, int maxWidth, float align, int maxWidth,
int color int color

View File

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

View File

@ -1,11 +1,11 @@
package ru.windcorp.progressia.client.graphics.model; 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 com.google.common.collect.ImmutableMap;
import glm.vec._3.Vec3; import glm.vec._3.Vec3;
import ru.windcorp.progressia.common.block.BlockFace; import ru.windcorp.progressia.common.world.block.BlockFace;
class BlockFaceVectors { class BlockFaceVectors {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -17,7 +17,7 @@
*******************************************************************************/ *******************************************************************************/
package ru.windcorp.progressia.client.graphics.model; package ru.windcorp.progressia.client.graphics.model;
public interface WorldRenderable { public interface Renderable {
void render(ShapeRenderHelper renderer); 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.Usage;
import ru.windcorp.progressia.client.graphics.backend.VertexBufferObject; import ru.windcorp.progressia.client.graphics.backend.VertexBufferObject;
public class Shape implements WorldRenderable { public class Shape implements Renderable {
private final ShapeRenderProgram program; private final ShapeRenderProgram program;
private final Face[] faces; private final Face[] faces;

View File

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

View File

@ -91,10 +91,6 @@ public class LayerWorld extends Layer {
client.getCamera().move(velCopy); client.getCamera().move(velCopy);
Vectors.release(velCopy); Vectors.release(velCopy);
if (GraphicsBackend.getFramesRendered() % 60 == 0) {
System.out.println(GraphicsInterface.getFPS());
}
} }
private void renderWorld() { 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.Model;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderHelper; import ru.windcorp.progressia.client.graphics.model.ShapeRenderHelper;
import ru.windcorp.progressia.client.graphics.model.StaticModel; 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.graphics.model.StaticModel.Builder;
import ru.windcorp.progressia.client.world.renders.BlockRender; import ru.windcorp.progressia.client.world.block.BlockRender;
import ru.windcorp.progressia.client.world.renders.BlockRenderNone; import ru.windcorp.progressia.client.world.block.BlockRenderNone;
import ru.windcorp.progressia.client.world.renders.BlockRenders; import ru.windcorp.progressia.client.world.block.BlockRenderRegistry;
import ru.windcorp.progressia.client.world.renders.TileRender; import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizer;
import ru.windcorp.progressia.client.world.renders.TileRenders; import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerSupplier;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizer; import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizers;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerSupplier; import ru.windcorp.progressia.client.world.tile.TileRender;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizers; import ru.windcorp.progressia.client.world.tile.TileRenderRegistry;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.block.TileData;
import ru.windcorp.progressia.common.util.Vectors; import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.ChunkData; 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 { public class ChunkRender {
@ -73,7 +73,9 @@ public class ChunkRender {
} }
public BlockRender getBlock(Vec3i posInChunk) { 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) { public void render(ShapeRenderHelper renderer) {
@ -155,7 +157,7 @@ public class ChunkRender {
Vec3i cursor, Vec3i cursor,
Builder builder Builder builder
) { ) {
WorldRenderable renderable = block.createRenderable(); Renderable renderable = block.createRenderable();
if (renderable == null) { if (renderable == null) {
renderable = block::render; renderable = block::render;
@ -196,7 +198,9 @@ public class ChunkRender {
buildTile( buildTile(
cursor, face, cursor, face,
TileRenders.get(tiles.get(layer).getId()), TileRenderRegistry.getInstance().get(
tiles.get(layer).getId()
),
layer, layer,
optimizers, builder optimizers, builder
); );

View File

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

View File

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

View File

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

View File

@ -15,33 +15,25 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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 java.util.HashMap;
import java.util.Map;
import ru.windcorp.progressia.client.graphics.texture.Atlases; import ru.windcorp.progressia.client.graphics.texture.Atlases;
import ru.windcorp.progressia.client.graphics.texture.Atlases.AtlasGroup; import ru.windcorp.progressia.client.graphics.texture.Atlases.AtlasGroup;
import ru.windcorp.progressia.client.graphics.texture.SimpleTexture; import ru.windcorp.progressia.client.graphics.texture.SimpleTexture;
import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.common.resource.ResourceManager; 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 = private static final BlockRenderRegistry INSTANCE =
new HashMap<>(); new BlockRenderRegistry();
private static final AtlasGroup BLOCKS_ATLAS_GROUP = private static final AtlasGroup BLOCKS_ATLAS_GROUP =
new AtlasGroup("Blocks", 1 << 12); new AtlasGroup("Blocks", 1 << 12);
private BlockRenders() {} public static BlockRenderRegistry getInstance() {
return INSTANCE;
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 Texture getBlockTexture(String name) { 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 * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.HashMap;
import java.util.Map; import java.util.Map;
import ru.windcorp.progressia.client.graphics.model.Shapes; 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.texture.Texture;
import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueCube; import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerCube.OpaqueCube;
import ru.windcorp.progressia.common.block.BlockFace; import ru.windcorp.progressia.common.world.block.BlockFace;
public abstract class BlockRenderTexturedCube public abstract class BlockRenderTexturedCube
extends BlockRender extends BlockRender
@ -57,7 +57,7 @@ implements OpaqueCube {
} }
@Override @Override
public WorldRenderable createRenderable() { public Renderable createRenderable() {
return new Shapes.PppBuilder( return new Shapes.PppBuilder(
WorldRenderProgram.getDefault(), WorldRenderProgram.getDefault(),
getTexture(TOP), getTexture(BOTTOM), getTexture(TOP), getTexture(BOTTOM),

View File

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

View File

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

View File

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

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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; import com.google.common.base.Supplier;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.Collection;
import java.util.HashMap; 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.ShapeRenderHelper;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable; import ru.windcorp.progressia.client.graphics.model.Renderable;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizer; import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizer;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.util.Namespaced; import ru.windcorp.progressia.common.util.Namespaced;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class TileRender extends Namespaced { 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; 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 glm.vec._3.Vec3;
import ru.windcorp.progressia.client.graphics.backend.Usage; import ru.windcorp.progressia.client.graphics.backend.Usage;
import ru.windcorp.progressia.client.graphics.model.Faces; import ru.windcorp.progressia.client.graphics.model.Faces;
import ru.windcorp.progressia.client.graphics.model.Shape; import ru.windcorp.progressia.client.graphics.model.Shape;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram; 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.texture.Texture;
import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueTile; import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerCube.OpaqueTile;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.util.Vectors; import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class TileRenderGrass extends TileRender implements OpaqueTile { public class TileRenderGrass extends TileRender implements OpaqueTile {
@ -37,7 +37,7 @@ public class TileRenderGrass extends TileRender implements OpaqueTile {
} }
@Override @Override
public WorldRenderable createRenderable(BlockFace face) { public Renderable createRenderable(BlockFace face) {
ShapeRenderProgram program = WorldRenderProgram.getDefault(); ShapeRenderProgram program = WorldRenderProgram.getDefault();
Vec3 color = Vectors.grab3().set(1, 1, 1); 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 * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.tile;
import java.util.HashMap;
import java.util.Map;
import ru.windcorp.progressia.client.graphics.texture.Atlases; import ru.windcorp.progressia.client.graphics.texture.Atlases;
import ru.windcorp.progressia.client.graphics.texture.Atlases.AtlasGroup; import ru.windcorp.progressia.client.graphics.texture.Atlases.AtlasGroup;
import ru.windcorp.progressia.client.graphics.texture.SimpleTexture; import ru.windcorp.progressia.client.graphics.texture.SimpleTexture;
import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.common.resource.ResourceManager; 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 = private static final TileRenderRegistry INSTANCE = new TileRenderRegistry();
new HashMap<>();
private static final AtlasGroup TILES_ATLAS_GROUP = private static final AtlasGroup TILES_ATLAS_GROUP =
new AtlasGroup("Tiles", 1 << 12); new AtlasGroup("Tiles", 1 << 12);
private TileRenders() {} public static TileRenderRegistry getInstance() {
return INSTANCE;
public static TileRender get(String name) {
return TILE_RENDERS.get(name);
} }
public static void register(TileRender tileRender) { public static AtlasGroup getTilesAtlasGroup() {
TILE_RENDERS.put(tileRender.getId(), tileRender); return TILES_ATLAS_GROUP;
} }
public static Texture getTileTexture(String name) { 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 glm.vec._3.Vec3;
import ru.windcorp.progressia.client.graphics.backend.Usage; import ru.windcorp.progressia.client.graphics.backend.Usage;
import ru.windcorp.progressia.client.graphics.model.Faces; import ru.windcorp.progressia.client.graphics.model.Faces;
import ru.windcorp.progressia.client.graphics.model.Shape; import ru.windcorp.progressia.client.graphics.model.Shape;
import ru.windcorp.progressia.client.graphics.model.ShapeRenderProgram; 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.texture.Texture;
import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram;
import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueTile; import ru.windcorp.progressia.client.world.cro.ChunkRenderOptimizerCube.OpaqueTile;
import ru.windcorp.progressia.common.block.BlockFace;
import ru.windcorp.progressia.common.util.Vectors; import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.block.BlockFace;
public class TileRenderSimple extends TileRender implements OpaqueTile { public class TileRenderSimple extends TileRender implements OpaqueTile {
@ -32,7 +32,7 @@ public class TileRenderSimple extends TileRender implements OpaqueTile {
} }
@Override @Override
public WorldRenderable createRenderable(BlockFace face) { public Renderable createRenderable(BlockFace face) {
ShapeRenderProgram program = WorldRenderProgram.getDefault(); ShapeRenderProgram program = WorldRenderProgram.getDefault();
Vec3 color = Vectors.grab3().set(1, 1, 1); Vec3 color = Vectors.grab3().set(1, 1, 1);

View File

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

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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; 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 * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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 ru.windcorp.progressia.common.util.NamespacedRegistry;
import java.util.Map;
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) { public static BlockDataRegistry getInstance() {
return REGISTRY.get(name); return INSTANCE;
}
public static void register(BlockData blockData) {
REGISTRY.put(blockData.getId(), blockData);
} }
} }

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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; 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.abs;
import static java.lang.Math.max; import static java.lang.Math.max;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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; 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 * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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 ru.windcorp.progressia.common.util.NamespacedRegistry;
import java.util.Map;
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) { public static TileDataRegistry getInstance() {
return REGISTRY.get(name); return INSTANCE;
}
public static void register(TileData tileData) {
REGISTRY.put(tileData.getId(), tileData);
} }
} }

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; package ru.windcorp.progressia.server.world;
import glm.vec._3.i.Vec3i; 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.common.block.BlockFace; import ru.windcorp.progressia.common.world.block.BlockFace;
import ru.windcorp.progressia.common.block.TileData; import ru.windcorp.progressia.common.world.tile.TileData;
public interface Changer { public interface Changer {

View File

@ -6,9 +6,9 @@ import java.util.function.BiConsumer;
import glm.vec._3.i.Vec3i; import glm.vec._3.i.Vec3i;
import ru.windcorp.progressia.common.world.ChunkData; import ru.windcorp.progressia.common.world.ChunkData;
import ru.windcorp.progressia.server.block.BlockLogic; import ru.windcorp.progressia.server.world.block.BlockLogic;
import ru.windcorp.progressia.server.block.BlockLogicRegistry; import ru.windcorp.progressia.server.world.block.BlockLogicRegistry;
import ru.windcorp.progressia.server.block.Tickable; import ru.windcorp.progressia.server.world.block.Tickable;
public class ChunkLogic { public class ChunkLogic {
@ -63,7 +63,9 @@ public class ChunkLogic {
} }
public BlockLogic getBlock(Vec3i blockInChunk) { 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 java.util.Objects;
import glm.vec._3.i.Vec3i; 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.Packet;
import ru.windcorp.progressia.common.comms.packets.PacketWorldChange; import ru.windcorp.progressia.common.comms.packets.PacketWorldChange;
import ru.windcorp.progressia.common.util.LowOverheadCache; import ru.windcorp.progressia.common.util.LowOverheadCache;
import ru.windcorp.progressia.common.util.Vectors; import ru.windcorp.progressia.common.util.Vectors;
import ru.windcorp.progressia.common.world.Coordinates; import ru.windcorp.progressia.common.world.Coordinates;
import ru.windcorp.progressia.common.world.WorldData; 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; import ru.windcorp.progressia.server.Server;
public class ImplementedChangeTracker implements Changer { 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.util.Vectors;
import ru.windcorp.progressia.common.world.Coordinates; import ru.windcorp.progressia.common.world.Coordinates;
import ru.windcorp.progressia.server.Server; 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 { public class MutableBlockTickContext implements BlockTickContext {

View File

@ -1,7 +1,7 @@
package ru.windcorp.progressia.server.world; package ru.windcorp.progressia.server.world;
import ru.windcorp.progressia.server.Server; 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 { 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; 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 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; import ru.windcorp.progressia.server.world.ChunkTickContext;
public interface BlockTickContext extends 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 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.ChunkData;
import ru.windcorp.progressia.common.world.WorldData; 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.Server;
import ru.windcorp.progressia.server.world.ChunkLogic; import ru.windcorp.progressia.server.world.ChunkLogic;
import ru.windcorp.progressia.server.world.WorldLogic; 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; 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; import ru.windcorp.progressia.server.world.Changer;