Still busted. Build at your own risk

This commit is contained in:
cyberpwn 2021-09-23 10:56:22 -04:00
parent 1628652264
commit e19784a429
3 changed files with 46 additions and 34 deletions

View File

@ -29,11 +29,11 @@ import java.io.IOException;
import java.util.Map; import java.util.Map;
import java.util.function.Supplier; import java.util.function.Supplier;
public class PaletteOrHunk<T> extends StorageHunk<T> implements Hunk<T> { public abstract class PaletteOrHunk<T> extends StorageHunk<T> implements Hunk<T>, Writable<T> {
private final Hunk<T> hunk; private final Hunk<T> hunk;
public PaletteOrHunk(int width, int height, int depth, boolean allow, Writable<T> writable, Supplier<Hunk<T>> factory) { public PaletteOrHunk(int width, int height, int depth, boolean allow, Supplier<Hunk<T>> factory) {
super(width, height, depth); 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<T> palette() public DataContainer<T> palette()

View File

@ -22,53 +22,64 @@ import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.NoiseStyle; import com.volmit.iris.engine.object.NoiseStyle;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.data.palette.PalettedContainer; 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.io.IO;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.noise.CNG; import com.volmit.iris.util.noise.CNG;
import org.checkerframework.checker.units.qual.K; 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.Arrays;
import java.util.List; import java.util.List;
public class MatterTest { public class MatterTest {
public static void test() public static void test()
{ {
CNG cng = NoiseStyle.STATIC.create(new RNG(1337)); try
PalettedContainer<Integer> p = new PalettedContainer<>();
for(int i = 0; i < 16; i++)
{ {
for(int j = 0; j < 16; j++) CNG cng = NoiseStyle.STATIC.create(new RNG(1337));
{ Writable<Integer> ffs = new Writable<Integer>() {
for(int k = 0; k < 16; k++) @Override
{ public Integer readNodeData(DataInputStream din) throws IOException {
p.set(i,j,k,cng.fit(1, 3, i,j,k)); return din.readInt();
} }
@Override
public void writeNodeData(DataOutputStream dos, Integer integer) throws IOException {
dos.writeInt(integer);
}
};
DataContainer<Integer> 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<Integer> 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<Integer> palette = new KList<>(); catch(Throwable e)
long[] data = p.write(palette);
Iris.info("RAW PALE: " + palette.toString(","));
Iris.info("RAW DATA: " + IO.longsToHex(data));
PalettedContainer<Integer> px = new PalettedContainer<>();
px.read(palette, data);
KList<Integer> palette2 = new KList<>();
long[] data2 = px.write(palette);
if(Arrays.equals(data, data2))
{ {
Iris.info("Correct! All data matches!"); e.printStackTrace();
}
else
{
Iris.warn("No match");
Iris.error("RAW PALE: " + palette2.toString(","));
Iris.error("RAW DATA: " + IO.longsToHex(data2));
} }
} }
} }

View File

@ -19,6 +19,7 @@
package com.volmit.iris.util.matter.slices; package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.collection.KMap; 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.MappedHunk;
import com.volmit.iris.util.hunk.storage.PaletteOrHunk; import com.volmit.iris.util.hunk.storage.PaletteOrHunk;
import com.volmit.iris.util.matter.MatterReader; import com.volmit.iris.util.matter.MatterReader;
@ -37,7 +38,7 @@ public abstract class RawMatter<T> extends PaletteOrHunk<T> implements MatterSli
private final Class<T> type; private final Class<T> type;
public RawMatter(int width, int height, int depth, Class<T> type) { public RawMatter(int width, int height, int depth, Class<T> 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<>(); writers = new KMap<>();
readers = new KMap<>(); readers = new KMap<>();
this.type = type; this.type = type;