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