From 3ba7c1828864f30fbea62d0a2b0dfb915a5c818f Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Wed, 22 Sep 2021 08:55:45 -0400 Subject: [PATCH] Revert "Drop it " This reverts commit cc66e7e7c843e295f999b23b7fa8258c2ec9dbea. --- .../volmit/iris/util/matter/MatterSlice.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/main/java/com/volmit/iris/util/matter/MatterSlice.java b/src/main/java/com/volmit/iris/util/matter/MatterSlice.java index ca81a1436..c35797b0c 100644 --- a/src/main/java/com/volmit/iris/util/matter/MatterSlice.java +++ b/src/main/java/com/volmit/iris/util/matter/MatterSlice.java @@ -152,6 +152,27 @@ public interface MatterSlice extends Hunk, PaletteType { default void write(DataOutputStream dos) throws IOException { dos.writeUTF(getType().getCanonicalName()); + if(IrisSettings.get().getPerformance().isUseExperimentalMantleMemoryCompression() && (this instanceof PaletteOrHunk f && f.isPalette())) + { + PalettedContainer c = f.palette(); + List palette = new ArrayList<>(); + long[] data = c.write(palette); + + Varint.writeUnsignedVarInt(palette.size(), dos); + for(T i : palette) + { + writeNode(i, dos); + } + + Varint.writeUnsignedVarInt(data.length, dos); + for(long i : data) + { + dos.writeLong(i); + } + + return; + } + int w = getWidth(); int h = getHeight(); MatterPalette palette = new MatterPalette(this); @@ -171,6 +192,29 @@ public interface MatterSlice extends Hunk, PaletteType { } default void read(DataInputStream din) throws IOException { + if(IrisSettings.get().getPerformance().isUseExperimentalMantleMemoryCompression() && (this instanceof PaletteOrHunk f && f.isPalette())) + { + PalettedContainer c = new PalettedContainer<>(); + List palette = new ArrayList<>(); + int ps = Varint.readUnsignedVarInt(din); + + for(int i = 0; i < ps; i++) + { + palette.add(readNode(din)); + } + + int ds = Varint.readUnsignedVarInt(din); + long[] data = new long[ds]; + for(int i = 0; i < ds; i++) + { + data[i] = din.readLong(); + } + + c.read(palette, data); + + return; + } + int w = getWidth(); int h = getHeight(); MatterPalette palette = new MatterPalette(this, din);