mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-27 16:53:37 +00:00
Merge pull request #306 from Merc6/refactor/remove-int-cache
refactor: remove integer caching
This commit is contained in:
commit
4a2b05f4e0
|
|
@ -61,7 +61,6 @@
|
|||
#include "../Minecraft.World/Headers/net.minecraft.world.entity.animal.h"
|
||||
#include "../Minecraft.World/Headers/net.minecraft.world.entity.monster.h"
|
||||
#include "../Minecraft.World/WorldGen/Features/StrongholdFeature.h"
|
||||
#include "../Minecraft.World/Util/IntCache.h"
|
||||
#include "../Minecraft.World/Entities/Mobs/Villager.h"
|
||||
#include "../Minecraft.World/Level/Storage/SparseLightStorage.h"
|
||||
#include "../Minecraft.World/Level/Storage/SparseDataStorage.h"
|
||||
|
|
@ -2078,9 +2077,11 @@ void Minecraft::run_middle() {
|
|||
// If there's an unoccupied quadrant, then clear that to black
|
||||
if (unoccupiedQuadrant > -1) {
|
||||
// render a logo
|
||||
RenderManager.StateSetViewport((C4JRender::eViewportType)(
|
||||
C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT +
|
||||
unoccupiedQuadrant));
|
||||
RenderManager.StateSetViewport((
|
||||
C4JRender::
|
||||
eViewportType)(C4JRender::
|
||||
VIEWPORT_TYPE_QUADRANT_TOP_LEFT +
|
||||
unoccupiedQuadrant));
|
||||
glClearColor(0, 0, 0, 0);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
|
|
@ -2400,7 +2401,6 @@ void Minecraft::levelTickUpdateFunc(void* pParam) {
|
|||
void Minecraft::levelTickThreadInitFunc() {
|
||||
AABB::CreateNewThreadStorage();
|
||||
Vec3::CreateNewThreadStorage();
|
||||
IntCache::CreateNewThreadStorage();
|
||||
Compression::UseDefaultThreadStorage();
|
||||
}
|
||||
|
||||
|
|
@ -2596,8 +2596,8 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) {
|
|||
if (player->isRiding()) {
|
||||
std::shared_ptr<Entity> mount = player->riding;
|
||||
|
||||
if (mount->instanceof (eTYPE_MINECART) || mount->instanceof
|
||||
(eTYPE_BOAT)) {
|
||||
if (mount->instanceof(eTYPE_MINECART) ||
|
||||
mount->instanceof(eTYPE_BOAT)) {
|
||||
*piAlt = IDS_TOOLTIPS_EXIT;
|
||||
} else {
|
||||
*piAlt = IDS_TOOLTIPS_DISMOUNT;
|
||||
|
|
@ -3623,7 +3623,7 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) {
|
|||
break;
|
||||
|
||||
default:
|
||||
if (hitResult->entity->instanceof (eTYPE_MOB)) {
|
||||
if (hitResult->entity->instanceof(eTYPE_MOB)) {
|
||||
std::shared_ptr<Mob> mob =
|
||||
std::dynamic_pointer_cast<Mob>(
|
||||
hitResult->entity);
|
||||
|
|
@ -4914,7 +4914,7 @@ void Minecraft::main() {
|
|||
}
|
||||
|
||||
app.DebugPrintf("\n\n\n\n\n");
|
||||
|
||||
|
||||
for(unsigned int i = 0; i < 256; ++i)
|
||||
{
|
||||
if(Tile::tiles[i] != NULL)
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@
|
|||
#include "Player/ServerPlayer.h"
|
||||
#include "Rendering/GameRenderer.h"
|
||||
#include "../Minecraft.World/Util/ThreadName.h"
|
||||
#include "../Minecraft.World/Util/IntCache.h"
|
||||
#include "../Minecraft.World/Level/Storage/CompressedTileStorage.h"
|
||||
#include "../Minecraft.World/Level/Storage/SparseLightStorage.h"
|
||||
#include "../Minecraft.World/Level/Storage/SparseDataStorage.h"
|
||||
|
|
@ -315,7 +314,6 @@ int MinecraftServer::runPostUpdate(void* lpParam) {
|
|||
MinecraftServer* server = (MinecraftServer*)lpParam;
|
||||
Entity::useSmallIds(); // This thread can end up spawning entities as
|
||||
// resources
|
||||
IntCache::CreateNewThreadStorage();
|
||||
AABB::CreateNewThreadStorage();
|
||||
Vec3::CreateNewThreadStorage();
|
||||
Compression::UseDefaultThreadStorage();
|
||||
|
|
@ -366,7 +364,6 @@ int MinecraftServer::runPostUpdate(void* lpParam) {
|
|||
LeaveCriticalSection(&server->m_postProcessCS);
|
||||
// #endif //__PS3__
|
||||
Tile::ReleaseThreadStorage();
|
||||
IntCache::ReleaseThreadStorage();
|
||||
AABB::ReleaseThreadStorage();
|
||||
Vec3::ReleaseThreadStorage();
|
||||
Level::destroyLightingCache();
|
||||
|
|
@ -889,8 +886,7 @@ void MinecraftServer::overwriteHellBordersForNewWorldSize(ServerLevel* level,
|
|||
|
||||
#endif
|
||||
|
||||
void MinecraftServer::setProgress(const std::wstring& status,
|
||||
int progress) {
|
||||
void MinecraftServer::setProgress(const std::wstring& status, int progress) {
|
||||
progressStatus = status;
|
||||
this->progress = progress;
|
||||
// logger.info(status + ": " + progress + "%");
|
||||
|
|
@ -1817,9 +1813,7 @@ void MinecraftServer::info(const std::wstring& string) {}
|
|||
|
||||
void MinecraftServer::warn(const std::wstring& string) {}
|
||||
|
||||
std::wstring MinecraftServer::getConsoleName() {
|
||||
return L"CONSOLE";
|
||||
}
|
||||
std::wstring MinecraftServer::getConsoleName() { return L"CONSOLE"; }
|
||||
|
||||
ServerLevel* MinecraftServer::getLevel(int dimension) {
|
||||
if (dimension == -1)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@
|
|||
|
||||
#include "../../Minecraft.Client/UI/Gui.h"
|
||||
#include "../../Minecraft.Client/Rendering/LevelRenderer.h"
|
||||
#include "../../Minecraft.World/Util/IntCache.h"
|
||||
#include "../GameRules/ConsoleGameRules.h"
|
||||
#include "GameNetworkManager.h"
|
||||
|
||||
|
|
@ -952,7 +951,6 @@ int CGameNetworkManager::RunNetworkGameThreadProc(void* lpParameter) {
|
|||
Vec3::UseDefaultThreadStorage();
|
||||
Compression::UseDefaultThreadStorage();
|
||||
Tile::CreateNewThreadStorage();
|
||||
IntCache::CreateNewThreadStorage();
|
||||
|
||||
g_NetworkManager.m_bNetworkThreadRunning = true;
|
||||
bool success = g_NetworkManager._RunNetworkGame(lpParameter);
|
||||
|
|
@ -984,7 +982,6 @@ int CGameNetworkManager::RunNetworkGameThreadProc(void* lpParameter) {
|
|||
#endif
|
||||
|
||||
Tile::ReleaseThreadStorage();
|
||||
IntCache::ReleaseThreadStorage();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1012,7 +1009,6 @@ int CGameNetworkManager::ServerThreadProc(void* lpParameter) {
|
|||
SetThreadName(-1, "Minecraft Server thread");
|
||||
AABB::CreateNewThreadStorage();
|
||||
Vec3::CreateNewThreadStorage();
|
||||
IntCache::CreateNewThreadStorage();
|
||||
Compression::UseDefaultThreadStorage();
|
||||
OldChunkStorage::UseDefaultThreadStorage();
|
||||
Entity::useSmallIds();
|
||||
|
|
@ -1027,7 +1023,6 @@ int CGameNetworkManager::ServerThreadProc(void* lpParameter) {
|
|||
Tile::ReleaseThreadStorage();
|
||||
AABB::ReleaseThreadStorage();
|
||||
Vec3::ReleaseThreadStorage();
|
||||
IntCache::ReleaseThreadStorage();
|
||||
Level::destroyLightingCache();
|
||||
|
||||
if (lpParameter != NULL) delete (NetworkGameInitData*)lpParameter;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
#include "../../Minecraft.World/Level/Storage/LevelSettings.h"
|
||||
#include "../../Minecraft.World/Util/StringHelpers.h"
|
||||
#include "../../Minecraft.World/WorldGen/Biomes/BiomeSource.h"
|
||||
#include "../../Minecraft.World/Util/IntCache.h"
|
||||
#include "../../Minecraft.World/Level/Storage/LevelType.h"
|
||||
#include "../../Minecraft.Client/Textures/Packs/DLCTexturePack.h"
|
||||
|
||||
|
|
@ -1373,7 +1372,6 @@ int UIScene_CreateWorldMenu::StartGame_SignInReturned(void* pParam,
|
|||
} else {
|
||||
// This is NOT called from a storage manager thread, and is in
|
||||
// fact called from the main thread in the Profile library tick.
|
||||
// Therefore we use the main threads IntCache.
|
||||
CreateGame(pClass, localUsersMask);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1873,7 +1873,6 @@ int UIScene_LoadMenu::StartGame_SignInReturned(void* pParam, bool bContinue,
|
|||
#endif
|
||||
// This is NOT called from a storage manager thread, and is in
|
||||
// fact called from the main thread in the Profile library tick.
|
||||
// Therefore we use the main threads IntCache.
|
||||
StartGameFromSave(pClass, localUsersMask);
|
||||
}
|
||||
}
|
||||
|
|
@ -1935,4 +1934,4 @@ int UIScene_LoadMenu::MustSignInReturnedPSN(void* pParam, int iPad,
|
|||
// pClass->m_bIgnoreInput=false;
|
||||
// return 0;
|
||||
// }
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
#include "../../Minecraft.World/Level/Storage/LevelSettings.h"
|
||||
#include "XUI_MultiGameLaunchMoreOptions.h"
|
||||
#include "../../Minecraft.World/WorldGen/Biomes/BiomeSource.h"
|
||||
#include "../../Minecraft.World/Util/IntCache.h"
|
||||
#include "../../Minecraft.World/Level/Storage/LevelType.h"
|
||||
#include "../../Minecraft.Client/Textures/Packs/TexturePackRepository.h"
|
||||
#include "../../Minecraft.Client/Textures/Packs/TexturePack.h"
|
||||
|
|
@ -614,12 +613,14 @@ int CScene_MultiGameCreate::WarningTrialTexturePackReturned(
|
|||
ProfileManager.GetPrimaryPad(), NULL, NULL,
|
||||
app.GetStringTable());
|
||||
} else {
|
||||
// This is called from a storage manager thread... need to set up
|
||||
// thread storage for IntCache as CreateGame requires this to search
|
||||
// for a suitable seed if we haven't set a seed.
|
||||
IntCache::CreateNewThreadStorage();
|
||||
// 4J - This is called from a storage manager thread... need to set
|
||||
// up thread storage for IntCache as CreateGame requires this to
|
||||
// search for a suitable seed if we haven't set a seed.
|
||||
//
|
||||
// 4jcraft - removed reliance on int caching, old 4J comment is
|
||||
// moot, and we can search for suitable seeds without said cache
|
||||
// initialization.
|
||||
CreateGame(pScene, 0);
|
||||
IntCache::ReleaseThreadStorage();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -825,9 +826,11 @@ int CScene_MultiGameCreate::ConfirmCreateReturned(
|
|||
// This is called from a storage manager thread... need to set
|
||||
// up thread storage for IntCache as CreateGame requires this to
|
||||
// search for a suitable seed if we haven't set a seed.
|
||||
IntCache::CreateNewThreadStorage();
|
||||
//
|
||||
// 4jcraft - removed reliance on int caching, old 4J comment is
|
||||
// moot, and we can search for suitable seeds without said cache
|
||||
// initialization.
|
||||
CreateGame(pClass, 0);
|
||||
IntCache::ReleaseThreadStorage();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
@ -895,7 +898,6 @@ int CScene_MultiGameCreate::StartGame_SignInReturned(void* pParam,
|
|||
} else {
|
||||
// This is NOT called from a storage manager thread, and is in
|
||||
// fact called from the main thread in the Profile library tick.
|
||||
// Therefore we use the main threads IntCache.
|
||||
CreateGame(pClass, dwLocalUsersMask);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -65,7 +65,6 @@ static void sigsegv_handler(int sig) {
|
|||
#include "../../Rendering/Tesselator.h"
|
||||
#include "../../GameState/Options.h"
|
||||
#include "../Linux/Sentient/SentientManager.h"
|
||||
#include "../../../Minecraft.World/Util/IntCache.h"
|
||||
#include "../../Textures/Textures.h"
|
||||
#include "../../../Minecraft.World/IO/Streams/Compression.h"
|
||||
#include "../../../Minecraft.World/Level/Storage/OldChunkStorage.h"
|
||||
|
|
@ -870,7 +869,6 @@ return -1;
|
|||
// Initialise TLS for AABB and Vec3 pools, for this main thread
|
||||
AABB::CreateNewThreadStorage();
|
||||
Vec3::CreateNewThreadStorage();
|
||||
IntCache::CreateNewThreadStorage();
|
||||
Compression::CreateNewThreadStorage();
|
||||
OldChunkStorage::CreateNewThreadStorage();
|
||||
Level::enableLightingCache();
|
||||
|
|
@ -940,7 +938,6 @@ return -1;
|
|||
pMinecraft->soundEngine->tick(NULL, 0.0f);
|
||||
MemSect(0);
|
||||
pMinecraft->textures->tick(true, false);
|
||||
IntCache::Reset();
|
||||
if (app.GetReallyChangingSessionType()) {
|
||||
pMinecraft
|
||||
->tickAllConnections(); // Added to stop timing out when we
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -36,7 +36,6 @@
|
|||
#include "../../Minecraft.World/Util/JavaMath.h"
|
||||
#include "../../Minecraft.World/Util/Facing.h"
|
||||
#include "../../Minecraft.World/Entities/MobEffect.h"
|
||||
#include "../../Minecraft.World/Util/IntCache.h"
|
||||
#include "../../Minecraft.World/Util/SmoothFloat.h"
|
||||
#include "../../Minecraft.World/Entities/MobEffectInstance.h"
|
||||
#include "../../Minecraft.World/Items/Item.h"
|
||||
|
|
@ -351,7 +350,7 @@ void GameRenderer::pick(float a) {
|
|||
if (nearest < dist || (mc->hitResult == NULL)) {
|
||||
if (mc->hitResult != NULL) delete mc->hitResult;
|
||||
mc->hitResult = new HitResult(hovered);
|
||||
if (hovered->instanceof (eTYPE_LIVINGENTITY)) {
|
||||
if (hovered->instanceof(eTYPE_LIVINGENTITY)) {
|
||||
mc->crosshairPickMob =
|
||||
std::dynamic_pointer_cast<LivingEntity>(hovered);
|
||||
}
|
||||
|
|
@ -424,7 +423,7 @@ void GameRenderer::bobHurt(float a) {
|
|||
}
|
||||
|
||||
void GameRenderer::bobView(float a) {
|
||||
if (!mc->cameraTargetPlayer->instanceof (eTYPE_LIVINGENTITY)) return;
|
||||
if (!mc->cameraTargetPlayer->instanceof(eTYPE_LIVINGENTITY)) return;
|
||||
|
||||
std::shared_ptr<Player> player =
|
||||
std::dynamic_pointer_cast<Player>(mc->cameraTargetPlayer);
|
||||
|
|
@ -673,8 +672,7 @@ void GameRenderer::renderItemInHand(float a, int eye) {
|
|||
// 4J-JEV: I'm fairly confident this method would crash if the cameratarget
|
||||
// isnt a local player anyway, but oh well.
|
||||
std::shared_ptr<LocalPlayer> localplayer =
|
||||
mc->cameraTargetPlayer->instanceof
|
||||
(eTYPE_LOCALPLAYER)
|
||||
mc->cameraTargetPlayer->instanceof(eTYPE_LOCALPLAYER)
|
||||
? std::dynamic_pointer_cast<LocalPlayer>(mc->cameraTargetPlayer)
|
||||
: nullptr;
|
||||
|
||||
|
|
@ -807,9 +805,8 @@ void GameRenderer::turnOnLightLayer(
|
|||
static int logCount = 0;
|
||||
if (logCount < 16) {
|
||||
++logCount;
|
||||
app.DebugPrintf(
|
||||
"[linux-lightmap] turnOnLightLayer tex=%d scale=%d\n", textureId,
|
||||
scaleLight ? 1 : 0);
|
||||
app.DebugPrintf("[linux-lightmap] turnOnLightLayer tex=%d scale=%d\n",
|
||||
textureId, scaleLight ? 1 : 0);
|
||||
}
|
||||
|
||||
RenderManager.TextureBindVertex(textureId, scaleLight);
|
||||
|
|
@ -1118,7 +1115,6 @@ int GameRenderer::runUpdate(void* lpParam) {
|
|||
Minecraft* minecraft = Minecraft::GetInstance();
|
||||
Vec3::CreateNewThreadStorage();
|
||||
AABB::CreateNewThreadStorage();
|
||||
IntCache::CreateNewThreadStorage();
|
||||
Tesselator::CreateNewThreadStorage(1024 * 1024);
|
||||
Compression::UseDefaultThreadStorage();
|
||||
RenderManager.InitialiseContext();
|
||||
|
|
@ -1199,7 +1195,6 @@ int GameRenderer::runUpdate(void* lpParam) {
|
|||
|
||||
AABB::resetPool();
|
||||
Vec3::resetPool();
|
||||
IntCache::Reset();
|
||||
m_updateEvents->Set(eUpdateEventIsFinished);
|
||||
}
|
||||
|
||||
|
|
@ -1254,7 +1249,9 @@ void GameRenderer::renderLevel(float a, int64_t until) {
|
|||
|
||||
// if (mc->cameraTargetPlayer == NULL) // 4J - removed condition as we
|
||||
// want to update this is mc->player changes for different local players
|
||||
{ mc->cameraTargetPlayer = mc->player; }
|
||||
{
|
||||
mc->cameraTargetPlayer = mc->player;
|
||||
}
|
||||
pick(a);
|
||||
|
||||
std::shared_ptr<LivingEntity> cameraEntity = mc->cameraTargetPlayer;
|
||||
|
|
@ -1394,9 +1391,9 @@ void GameRenderer::renderLevel(float a, int64_t until) {
|
|||
turnOffLightLayer(a); // 4J - brought forward from 1.8.2
|
||||
|
||||
if ((mc->hitResult != NULL) &&
|
||||
cameraEntity->isUnderLiquid(Material::water) &&
|
||||
cameraEntity->instanceof
|
||||
(eTYPE_PLAYER)) //&& !mc->options.hideGui)
|
||||
cameraEntity->isUnderLiquid(Material::water) &&
|
||||
cameraEntity->instanceof(
|
||||
eTYPE_PLAYER)) //&& !mc->options.hideGui)
|
||||
{
|
||||
std::shared_ptr<Player> player =
|
||||
std::dynamic_pointer_cast<Player>(cameraEntity);
|
||||
|
|
@ -1472,8 +1469,8 @@ void GameRenderer::renderLevel(float a, int64_t until) {
|
|||
glEnable(GL_CULL_FACE);
|
||||
glDisable(GL_BLEND);
|
||||
|
||||
if ((zoom == 1) && cameraEntity->instanceof
|
||||
(eTYPE_PLAYER)) //&& !mc->options.hideGui)
|
||||
if ((zoom == 1) &&
|
||||
cameraEntity->instanceof(eTYPE_PLAYER)) //&& !mc->options.hideGui)
|
||||
{
|
||||
if (mc->hitResult != NULL &&
|
||||
!cameraEntity->isUnderLiquid(Material::water)) {
|
||||
|
|
@ -2008,7 +2005,7 @@ void GameRenderer::setupFog(int i, float alpha) {
|
|||
|
||||
// 4J - check for creative mode brought forward from 1.2.3
|
||||
bool creative = false;
|
||||
if (player->instanceof (eTYPE_PLAYER)) {
|
||||
if (player->instanceof(eTYPE_PLAYER)) {
|
||||
creative =
|
||||
(std::dynamic_pointer_cast<Player>(player))->abilities.instabuild;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@
|
|||
#include "../GameState/Options.h"
|
||||
#include "../Network/MultiPlayerChunkCache.h"
|
||||
#include "../../Minecraft.World/Util/ParticleTypes.h"
|
||||
#include "../../Minecraft.World/Util/IntCache.h"
|
||||
#include "../../Minecraft.World/IO/Streams/IntBuffer.h"
|
||||
#include "../../Minecraft.World/Util/JavaMath.h"
|
||||
#include "../../Minecraft.World/Headers/net.minecraft.world.level.h"
|
||||
|
|
@ -586,7 +585,7 @@ void LevelRenderer::renderEntities(Vec3* cam, Culler* culler, float a) {
|
|||
(entity->noCulling || culler->isVisible(entity->bb)));
|
||||
|
||||
// Render the mob if the mob's leash holder is within the culler
|
||||
if (!shouldRender && entity->instanceof (eTYPE_MOB)) {
|
||||
if (!shouldRender && entity->instanceof(eTYPE_MOB)) {
|
||||
std::shared_ptr<Mob> mob = std::dynamic_pointer_cast<Mob>(entity);
|
||||
if (mob->isLeashed() && (mob->getLeashHolder() != NULL)) {
|
||||
std::shared_ptr<Entity> leashHolder = mob->getLeashHolder();
|
||||
|
|
@ -600,10 +599,10 @@ void LevelRenderer::renderEntities(Vec3* cam, Culler* culler, float a) {
|
|||
// !mc->options->thirdPersonView &&
|
||||
// !mc->cameraTargetPlayer->isSleeping()) continue;
|
||||
std::shared_ptr<LocalPlayer> localplayer =
|
||||
mc->cameraTargetPlayer->instanceof
|
||||
(eTYPE_LOCALPLAYER) ? std::dynamic_pointer_cast<LocalPlayer>(
|
||||
mc->cameraTargetPlayer)
|
||||
: nullptr;
|
||||
mc->cameraTargetPlayer->instanceof(eTYPE_LOCALPLAYER)
|
||||
? std::dynamic_pointer_cast<LocalPlayer>(
|
||||
mc->cameraTargetPlayer)
|
||||
: nullptr;
|
||||
|
||||
if (localplayer && entity == mc->cameraTargetPlayer &&
|
||||
!localplayer->ThirdPersonView() &&
|
||||
|
|
@ -1198,7 +1197,7 @@ void LevelRenderer::renderSky(float alpha) {
|
|||
// 4J - can't work out what this big black box is for. Taking it out
|
||||
// until someone misses it... it causes a big black box to visible
|
||||
// appear in 3rd person mode whilst under the ground.
|
||||
#if 0
|
||||
#if 0
|
||||
float ss = 1;
|
||||
float yo = -(float) (yy + 65);
|
||||
float y0 = -ss;
|
||||
|
|
@ -2748,7 +2747,9 @@ void LevelRenderer::cull_SPU(int playerIndex, Culler* culler, float a) {
|
|||
m_jobPort_CullSPU->submitSync();
|
||||
// static int doSort = false;
|
||||
// if(doSort)
|
||||
{ m_jobPort_CullSPU->submitJob(&sortJob); }
|
||||
{
|
||||
m_jobPort_CullSPU->submitJob(&sortJob);
|
||||
}
|
||||
// doSort ^= 1;
|
||||
m_bSPUCullStarted[playerIndex] = true;
|
||||
}
|
||||
|
|
@ -3221,7 +3222,7 @@ std::shared_ptr<Particle> LevelRenderer::addParticleInternal(
|
|||
}
|
||||
|
||||
void LevelRenderer::entityAdded(std::shared_ptr<Entity> entity) {
|
||||
if (entity->instanceof (eTYPE_PLAYER)) {
|
||||
if (entity->instanceof(eTYPE_PLAYER)) {
|
||||
std::shared_ptr<Player> player =
|
||||
std::dynamic_pointer_cast<Player>(entity);
|
||||
player->prepareCustomTextures();
|
||||
|
|
@ -3239,7 +3240,7 @@ void LevelRenderer::entityAdded(std::shared_ptr<Entity> entity) {
|
|||
}
|
||||
|
||||
void LevelRenderer::entityRemoved(std::shared_ptr<Entity> entity) {
|
||||
if (entity->instanceof (eTYPE_PLAYER)) {
|
||||
if (entity->instanceof(eTYPE_PLAYER)) {
|
||||
std::shared_ptr<Player> player =
|
||||
std::dynamic_pointer_cast<Player>(entity);
|
||||
if (player->customTextureUrl != L"") {
|
||||
|
|
@ -4040,7 +4041,6 @@ void LevelRenderer::staticCtor() {
|
|||
int LevelRenderer::rebuildChunkThreadProc(void* lpParam) {
|
||||
Vec3::CreateNewThreadStorage();
|
||||
AABB::CreateNewThreadStorage();
|
||||
IntCache::CreateNewThreadStorage();
|
||||
Tesselator::CreateNewThreadStorage(1024 * 1024);
|
||||
RenderManager.InitialiseContext();
|
||||
Chunk::CreateNewThreadStorage();
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
#include "../WorldGen/Layers/DownfallMixerLayer.h"
|
||||
#include "../WorldGen/Layers/FlatLayer.h"
|
||||
#include "../WorldGen/Layers/FuzzyZoomLayer.h"
|
||||
#include "../Util/IntCache.h"
|
||||
#include "../WorldGen/Layers/IslandLayer.h"
|
||||
#include "../WorldGen/Layers/Layer.h"
|
||||
#include "../WorldGen/Layers/RiverInitLayer.h"
|
||||
|
|
@ -25,4 +24,4 @@
|
|||
|
||||
// 1.1.
|
||||
#include "../WorldGen/Layers/RegionHillsLayer.h"
|
||||
#include "../WorldGen/Layers/SwampRiversLayer.h"
|
||||
#include "../WorldGen/Layers/SwampRiversLayer.h"
|
||||
|
|
|
|||
|
|
@ -1,140 +0,0 @@
|
|||
#include "../Platform/stdafx.h"
|
||||
#include "IntCache.h"
|
||||
|
||||
unsigned int IntCache::tlsIdx = TlsAlloc();
|
||||
|
||||
void IntCache::CreateNewThreadStorage() {
|
||||
ThreadStorage* tls = new ThreadStorage();
|
||||
TlsSetValue(tlsIdx, (void*)tls);
|
||||
tls->maxSize = TINY_CUTOFF;
|
||||
}
|
||||
|
||||
IntCache::ThreadStorage::~ThreadStorage() {
|
||||
for (unsigned int i = 0; i < tcache.size(); i++) {
|
||||
delete[] tcache[i].data;
|
||||
}
|
||||
for (unsigned int i = 0; i < tallocated.size(); i++) {
|
||||
delete[] tallocated[i].data;
|
||||
}
|
||||
for (unsigned int i = 0; i < cache.size(); i++) {
|
||||
delete[] cache[i].data;
|
||||
}
|
||||
for (unsigned int i = 0; i < allocated.size(); i++) {
|
||||
delete[] allocated[i].data;
|
||||
}
|
||||
for (int i = 0; i < toosmall.size(); i++) {
|
||||
delete[] toosmall[i].data;
|
||||
}
|
||||
}
|
||||
|
||||
void IntCache::ReleaseThreadStorage() {
|
||||
ThreadStorage* tls = (ThreadStorage*)TlsGetValue(tlsIdx);
|
||||
|
||||
delete tls;
|
||||
}
|
||||
|
||||
intArray IntCache::allocate(int size) {
|
||||
ThreadStorage* tls = (ThreadStorage*)TlsGetValue(tlsIdx);
|
||||
|
||||
if (size <= TINY_CUTOFF) {
|
||||
if (tls->tcache.empty()) {
|
||||
intArray result = intArray(TINY_CUTOFF, true);
|
||||
tls->tallocated.push_back(result);
|
||||
return result;
|
||||
} else {
|
||||
intArray result = tls->tcache.back();
|
||||
tls->tcache.pop_back();
|
||||
tls->tallocated.push_back(result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (size > tls->maxSize) {
|
||||
// app.DebugPrintf("IntCache: New max size: %d\n" , size);
|
||||
tls->maxSize = size;
|
||||
|
||||
// 4J - added - all the vectors in cache & allocated are smaller than
|
||||
// maxSize so should be discarded. However, we can't delete them until
|
||||
// the next releaseAll so copy into another vector until then
|
||||
tls->toosmall.insert(tls->toosmall.end(), tls->cache.begin(),
|
||||
tls->cache.end());
|
||||
tls->toosmall.insert(tls->toosmall.end(), tls->allocated.begin(),
|
||||
tls->allocated.end());
|
||||
|
||||
tls->cache.clear();
|
||||
tls->allocated.clear();
|
||||
|
||||
intArray result = intArray(tls->maxSize, true);
|
||||
tls->allocated.push_back(result);
|
||||
return result;
|
||||
} else {
|
||||
if (tls->cache.empty()) {
|
||||
intArray result = intArray(tls->maxSize, true);
|
||||
tls->allocated.push_back(result);
|
||||
return result;
|
||||
} else {
|
||||
intArray result = tls->cache.back();
|
||||
tls->cache.pop_back();
|
||||
tls->allocated.push_back(result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void IntCache::releaseAll() {
|
||||
ThreadStorage* tls = (ThreadStorage*)TlsGetValue(tlsIdx);
|
||||
|
||||
// 4J - added - we can now remove the vectors that were deemed as too small
|
||||
// (see comment in IntCache::allocate)
|
||||
for (int i = 0; i < tls->toosmall.size(); i++) {
|
||||
delete[] tls->toosmall[i].data;
|
||||
}
|
||||
tls->toosmall.clear();
|
||||
|
||||
if (!tls->cache.empty()) {
|
||||
delete[] tls->cache.back().data;
|
||||
tls->cache.pop_back();
|
||||
}
|
||||
if (!tls->tcache.empty()) {
|
||||
delete[] tls->tcache.back().data;
|
||||
tls->tcache.pop_back();
|
||||
}
|
||||
|
||||
tls->cache.insert(tls->cache.end(), tls->allocated.begin(),
|
||||
tls->allocated.end());
|
||||
tls->tcache.insert(tls->tcache.end(), tls->tallocated.begin(),
|
||||
tls->tallocated.end());
|
||||
|
||||
tls->allocated.clear();
|
||||
tls->tallocated.clear();
|
||||
}
|
||||
|
||||
// 4J added so that we can fully reset between levels
|
||||
void IntCache::Reset() {
|
||||
ThreadStorage* tls = (ThreadStorage*)TlsGetValue(tlsIdx);
|
||||
tls->maxSize = TINY_CUTOFF;
|
||||
for (int i = 0; i < tls->allocated.size(); i++) {
|
||||
delete[] tls->allocated[i].data;
|
||||
}
|
||||
tls->allocated.clear();
|
||||
|
||||
for (int i = 0; i < tls->cache.size(); i++) {
|
||||
delete[] tls->cache[i].data;
|
||||
}
|
||||
tls->cache.clear();
|
||||
|
||||
for (int i = 0; i < tls->tallocated.size(); i++) {
|
||||
delete[] tls->tallocated[i].data;
|
||||
}
|
||||
tls->tallocated.clear();
|
||||
|
||||
for (int i = 0; i < tls->tcache.size(); i++) {
|
||||
delete[] tls->tcache[i].data;
|
||||
}
|
||||
tls->tcache.clear();
|
||||
|
||||
for (int i = 0; i < tls->toosmall.size(); i++) {
|
||||
delete[] tls->toosmall[i].data;
|
||||
}
|
||||
tls->toosmall.clear();
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "ArrayWithLength.h"
|
||||
|
||||
class IntCache {
|
||||
private:
|
||||
class ThreadStorage {
|
||||
public:
|
||||
int maxSize;
|
||||
|
||||
std::vector<intArray> tcache;
|
||||
std::vector<intArray> tallocated;
|
||||
|
||||
std::vector<intArray> cache;
|
||||
std::vector<intArray> allocated;
|
||||
std::vector<intArray> toosmall; // 4J added
|
||||
~ThreadStorage();
|
||||
};
|
||||
static unsigned int tlsIdx;
|
||||
|
||||
static const int TINY_CUTOFF = 256;
|
||||
|
||||
public:
|
||||
static intArray allocate(int size);
|
||||
static void releaseAll();
|
||||
|
||||
static void CreateNewThreadStorage();
|
||||
static void ReleaseThreadStorage();
|
||||
static void Reset(); // 4J added
|
||||
};
|
||||
|
|
@ -75,7 +75,6 @@ floatArray BiomeSource::getDownfallBlock(int x, int z, int w, int h) const {
|
|||
// downfall layers brought forward from 1.2.3
|
||||
void BiomeSource::getDownfallBlock(floatArray& downfalls, int x, int z, int w,
|
||||
int h) const {
|
||||
IntCache::releaseAll();
|
||||
// if (downfalls == NULL || downfalls->length < w * h)
|
||||
if (downfalls.data == NULL || downfalls.length < w * h) {
|
||||
if (downfalls.data != NULL) delete[] downfalls.data;
|
||||
|
|
@ -112,7 +111,6 @@ floatArray BiomeSource::getTemperatureBlock(int x, int z, int w, int h) const {
|
|||
// downfall layers brought forward from 1.2.3
|
||||
void BiomeSource::getTemperatureBlock(floatArray& temperatures, int x, int z,
|
||||
int w, int h) const {
|
||||
IntCache::releaseAll();
|
||||
// if (temperatures == null || temperatures.length < w * h) {
|
||||
if (temperatures.data == NULL || temperatures.length < w * h) {
|
||||
if (temperatures.data != NULL) delete[] temperatures.data;
|
||||
|
|
@ -137,7 +135,6 @@ BiomeArray BiomeSource::getRawBiomeBlock(int x, int z, int w, int h) const {
|
|||
// 4J added
|
||||
void BiomeSource::getRawBiomeIndices(intArray& biomes, int x, int z, int w,
|
||||
int h) const {
|
||||
IntCache::releaseAll();
|
||||
|
||||
intArray result = layer->getArea(x, z, w, h);
|
||||
for (int i = 0; i < w * h; i++) {
|
||||
|
|
@ -147,7 +144,6 @@ void BiomeSource::getRawBiomeIndices(intArray& biomes, int x, int z, int w,
|
|||
|
||||
void BiomeSource::getRawBiomeBlock(BiomeArray& biomes, int x, int z, int w,
|
||||
int h) const {
|
||||
IntCache::releaseAll();
|
||||
// if (biomes == null || biomes.length < w * h)
|
||||
if (biomes.data == NULL || biomes.length < w * h) {
|
||||
if (biomes.data != NULL) delete[] biomes.data;
|
||||
|
|
@ -178,7 +174,6 @@ BiomeArray BiomeSource::getBiomeBlock(int x, int z, int w, int h) const {
|
|||
// 4J - caller is responsible for deleting biomes array
|
||||
void BiomeSource::getBiomeBlock(BiomeArray& biomes, int x, int z, int w, int h,
|
||||
bool useCache) const {
|
||||
IntCache::releaseAll();
|
||||
// if (biomes == null || biomes.length < w * h)
|
||||
if (biomes.data == NULL || biomes.length < w * h) {
|
||||
if (biomes.data != NULL) delete[] biomes.data;
|
||||
|
|
@ -211,7 +206,6 @@ byteArray BiomeSource::getBiomeIndexBlock(int x, int z, int w, int h) const {
|
|||
// 4J - caller is responsible for deleting biomes array
|
||||
void BiomeSource::getBiomeIndexBlock(byteArray& biomeIndices, int x, int z,
|
||||
int w, int h, bool useCache) const {
|
||||
IntCache::releaseAll();
|
||||
// if (biomes == null || biomes.length < w * h)
|
||||
if (biomeIndices.data == NULL || biomeIndices.length < w * h) {
|
||||
if (biomeIndices.data != NULL) delete[] biomeIndices.data;
|
||||
|
|
@ -239,7 +233,6 @@ void BiomeSource::getBiomeIndexBlock(byteArray& biomeIndices, int x, int z,
|
|||
*/
|
||||
bool BiomeSource::containsOnly(int x, int z, int r,
|
||||
std::vector<Biome*> allowed) {
|
||||
IntCache::releaseAll();
|
||||
int x0 = ((x - r) >> 2);
|
||||
int z0 = ((z - r) >> 2);
|
||||
int x1 = ((x + r) >> 2);
|
||||
|
|
@ -266,7 +259,6 @@ bool BiomeSource::containsOnly(int x, int z, int r,
|
|||
* NO other biomes, add a margin of at least four blocks to the radius
|
||||
*/
|
||||
bool BiomeSource::containsOnly(int x, int z, int r, Biome* allowed) {
|
||||
IntCache::releaseAll();
|
||||
int x0 = ((x - r) >> 2);
|
||||
int z0 = ((z - r) >> 2);
|
||||
int x1 = ((x + r) >> 2);
|
||||
|
|
@ -292,7 +284,6 @@ bool BiomeSource::containsOnly(int x, int z, int r, Biome* allowed) {
|
|||
*/
|
||||
TilePos* BiomeSource::findBiome(int x, int z, int r, Biome* toFind,
|
||||
Random* random) {
|
||||
IntCache::releaseAll();
|
||||
int x0 = ((x - r) >> 2);
|
||||
int z0 = ((z - r) >> 2);
|
||||
int x1 = ((x + r) >> 2);
|
||||
|
|
@ -327,7 +318,6 @@ TilePos* BiomeSource::findBiome(int x, int z, int r, Biome* toFind,
|
|||
*/
|
||||
TilePos* BiomeSource::findBiome(int x, int z, int r,
|
||||
std::vector<Biome*> allowed, Random* random) {
|
||||
IntCache::releaseAll();
|
||||
int x0 = ((x - r) >> 2);
|
||||
int z0 = ((z - r) >> 2);
|
||||
int x1 = ((x + r) >> 2);
|
||||
|
|
@ -593,4 +583,4 @@ bool BiomeSource::getIsMatch(float* frac) {
|
|||
// or more - currently there's 8 critical so this just forces at least 1
|
||||
// more others
|
||||
return (typeCount >= 9);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ intArray AddIslandLayer::getArea(int xo, int yo, int w, int h) {
|
|||
int ph = h + 2;
|
||||
intArray p = parent->getArea(px, py, pw, ph);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
int n1 = p[(x + 0) + (y + 0) * pw];
|
||||
|
|
@ -53,4 +53,4 @@ intArray AddIslandLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ intArray AddMushroomIslandLayer::getArea(int xo, int yo, int w, int h) {
|
|||
int ph = h + 2;
|
||||
intArray p = parent->getArea(px, py, pw, ph);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
int n1 = p[(x + 0) + (y + 0) * pw];
|
||||
|
|
@ -33,4 +33,4 @@ intArray AddMushroomIslandLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ intArray AddSnowLayer::getArea(int xo, int yo, int w, int h) {
|
|||
int ph = h + 2;
|
||||
intArray p = parent->getArea(px, py, pw, ph);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
int c = p[(x + 1) + (y + 1) * pw];
|
||||
|
|
@ -32,4 +32,4 @@ intArray AddSnowLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ BiomeInitLayer::~BiomeInitLayer() { delete[] startBiomes.data; }
|
|||
intArray BiomeInitLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray b = parent->getArea(xo, yo, w, h);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
initRandom(x + xo, y + yo);
|
||||
|
|
@ -58,4 +58,4 @@ intArray BiomeInitLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ BiomeOverrideLayer::BiomeOverrideLayer(int seedMixup) : Layer(seedMixup) {
|
|||
}
|
||||
|
||||
intArray BiomeOverrideLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
|
||||
int xOrigin = xo + width / 2;
|
||||
int yOrigin = yo + height / 2;
|
||||
|
|
@ -70,4 +70,4 @@ intArray BiomeOverrideLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,10 +9,10 @@ DownfallLayer::DownfallLayer(std::shared_ptr<Layer> parent) : Layer(0) {
|
|||
intArray DownfallLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray b = parent->getArea(xo, yo, w, h);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int i = 0; i < w * h; i++) {
|
||||
result[i] = Biome::biomes[b[i]]->getDownfallInt();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,11 +14,11 @@ intArray DownfallMixerLayer::getArea(int xo, int yo, int w, int h) {
|
|||
intArray b = parent->getArea(xo, yo, w, h);
|
||||
intArray d = downfall->getArea(xo, yo, w, h);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int i = 0; i < w * h; i++) {
|
||||
result[i] =
|
||||
d[i] + (Biome::biomes[b[i]]->getDownfallInt() - d[i]) / (layer + 1);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@
|
|||
FlatLayer::FlatLayer(int val) : Layer(0) { this->val = val; }
|
||||
|
||||
intArray FlatLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
result[x + y * w] = val;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ intArray FuzzyZoomLayer::getArea(int xo, int yo, int w, int h) {
|
|||
intArray p = parent->getArea(px, py, pw, ph);
|
||||
|
||||
// 4jcraft added casts to unsigned to prevent shift of neg value
|
||||
intArray tmp = IntCache::allocate((pw * 2) * (ph * 2));
|
||||
intArray tmp{static_cast<unsigned int>(pw * ph * 4)};
|
||||
int ww = ((unsigned int)pw << 1);
|
||||
for (int y = 0; y < ph - 1; y++) {
|
||||
int ry = (unsigned int)y << 1;
|
||||
|
|
@ -37,7 +37,7 @@ intArray FuzzyZoomLayer::getArea(int xo, int yo, int w, int h) {
|
|||
dl = dr;
|
||||
}
|
||||
}
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
System::arraycopy(tmp,
|
||||
(y + (yo & 1)) * ((unsigned int)pw << 1) + (xo & 1),
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ intArray GrowMushroomIslandLayer::getArea(int xo, int yo, int w, int h) {
|
|||
int ph = h + 2;
|
||||
intArray p = parent->getArea(px, py, pw, ph);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
int n1 = p[(x + 0) + (y + 0) * pw];
|
||||
|
|
@ -36,4 +36,4 @@ intArray GrowMushroomIslandLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
IslandLayer::IslandLayer(int64_t seedMixup) : Layer(seedMixup) {}
|
||||
|
||||
intArray IslandLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
initRandom(xo + x, yo + y);
|
||||
|
|
@ -16,4 +16,4 @@ intArray IslandLayer::getArea(int xo, int yo, int w, int h) {
|
|||
result[-xo + -yo * w] = 1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
#include "../../Platform/stdafx.h"
|
||||
#include "../../Headers/net.minecraft.world.level.biome.h"
|
||||
#include "../../Util/IntCache.h"
|
||||
#include "RegionHillsLayer.h"
|
||||
|
||||
RegionHillsLayer::RegionHillsLayer(int64_t seed, std::shared_ptr<Layer> parent)
|
||||
|
|
@ -11,7 +10,7 @@ RegionHillsLayer::RegionHillsLayer(int64_t seed, std::shared_ptr<Layer> parent)
|
|||
intArray RegionHillsLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray b = parent->getArea(xo - 1, yo - 1, w + 2, h + 2);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
initRandom(x + xo, y + yo);
|
||||
|
|
@ -51,4 +50,4 @@ intArray RegionHillsLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ RiverInitLayer::RiverInitLayer(int64_t seed, std::shared_ptr<Layer> parent)
|
|||
intArray RiverInitLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray b = parent->getArea(xo, yo, w, h);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
initRandom(x + xo, y + yo);
|
||||
|
|
@ -18,4 +18,4 @@ intArray RiverInitLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ intArray RiverLayer::getArea(int xo, int yo, int w, int h) {
|
|||
int ph = h + 2;
|
||||
intArray p = parent->getArea(px, py, pw, ph);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
int l = p[(x + 0) + (y + 1) * pw];
|
||||
|
|
@ -32,4 +32,4 @@ intArray RiverLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ intArray RiverMixerLayer::getArea(int xo, int yo, int w, int h) {
|
|||
intArray b = biomes->getArea(xo, yo, w, h);
|
||||
intArray r = rivers->getArea(xo, yo, w, h);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int i = 0; i < w * h; i++) {
|
||||
if (b[i] == Biome::ocean->id) {
|
||||
result[i] = b[i];
|
||||
|
|
@ -45,4 +45,4 @@ intArray RiverMixerLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ ShoreLayer::ShoreLayer(int64_t seed, std::shared_ptr<Layer> parent)
|
|||
intArray ShoreLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray b = parent->getArea(xo - 1, yo - 1, w + 2, h + 2);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
initRandom(x + xo, y + yo);
|
||||
|
|
@ -59,4 +59,4 @@ intArray ShoreLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ intArray SmoothLayer::getArea(int xo, int yo, int w, int h) {
|
|||
int ph = h + 2;
|
||||
intArray p = parent->getArea(px, py, pw, ph);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
int l = p[(x + 0) + (y + 1) * pw];
|
||||
|
|
@ -37,4 +37,4 @@ intArray SmoothLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ intArray SmoothZoomLayer::getArea(int xo, int yo, int w, int h) {
|
|||
int ph = (h >> 1) + 3;
|
||||
intArray p = parent->getArea(px, py, pw, ph);
|
||||
|
||||
intArray tmp = IntCache::allocate((pw * 2) * (ph * 2));
|
||||
intArray tmp{static_cast<unsigned int>(pw * ph * 4)};
|
||||
int ww = (pw << 1);
|
||||
for (int y = 0; y < ph - 1; y++) {
|
||||
int ry = y << 1;
|
||||
|
|
@ -40,7 +40,7 @@ intArray SmoothZoomLayer::getArea(int xo, int yo, int w, int h) {
|
|||
dl = dr;
|
||||
}
|
||||
}
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
System::arraycopy(tmp, (y + (yo & 1)) * (pw << 1) + (xo & 1), &result,
|
||||
y * w, w);
|
||||
|
|
@ -56,4 +56,4 @@ std::shared_ptr<Layer> SmoothZoomLayer::zoom(int64_t seed,
|
|||
result = std::shared_ptr<Layer>(new SmoothZoomLayer(seed + i, result));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
#include "../../Platform/stdafx.h"
|
||||
#include "../../Headers/net.minecraft.world.level.biome.h"
|
||||
#include "../../Util/IntCache.h"
|
||||
#include "SwampRiversLayer.h"
|
||||
|
||||
SwampRiversLayer::SwampRiversLayer(int64_t seed, std::shared_ptr<Layer> parent)
|
||||
|
|
@ -11,7 +10,7 @@ SwampRiversLayer::SwampRiversLayer(int64_t seed, std::shared_ptr<Layer> parent)
|
|||
intArray SwampRiversLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray b = parent->getArea(xo - 1, yo - 1, w + 2, h + 2);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
initRandom(x + xo, y + yo);
|
||||
|
|
@ -27,4 +26,4 @@ intArray SwampRiversLayer::getArea(int xo, int yo, int w, int h) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ TemperatureLayer::TemperatureLayer(std::shared_ptr<Layer> parent) : Layer(0) {
|
|||
intArray TemperatureLayer::getArea(int xo, int yo, int w, int h) {
|
||||
intArray b = parent->getArea(xo, yo, w, h);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int i = 0; i < w * h; i++) {
|
||||
result[i] = Biome::biomes[b[i]]->getTemperatureInt();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,11 +15,11 @@ intArray TemperatureMixerLayer::getArea(int xo, int yo, int w, int h) {
|
|||
intArray b = parent->getArea(xo, yo, w, h);
|
||||
intArray t = temp->getArea(xo, yo, w, h);
|
||||
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int i = 0; i < w * h; i++) {
|
||||
result[i] = t[i] + (Biome::biomes[b[i]]->getTemperatureInt() - t[i]) /
|
||||
(layer * 2 + 1);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ intArray VoronoiZoom::getArea(int xo, int yo, int w, int h) {
|
|||
// 4jcraft added all those casts to unsigned
|
||||
int ww = (unsigned)pw << bits;
|
||||
int hh = (unsigned)ph << bits;
|
||||
intArray tmp = IntCache::allocate(ww * hh);
|
||||
intArray tmp{static_cast<unsigned int>(ww * hh)};
|
||||
for (int y = 0; y < ph - 1; y++) {
|
||||
int ul = p[(0 + 0) + (y + 0) * pw];
|
||||
int dl = p[(0 + 0) + (y + 1) * pw];
|
||||
|
|
@ -71,7 +71,7 @@ intArray VoronoiZoom::getArea(int xo, int yo, int w, int h) {
|
|||
dl = dr;
|
||||
}
|
||||
}
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
System::arraycopy(
|
||||
tmp,
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ intArray ZoomLayer::getArea(int xo, int yo, int w, int h) {
|
|||
int ph = (h >> 1) + 3;
|
||||
intArray p = parent->getArea(px, py, pw, ph);
|
||||
|
||||
intArray tmp = IntCache::allocate((pw * 2) * (ph * 2));
|
||||
intArray tmp{static_cast<unsigned int>(pw * ph * 4)};
|
||||
// 4jcraft added casts to unsigned
|
||||
int ww = ((unsigned int)pw << 1);
|
||||
for (int y = 0; y < ph - 1; y++) {
|
||||
|
|
@ -37,7 +37,7 @@ intArray ZoomLayer::getArea(int xo, int yo, int w, int h) {
|
|||
dl = dr;
|
||||
}
|
||||
}
|
||||
intArray result = IntCache::allocate(w * h);
|
||||
intArray result{static_cast<unsigned int>(w * h)};
|
||||
for (int y = 0; y < h; y++) {
|
||||
System::arraycopy(tmp,
|
||||
(y + (yo & 1)) * (unsigned int)(pw << 1) + (xo & 1),
|
||||
|
|
|
|||
Loading…
Reference in a new issue