This commit is contained in:
Daniel Mills 2020-08-22 11:27:06 -04:00
parent 8bf7fcff28
commit 69218b6710
2 changed files with 37 additions and 12 deletions

View File

@ -44,6 +44,8 @@ public abstract class ParallelChunkGenerator extends DimensionChunkGenerator
{
e.close();
}
Iris.info("Thread Count changed to " + tc);
}
protected abstract void onGenerateColumn(int cx, int cz, int wx, int wz, int x, int z, AtomicSliver sliver, BiomeMap biomeMap, boolean sampled);

View File

@ -7,6 +7,7 @@ import org.bukkit.util.BlockVector;
import com.volmit.iris.Iris;
import com.volmit.iris.gen.ContextualChunkGenerator;
import com.volmit.iris.gen.ParallelChunkGenerator;
import com.volmit.iris.gen.PostBlockChunkGenerator;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG;
@ -15,11 +16,15 @@ import com.volmit.iris.util.B;
import com.volmit.iris.util.ChunkPosition;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.Form;
import com.volmit.iris.util.IrisLock;
import com.volmit.iris.util.IrisPostBlockFilter;
import com.volmit.iris.util.J;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.KSet;
import com.volmit.iris.util.MaxNumber;
import com.volmit.iris.util.MinNumber;
import com.volmit.iris.util.O;
import com.volmit.iris.util.RNG;
import com.volmit.iris.util.RegistryListBiome;
import com.volmit.iris.util.RegistryListRegion;
@ -608,12 +613,15 @@ public class IrisDimension extends IrisRegistrant
return r;
}
public ChunkPosition getParallaxSize(ContextualChunkGenerator g)
public ChunkPosition getParallaxSize(ParallelChunkGenerator g)
{
return parallaxSize.aquire(() ->
{
int x = 0;
int z = 0;
Iris.info("Calculating the Parallax Size in Parallel");
O<Integer> xg = new O<>();
O<Integer> zg = new O<>();
xg.set(0);
zg.set(0);
KSet<String> objects = new KSet<>();
KList<IrisRegion> r = getAllRegions(g);
@ -627,21 +635,36 @@ public class IrisDimension extends IrisRegistrant
}
}
IrisLock t = new IrisLock("t");
Iris.verbose("Checking sizes for " + Form.f(objects.size()) + " referenced objects.");
int tc = g.getThreads();
g.changeThreadCount(64);
for(String i : objects)
{
try
g.getAccelerant().queue("tx-psize", () ->
{
BlockVector bv = IrisObject.sampleSize(g.getData().getObjectLoader().findFile(i));
x = bv.getBlockX() > x ? bv.getBlockX() : x;
z = bv.getBlockZ() > z ? bv.getBlockZ() : z;
}
try
{
BlockVector bv = IrisObject.sampleSize(g.getData().getObjectLoader().findFile(i));
t.lock();
xg.set(bv.getBlockX() > xg.get() ? bv.getBlockX() : xg.get());
zg.set(bv.getBlockZ() > zg.get() ? bv.getBlockZ() : zg.get());
t.unlock();
}
catch(Throwable e)
{
catch(Throwable e)
{
}
}
});
}
g.getAccelerant().waitFor("tx-psize");
g.changeThreadCount(tc);
int x = xg.get();
int z = zg.get();
for(IrisDepositGenerator i : getDeposits())
{
int max = i.getMaxDimension();
@ -673,7 +696,7 @@ public class IrisDimension extends IrisRegistrant
z = (Math.max(z, 16) + 16) >> 4;
x = x % 2 == 0 ? x + 1 : x;
z = z % 2 == 0 ? z + 1 : z;
Iris.info("Parallax Size: " + x + ", " + z);
Iris.info("Done! Parallax Size: " + x + ", " + z);
return new ChunkPosition(x, z);
});
}