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(); 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); 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.Iris;
import com.volmit.iris.gen.ContextualChunkGenerator; import com.volmit.iris.gen.ContextualChunkGenerator;
import com.volmit.iris.gen.ParallelChunkGenerator;
import com.volmit.iris.gen.PostBlockChunkGenerator; import com.volmit.iris.gen.PostBlockChunkGenerator;
import com.volmit.iris.gen.atomics.AtomicCache; import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG; 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.ChunkPosition;
import com.volmit.iris.util.Desc; import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate; 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.IrisPostBlockFilter;
import com.volmit.iris.util.J;
import com.volmit.iris.util.KList; import com.volmit.iris.util.KList;
import com.volmit.iris.util.KSet; import com.volmit.iris.util.KSet;
import com.volmit.iris.util.MaxNumber; import com.volmit.iris.util.MaxNumber;
import com.volmit.iris.util.MinNumber; import com.volmit.iris.util.MinNumber;
import com.volmit.iris.util.O;
import com.volmit.iris.util.RNG; import com.volmit.iris.util.RNG;
import com.volmit.iris.util.RegistryListBiome; import com.volmit.iris.util.RegistryListBiome;
import com.volmit.iris.util.RegistryListRegion; import com.volmit.iris.util.RegistryListRegion;
@ -608,12 +613,15 @@ public class IrisDimension extends IrisRegistrant
return r; return r;
} }
public ChunkPosition getParallaxSize(ContextualChunkGenerator g) public ChunkPosition getParallaxSize(ParallelChunkGenerator g)
{ {
return parallaxSize.aquire(() -> return parallaxSize.aquire(() ->
{ {
int x = 0; Iris.info("Calculating the Parallax Size in Parallel");
int z = 0; O<Integer> xg = new O<>();
O<Integer> zg = new O<>();
xg.set(0);
zg.set(0);
KSet<String> objects = new KSet<>(); KSet<String> objects = new KSet<>();
KList<IrisRegion> r = getAllRegions(g); 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) for(String i : objects)
{
g.getAccelerant().queue("tx-psize", () ->
{ {
try try
{ {
BlockVector bv = IrisObject.sampleSize(g.getData().getObjectLoader().findFile(i)); BlockVector bv = IrisObject.sampleSize(g.getData().getObjectLoader().findFile(i));
x = bv.getBlockX() > x ? bv.getBlockX() : x; t.lock();
z = bv.getBlockZ() > z ? bv.getBlockZ() : z; 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()) for(IrisDepositGenerator i : getDeposits())
{ {
int max = i.getMaxDimension(); int max = i.getMaxDimension();
@ -673,7 +696,7 @@ public class IrisDimension extends IrisRegistrant
z = (Math.max(z, 16) + 16) >> 4; z = (Math.max(z, 16) + 16) >> 4;
x = x % 2 == 0 ? x + 1 : x; x = x % 2 == 0 ? x + 1 : x;
z = z % 2 == 0 ? z + 1 : z; 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); return new ChunkPosition(x, z);
}); });
} }