mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/4jcraft.git
synced 2026-06-04 07:36:39 +00:00
chore: format Minecraft.World
This commit is contained in:
@@ -5,162 +5,146 @@
|
||||
#include "BiomeCache.h"
|
||||
#include "../../Platform/System.h"
|
||||
|
||||
BiomeCache::Block::Block(int x, int z, BiomeCache *parent)
|
||||
{
|
||||
// temps = floatArray(ZONE_SIZE * ZONE_SIZE, false); // MGH - added "no clear" flag to arrayWithLength
|
||||
// downfall = floatArray(ZONE_SIZE * ZONE_SIZE, false);
|
||||
// biomes = BiomeArray(ZONE_SIZE * ZONE_SIZE, false);
|
||||
biomeIndices = byteArray(ZONE_SIZE * ZONE_SIZE, false);
|
||||
|
||||
lastUse = 0;
|
||||
this->x = x;
|
||||
this->z = z;
|
||||
// parent->source->getTemperatureBlock(temps, x << ZONE_SIZE_BITS, z << ZONE_SIZE_BITS, ZONE_SIZE, ZONE_SIZE);
|
||||
// parent->source->getDownfallBlock(downfall, x << ZONE_SIZE_BITS, z << ZONE_SIZE_BITS, ZONE_SIZE, ZONE_SIZE);
|
||||
// parent->source->getBiomeBlock(biomes, x << ZONE_SIZE_BITS, z << ZONE_SIZE_BITS, ZONE_SIZE, ZONE_SIZE, false);
|
||||
// 4jcraft added cast to unsigned
|
||||
parent->source->getBiomeIndexBlock(biomeIndices, (unsigned) x << ZONE_SIZE_BITS, (unsigned) z << ZONE_SIZE_BITS, ZONE_SIZE, ZONE_SIZE, false);
|
||||
BiomeCache::Block::Block(int x, int z, BiomeCache* parent) {
|
||||
// temps = floatArray(ZONE_SIZE * ZONE_SIZE, false); // MGH -
|
||||
// added "no clear" flag to arrayWithLength downfall = floatArray(ZONE_SIZE
|
||||
// * ZONE_SIZE, false); biomes = BiomeArray(ZONE_SIZE * ZONE_SIZE, false);
|
||||
biomeIndices = byteArray(ZONE_SIZE * ZONE_SIZE, false);
|
||||
|
||||
lastUse = 0;
|
||||
this->x = x;
|
||||
this->z = z;
|
||||
// parent->source->getTemperatureBlock(temps, x << ZONE_SIZE_BITS, z <<
|
||||
// ZONE_SIZE_BITS, ZONE_SIZE, ZONE_SIZE);
|
||||
// parent->source->getDownfallBlock(downfall, x << ZONE_SIZE_BITS, z <<
|
||||
// ZONE_SIZE_BITS, ZONE_SIZE, ZONE_SIZE);
|
||||
// parent->source->getBiomeBlock(biomes, x << ZONE_SIZE_BITS, z <<
|
||||
// ZONE_SIZE_BITS, ZONE_SIZE, ZONE_SIZE, false); 4jcraft added cast to
|
||||
// unsigned
|
||||
parent->source->getBiomeIndexBlock(
|
||||
biomeIndices, (unsigned)x << ZONE_SIZE_BITS,
|
||||
(unsigned)z << ZONE_SIZE_BITS, ZONE_SIZE, ZONE_SIZE, false);
|
||||
}
|
||||
|
||||
BiomeCache::Block::~Block()
|
||||
{
|
||||
// delete [] temps.data;
|
||||
// delete [] downfall.data;
|
||||
// delete [] biomes.data;
|
||||
delete [] biomeIndices.data;
|
||||
BiomeCache::Block::~Block() {
|
||||
// delete [] temps.data;
|
||||
// delete [] downfall.data;
|
||||
// delete [] biomes.data;
|
||||
delete[] biomeIndices.data;
|
||||
}
|
||||
|
||||
Biome *BiomeCache::Block::getBiome(int x, int z)
|
||||
{
|
||||
// return biomes[(x & ZONE_SIZE_MASK) | ((z & ZONE_SIZE_MASK) << ZONE_SIZE_BITS)];
|
||||
Biome* BiomeCache::Block::getBiome(int x, int z) {
|
||||
// return biomes[(x & ZONE_SIZE_MASK) | ((z & ZONE_SIZE_MASK) <<
|
||||
//ZONE_SIZE_BITS)];
|
||||
|
||||
int biomeIndex = biomeIndices[(x & ZONE_SIZE_MASK) | ((z & ZONE_SIZE_MASK) << ZONE_SIZE_BITS)];
|
||||
return Biome::biomes[biomeIndex];
|
||||
int biomeIndex = biomeIndices[(x & ZONE_SIZE_MASK) |
|
||||
((z & ZONE_SIZE_MASK) << ZONE_SIZE_BITS)];
|
||||
return Biome::biomes[biomeIndex];
|
||||
}
|
||||
|
||||
float BiomeCache::Block::getTemperature(int x, int z)
|
||||
{
|
||||
// return temps[(x & ZONE_SIZE_MASK) | ((z & ZONE_SIZE_MASK) << ZONE_SIZE_BITS)];
|
||||
|
||||
int biomeIndex = biomeIndices[(x & ZONE_SIZE_MASK) | ((z & ZONE_SIZE_MASK) << ZONE_SIZE_BITS)];
|
||||
return Biome::biomes[biomeIndex]->getTemperature();
|
||||
float BiomeCache::Block::getTemperature(int x, int z) {
|
||||
// return temps[(x & ZONE_SIZE_MASK) | ((z & ZONE_SIZE_MASK) <<
|
||||
//ZONE_SIZE_BITS)];
|
||||
|
||||
int biomeIndex = biomeIndices[(x & ZONE_SIZE_MASK) |
|
||||
((z & ZONE_SIZE_MASK) << ZONE_SIZE_BITS)];
|
||||
return Biome::biomes[biomeIndex]->getTemperature();
|
||||
}
|
||||
|
||||
float BiomeCache::Block::getDownfall(int x, int z)
|
||||
{
|
||||
// return downfall[(x & ZONE_SIZE_MASK) | ((z & ZONE_SIZE_MASK) << ZONE_SIZE_BITS)];
|
||||
|
||||
int biomeIndex = biomeIndices[(x & ZONE_SIZE_MASK) | ((z & ZONE_SIZE_MASK) << ZONE_SIZE_BITS)];
|
||||
return Biome::biomes[biomeIndex]->getDownfall();
|
||||
float BiomeCache::Block::getDownfall(int x, int z) {
|
||||
// return downfall[(x & ZONE_SIZE_MASK) | ((z & ZONE_SIZE_MASK) <<
|
||||
// ZONE_SIZE_BITS)];
|
||||
|
||||
int biomeIndex = biomeIndices[(x & ZONE_SIZE_MASK) |
|
||||
((z & ZONE_SIZE_MASK) << ZONE_SIZE_BITS)];
|
||||
return Biome::biomes[biomeIndex]->getDownfall();
|
||||
}
|
||||
|
||||
BiomeCache::BiomeCache(BiomeSource *source)
|
||||
{
|
||||
// 4J Initialisors
|
||||
lastUpdateTime = 0;
|
||||
BiomeCache::BiomeCache(BiomeSource* source) {
|
||||
// 4J Initialisors
|
||||
lastUpdateTime = 0;
|
||||
|
||||
this->source = source;
|
||||
|
||||
InitializeCriticalSection(&m_CS);
|
||||
this->source = source;
|
||||
|
||||
InitializeCriticalSection(&m_CS);
|
||||
}
|
||||
|
||||
BiomeCache::~BiomeCache()
|
||||
{
|
||||
// 4J Stu - Delete source?
|
||||
// delete source;
|
||||
BiomeCache::~BiomeCache() {
|
||||
// 4J Stu - Delete source?
|
||||
// delete source;
|
||||
|
||||
for(AUTO_VAR(it, all.begin()); it != all.end(); ++it)
|
||||
{
|
||||
delete (*it);
|
||||
}
|
||||
DeleteCriticalSection(&m_CS);
|
||||
for (AUTO_VAR(it, all.begin()); it != all.end(); ++it) {
|
||||
delete (*it);
|
||||
}
|
||||
DeleteCriticalSection(&m_CS);
|
||||
}
|
||||
|
||||
|
||||
BiomeCache::Block *BiomeCache::getBlockAt(int x, int z)
|
||||
{
|
||||
EnterCriticalSection(&m_CS);
|
||||
x >>= ZONE_SIZE_BITS;
|
||||
z >>= ZONE_SIZE_BITS;
|
||||
__int64 slot = (((__int64) x) & 0xffffffffl) | ((((__int64) z) & 0xffffffffl) << 32l);
|
||||
AUTO_VAR(it, cached.find(slot));
|
||||
Block *block = NULL;
|
||||
if (it == cached.end())
|
||||
{
|
||||
MemSect(48);
|
||||
block = new Block(x, z, this);
|
||||
cached[slot] = block;
|
||||
all.push_back(block);
|
||||
MemSect(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
block = it->second;
|
||||
}
|
||||
block->lastUse = app.getAppTime();
|
||||
LeaveCriticalSection(&m_CS);
|
||||
return block;
|
||||
BiomeCache::Block* BiomeCache::getBlockAt(int x, int z) {
|
||||
EnterCriticalSection(&m_CS);
|
||||
x >>= ZONE_SIZE_BITS;
|
||||
z >>= ZONE_SIZE_BITS;
|
||||
__int64 slot =
|
||||
(((__int64)x) & 0xffffffffl) | ((((__int64)z) & 0xffffffffl) << 32l);
|
||||
AUTO_VAR(it, cached.find(slot));
|
||||
Block* block = NULL;
|
||||
if (it == cached.end()) {
|
||||
MemSect(48);
|
||||
block = new Block(x, z, this);
|
||||
cached[slot] = block;
|
||||
all.push_back(block);
|
||||
MemSect(0);
|
||||
} else {
|
||||
block = it->second;
|
||||
}
|
||||
block->lastUse = app.getAppTime();
|
||||
LeaveCriticalSection(&m_CS);
|
||||
return block;
|
||||
}
|
||||
|
||||
|
||||
Biome *BiomeCache::getBiome(int x, int z)
|
||||
{
|
||||
return getBlockAt(x, z)->getBiome(x, z);
|
||||
Biome* BiomeCache::getBiome(int x, int z) {
|
||||
return getBlockAt(x, z)->getBiome(x, z);
|
||||
}
|
||||
|
||||
float BiomeCache::getTemperature(int x, int z)
|
||||
{
|
||||
return getBlockAt(x, z)->getTemperature(x, z);
|
||||
float BiomeCache::getTemperature(int x, int z) {
|
||||
return getBlockAt(x, z)->getTemperature(x, z);
|
||||
}
|
||||
|
||||
float BiomeCache::getDownfall(int x, int z)
|
||||
{
|
||||
return getBlockAt(x, z)->getDownfall(x, z);
|
||||
float BiomeCache::getDownfall(int x, int z) {
|
||||
return getBlockAt(x, z)->getDownfall(x, z);
|
||||
}
|
||||
|
||||
void BiomeCache::update()
|
||||
{
|
||||
EnterCriticalSection(&m_CS);
|
||||
__int64 now = app.getAppTime();
|
||||
__int64 utime = now - lastUpdateTime;
|
||||
if (utime > DECAY_TIME / 4 || utime < 0)
|
||||
{
|
||||
lastUpdateTime = now;
|
||||
void BiomeCache::update() {
|
||||
EnterCriticalSection(&m_CS);
|
||||
__int64 now = app.getAppTime();
|
||||
__int64 utime = now - lastUpdateTime;
|
||||
if (utime > DECAY_TIME / 4 || utime < 0) {
|
||||
lastUpdateTime = now;
|
||||
|
||||
for (AUTO_VAR(it, all.begin()); it != all.end();)
|
||||
{
|
||||
Block *block = *it;
|
||||
__int64 time = now - block->lastUse;
|
||||
if (time > DECAY_TIME || time < 0)
|
||||
{
|
||||
it = all.erase(it);
|
||||
__int64 slot = (((__int64) block->x) & 0xffffffffl) | ((((__int64) block->z) & 0xffffffffl) << 32l);
|
||||
cached.erase(slot);
|
||||
delete block;
|
||||
}
|
||||
else
|
||||
{
|
||||
++it;
|
||||
}
|
||||
}
|
||||
}
|
||||
LeaveCriticalSection(&m_CS);
|
||||
for (AUTO_VAR(it, all.begin()); it != all.end();) {
|
||||
Block* block = *it;
|
||||
__int64 time = now - block->lastUse;
|
||||
if (time > DECAY_TIME || time < 0) {
|
||||
it = all.erase(it);
|
||||
__int64 slot = (((__int64)block->x) & 0xffffffffl) |
|
||||
((((__int64)block->z) & 0xffffffffl) << 32l);
|
||||
cached.erase(slot);
|
||||
delete block;
|
||||
} else {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
}
|
||||
LeaveCriticalSection(&m_CS);
|
||||
}
|
||||
|
||||
BiomeArray BiomeCache::getBiomeBlockAt(int x, int z)
|
||||
{
|
||||
byteArray indices = getBlockAt(x, z)->biomeIndices;
|
||||
BiomeArray biomes(indices.length);
|
||||
for(int i=0;i<indices.length;i++)
|
||||
biomes[i] = Biome::biomes[indices[i]];
|
||||
return biomes;
|
||||
BiomeArray BiomeCache::getBiomeBlockAt(int x, int z) {
|
||||
byteArray indices = getBlockAt(x, z)->biomeIndices;
|
||||
BiomeArray biomes(indices.length);
|
||||
for (int i = 0; i < indices.length; i++)
|
||||
biomes[i] = Biome::biomes[indices[i]];
|
||||
return biomes;
|
||||
}
|
||||
|
||||
byteArray BiomeCache::getBiomeIndexBlockAt(int x, int z)
|
||||
{
|
||||
return getBlockAt(x, z)->biomeIndices;
|
||||
byteArray BiomeCache::getBiomeIndexBlockAt(int x, int z) {
|
||||
return getBlockAt(x, z)->biomeIndices;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user