mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-19 02:36:59 +00:00
Faster
This commit is contained in:
parent
8bf7fcff28
commit
69218b6710
@ -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);
|
||||
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user