mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-19 18:55:18 +00:00
Parallax engine impl
This commit is contained in:
parent
c7c1b2b8c1
commit
1173c3d053
@ -33,6 +33,7 @@ public class IrisEngine implements Engine
|
|||||||
@Override
|
@Override
|
||||||
public void generate(int x, int z, Hunk<BlockData> blocks, Hunk<Biome> biomes) {
|
public void generate(int x, int z, Hunk<BlockData> blocks, Hunk<Biome> biomes) {
|
||||||
MultiBurst.burst.burst(
|
MultiBurst.burst.burst(
|
||||||
|
() -> getFramework().getEngineParallax().generateParallaxArea(x, z),
|
||||||
() -> blocks.compute2D(getParallelism(), (xx,yy,zz, b) -> {
|
() -> blocks.compute2D(getParallelism(), (xx,yy,zz, b) -> {
|
||||||
getFramework().getTerrainActuator().actuate(x+xx, z+zz, b);
|
getFramework().getTerrainActuator().actuate(x+xx, z+zz, b);
|
||||||
getFramework().getDecorantActuator().actuate(x+xx, z+zz, b);
|
getFramework().getDecorantActuator().actuate(x+xx, z+zz, b);
|
||||||
@ -41,5 +42,9 @@ public class IrisEngine implements Engine
|
|||||||
getFramework().getBiomeActuator().actuate(x+xx, z+zz, b);
|
getFramework().getBiomeActuator().actuate(x+xx, z+zz, b);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
getFramework().getEngineParallax().insertParallax(x, z, blocks);
|
||||||
|
System.out.println("Regions: " + getParallax().getRegionCount() + ", Chunks: " + getParallax().getChunkCount());
|
||||||
|
getParallax().cleanup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,8 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.craftbukkit.v1_16_R2.generator.CraftChunkData;
|
import org.bukkit.craftbukkit.v1_16_R2.generator.CraftChunkData;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.world.WorldSaveEvent;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@ -72,6 +74,17 @@ public class IrisEngineCompound implements EngineCompound {
|
|||||||
engines[i] = new IrisEngine(new EngineTarget(world, dimension, data.copy().preferFolder(rootDimension.getLoadKey()), (int)Math.floor(256D * (index.getWeight() / totalWeight)), index.isInverted(), threadDist));
|
engines[i] = new IrisEngine(new EngineTarget(world, dimension, data.copy().preferFolder(rootDimension.getLoadKey()), (int)Math.floor(256D * (index.getWeight() / totalWeight)), index.isInverted(), threadDist));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Iris.instance.registerListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void on(WorldSaveEvent e)
|
||||||
|
{
|
||||||
|
if(world != null &&e.getWorld().equals(world))
|
||||||
|
{
|
||||||
|
save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private File getEngineMetadataFile() {
|
private File getEngineMetadataFile() {
|
||||||
|
@ -1,22 +1,34 @@
|
|||||||
package com.volmit.iris.v2.generator;
|
package com.volmit.iris.v2.generator;
|
||||||
|
|
||||||
|
import com.volmit.iris.Iris;
|
||||||
|
import com.volmit.iris.manager.IrisDataManager;
|
||||||
|
import com.volmit.iris.object.IrisBiome;
|
||||||
|
import com.volmit.iris.object.IrisObjectPlacement;
|
||||||
|
import com.volmit.iris.util.B;
|
||||||
|
import com.volmit.iris.util.IObjectPlacer;
|
||||||
|
import com.volmit.iris.util.RNG;
|
||||||
import com.volmit.iris.v2.generator.actuator.IrisBiomeActuator;
|
import com.volmit.iris.v2.generator.actuator.IrisBiomeActuator;
|
||||||
import com.volmit.iris.v2.generator.actuator.IrisDecorantActuator;
|
import com.volmit.iris.v2.generator.actuator.IrisDecorantActuator;
|
||||||
import com.volmit.iris.v2.generator.actuator.IrisTerrainActuator;
|
import com.volmit.iris.v2.generator.actuator.IrisTerrainActuator;
|
||||||
import com.volmit.iris.v2.scaffold.engine.Engine;
|
import com.volmit.iris.v2.scaffold.engine.Engine;
|
||||||
import com.volmit.iris.v2.scaffold.engine.EngineActuator;
|
import com.volmit.iris.v2.scaffold.engine.EngineActuator;
|
||||||
import com.volmit.iris.v2.scaffold.engine.EngineFramework;
|
import com.volmit.iris.v2.scaffold.engine.EngineFramework;
|
||||||
|
import com.volmit.iris.v2.scaffold.engine.EngineParallax;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
public class IrisEngineFramework implements EngineFramework {
|
public class IrisEngineFramework implements EngineFramework {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final Engine engine;
|
private final Engine engine;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final IrisComplex complex;
|
private final IrisComplex complex;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
final EngineParallax engineParallax;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final EngineActuator<BlockData> terrainActuator;
|
private final EngineActuator<BlockData> terrainActuator;
|
||||||
|
|
||||||
@ -30,8 +42,9 @@ public class IrisEngineFramework implements EngineFramework {
|
|||||||
{
|
{
|
||||||
this.engine = engine;
|
this.engine = engine;
|
||||||
this.complex = new IrisComplex(getEngine());
|
this.complex = new IrisComplex(getEngine());
|
||||||
terrainActuator = new IrisTerrainActuator(getEngine());
|
this.engineParallax = new IrisEngineParallax(getEngine());
|
||||||
decorantActuator = new IrisDecorantActuator(getEngine());
|
this.terrainActuator = new IrisTerrainActuator(getEngine());
|
||||||
biomeActuator = new IrisBiomeActuator(getEngine());
|
this.decorantActuator = new IrisDecorantActuator(getEngine());
|
||||||
|
this.biomeActuator = new IrisBiomeActuator(getEngine());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.volmit.iris.v2.generator;
|
||||||
|
|
||||||
|
import com.volmit.iris.v2.scaffold.engine.Engine;
|
||||||
|
import com.volmit.iris.v2.scaffold.engine.EngineFramework;
|
||||||
|
import com.volmit.iris.v2.scaffold.engine.EngineParallax;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
public class IrisEngineParallax implements EngineParallax {
|
||||||
|
@Getter
|
||||||
|
private final Engine engine;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private final int parallaxSize;
|
||||||
|
|
||||||
|
public IrisEngineParallax(Engine engine)
|
||||||
|
{
|
||||||
|
this.engine = engine;
|
||||||
|
parallaxSize = computeParallaxSize();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user