diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java b/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java index 0717b6066..c2e679a97 100644 --- a/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java +++ b/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java @@ -29,11 +29,11 @@ import java.io.IOException; import java.util.Map; import java.util.function.Supplier; -public class PaletteOrHunk extends StorageHunk implements Hunk { +public abstract class PaletteOrHunk extends StorageHunk implements Hunk, Writable { private final Hunk hunk; - public PaletteOrHunk(int width, int height, int depth, boolean allow, Writable writable, Supplier> factory) { + public PaletteOrHunk(int width, int height, int depth, boolean allow, Supplier> factory) { super(width, height, depth); - hunk = (allow) ? new PaletteHunk<>(width, height, depth, writable) : factory.get(); + hunk = (allow) ? new PaletteHunk<>(width, height, depth, this) : factory.get(); } public DataContainer palette() diff --git a/src/main/java/com/volmit/iris/util/matter/MatterTest.java b/src/main/java/com/volmit/iris/util/matter/MatterTest.java index 54b0af432..77a45904f 100644 --- a/src/main/java/com/volmit/iris/util/matter/MatterTest.java +++ b/src/main/java/com/volmit/iris/util/matter/MatterTest.java @@ -22,53 +22,64 @@ import com.volmit.iris.Iris; import com.volmit.iris.engine.object.NoiseStyle; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.data.palette.PalettedContainer; +import com.volmit.iris.util.hunk.bits.DataContainer; +import com.volmit.iris.util.hunk.bits.Writable; import com.volmit.iris.util.io.IO; import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.noise.CNG; import org.checkerframework.checker.units.qual.K; +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; import java.util.Arrays; import java.util.List; public class MatterTest { public static void test() { - CNG cng = NoiseStyle.STATIC.create(new RNG(1337)); - PalettedContainer p = new PalettedContainer<>(); - - for(int i = 0; i < 16; i++) + try { - for(int j = 0; j < 16; j++) - { - for(int k = 0; k < 16; k++) - { - p.set(i,j,k,cng.fit(1, 3, i,j,k)); + CNG cng = NoiseStyle.STATIC.create(new RNG(1337)); + Writable ffs = new Writable() { + @Override + public Integer readNodeData(DataInputStream din) throws IOException { + return din.readInt(); } + + @Override + public void writeNodeData(DataOutputStream dos, Integer integer) throws IOException { + dos.writeInt(integer); + } + }; + DataContainer p = new DataContainer<>(ffs, 32); + + for(int i = 0; i < 32; i++) + { + p.set(i,cng.fit(1, 7, i, i * 2)); + } + + byte[] dat = p.write(); + Iris.info("RAW DATA: " + IO.bytesToHex(dat)); + + DataContainer f = DataContainer.read(new ByteArrayInputStream(dat), ffs); + byte[] d2 = f.write(); + if(Arrays.equals(dat, d2)) + { + Iris.info("Correct! All data matches!"); + } + + else + { + Iris.warn("No match"); + Iris.error("RAW DATA: " + IO.bytesToHex(d2)); } } - KList palette = new KList<>(); - long[] data = p.write(palette); - - Iris.info("RAW PALE: " + palette.toString(",")); - Iris.info("RAW DATA: " + IO.longsToHex(data)); - - PalettedContainer px = new PalettedContainer<>(); - px.read(palette, data); - - KList palette2 = new KList<>(); - long[] data2 = px.write(palette); - - if(Arrays.equals(data, data2)) + catch(Throwable e) { - Iris.info("Correct! All data matches!"); - } - - else - { - Iris.warn("No match"); - Iris.error("RAW PALE: " + palette2.toString(",")); - Iris.error("RAW DATA: " + IO.longsToHex(data2)); + e.printStackTrace(); } } } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/RawMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/RawMatter.java index 40fcc644b..15ebb07ba 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/RawMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/RawMatter.java @@ -19,6 +19,7 @@ package com.volmit.iris.util.matter.slices; import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.hunk.bits.Writable; import com.volmit.iris.util.hunk.storage.MappedHunk; import com.volmit.iris.util.hunk.storage.PaletteOrHunk; import com.volmit.iris.util.matter.MatterReader; @@ -37,7 +38,7 @@ public abstract class RawMatter extends PaletteOrHunk implements MatterSli private final Class type; public RawMatter(int width, int height, int depth, Class type) { - super(width, height, depth, false, this, () -> new MappedHunk<>(width, height, depth)); + super(width, height, depth, false, () -> new MappedHunk<>(width, height, depth)); writers = new KMap<>(); readers = new KMap<>(); this.type = type;