/* * Iris is a World Generator for Minecraft Bukkit Servers * Copyright (c) 2021 Arcane Arts (Volmit Software) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package com.volmit.iris.engine; import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap; import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.framework.EngineParallaxManager; import com.volmit.iris.engine.object.IrisFeaturePositional; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.scheduling.IrisLock; import lombok.Getter; public class IrisEngineParallax implements EngineParallaxManager { @Getter private final Engine engine; @Getter private final int parallaxSize; @Getter private final IrisLock featureLock = new IrisLock("Feature"); @Getter private final ConcurrentLinkedHashMap> featureCache = new ConcurrentLinkedHashMap.Builder>() .initialCapacity(1024) .maximumWeightedCapacity(1024) .concurrencyLevel(32) .build(); public IrisEngineParallax(Engine engine) { this.engine = engine; parallaxSize = computeParallaxSize(); } }