mirror of
https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1.git
synced 2026-04-05 23:13:33 +00:00
A bit big of a commit but
Added 3 Fog Choices (Pocket) (Java) (Unknown that was unused) Restored Java Beta Sky Color code that was unused that depends on biome temperature (choosable using Java fog) Tile Shadows and Entity Shadows that appear beneath them have been restored and fixed from the unused code, toggleable by turning fancy graphics on or off Entities will now render flames on themselves when on fire, including the player Added option to use Java Style Item Count text and position in tweaks - fileshredder
This commit is contained in:
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
BIN
data/images/misc/shadow.png
Normal file
BIN
data/images/misc/shadow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 868 B |
BIN
data/images/misc/vignette.png
Normal file
BIN
data/images/misc/vignette.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -1138,13 +1138,13 @@ void Minecraft::init()
|
|||||||
|
|
||||||
|
|
||||||
// my code
|
// my code
|
||||||
TextureId foliageId = (textures->loadTexture("environment/foliagecolor.png")); // loading the uh png for foliage color
|
TextureId foliageId = (textures->loadTexture("misc/foliagecolor.png")); // loading the uh png for foliage color
|
||||||
int* foliagePixels = textures->loadTexturePixels(foliageId, "environment/foliagecolor.png");
|
int* foliagePixels = textures->loadTexturePixels(foliageId, "misc/foliagecolor.png");
|
||||||
// now i can finally initialize foliage color, probably not the best way to handle this but i cant be arsed rn
|
// now i can finally initialize foliage color, probably not the best way to handle this but i cant be arsed rn
|
||||||
FoliageColor::init(foliagePixels);
|
FoliageColor::init(foliagePixels);
|
||||||
|
|
||||||
TextureId grassId = (textures->loadTexture("environment/grasscolor.png")); // loading the uh png for foliage color
|
TextureId grassId = (textures->loadTexture("misc/foliagecolor.png")); // loading the uh png for foliage color
|
||||||
int* grassPixels = textures->loadTexturePixels(grassId, "environment/grasscolor.png");
|
int* grassPixels = textures->loadTexturePixels(grassId, "misc/foliagecolor.png");
|
||||||
GrassColor::init(grassPixels);
|
GrassColor::init(grassPixels);
|
||||||
|
|
||||||
bool tint = options.getBooleanValue(OPTIONS_FOLIAGE_TINT); // finally, toggleable foliage color
|
bool tint = options.getBooleanValue(OPTIONS_FOLIAGE_TINT); // finally, toggleable foliage color
|
||||||
@@ -1401,6 +1401,12 @@ void Minecraft::_levelGenerated()
|
|||||||
player->resetPos(false);
|
player->resetPos(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (level && level->dimension) {
|
||||||
|
// For example, if you want FogType or any other option
|
||||||
|
level->dimension->FogType = options.getBooleanValue(OPTIONS_FOG_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
this->cameraTargetPlayer = player;
|
this->cameraTargetPlayer = player;
|
||||||
|
|
||||||
std::string serverName = options.getStringValue(OPTIONS_USERNAME) + " - " + level->getLevelData()->levelName;
|
std::string serverName = options.getStringValue(OPTIONS_USERNAME) + " - " + level->getLevelData()->levelName;
|
||||||
|
|||||||
@@ -62,6 +62,10 @@ OptionBool serverVisible("servervisible", true);
|
|||||||
|
|
||||||
OptionBool foliageTint("foliagetint", false);
|
OptionBool foliageTint("foliagetint", false);
|
||||||
|
|
||||||
|
OptionInt fogType("fogType", 0, 0, 2);
|
||||||
|
|
||||||
|
OptionBool javaHud("javaHud", false);
|
||||||
|
|
||||||
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
||||||
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
||||||
OptionInt keyBack("key.back", Keyboard::KEY_S);
|
OptionInt keyBack("key.back", Keyboard::KEY_S);
|
||||||
@@ -166,6 +170,11 @@ void Options::initTable() {
|
|||||||
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
||||||
m_options[OPTIONS_FOLIAGE_TINT] = &foliageTint;
|
m_options[OPTIONS_FOLIAGE_TINT] = &foliageTint;
|
||||||
|
|
||||||
|
// more options yay
|
||||||
|
m_options[OPTIONS_FOG_TYPE] = &fogType;
|
||||||
|
|
||||||
|
m_options[OPTIONS_JAVA_HUD] = &javaHud;
|
||||||
|
|
||||||
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
||||||
m_options[OPTIONS_LAST_IP] = &lastIp;
|
m_options[OPTIONS_LAST_IP] = &lastIp;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,6 +85,8 @@ enum OptionId {
|
|||||||
|
|
||||||
OPTIONS_RPI_CURSOR,
|
OPTIONS_RPI_CURSOR,
|
||||||
OPTIONS_FOLIAGE_TINT,
|
OPTIONS_FOLIAGE_TINT,
|
||||||
|
OPTIONS_FOG_TYPE,
|
||||||
|
OPTIONS_JAVA_HUD,
|
||||||
// Should be last!
|
// Should be last!
|
||||||
OPTIONS_COUNT
|
OPTIONS_COUNT
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ const float Gui::DropTicks = 40.0f;
|
|||||||
//#include <android/log.h>
|
//#include <android/log.h>
|
||||||
|
|
||||||
Gui::Gui(Minecraft* minecraft)
|
Gui::Gui(Minecraft* minecraft)
|
||||||
: minecraft(minecraft),
|
: minecraft(minecraft),
|
||||||
tickCount(0),
|
tickCount(0),
|
||||||
progress(0),
|
progress(0),
|
||||||
overlayMessageTime(0),
|
overlayMessageTime(0),
|
||||||
@@ -103,6 +103,12 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @todo - Shredder: I added this here but currently viginette is broken so i cant do much about it.
|
||||||
|
// if (minecraft->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS)){
|
||||||
|
// this->renderVignette(this->minecraft->player->getBrightness(a), screenWidth, screenHeight);
|
||||||
|
// }
|
||||||
|
// shredder end
|
||||||
|
|
||||||
if(minecraft->player->getSleepTimer() > 0) {
|
if(minecraft->player->getSleepTimer() > 0) {
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
glDisable(GL_ALPHA_TEST);
|
glDisable(GL_ALPHA_TEST);
|
||||||
@@ -344,6 +350,8 @@ void Gui::displayClientMessage(const std::string& messageId) {
|
|||||||
addMessage(messageId);
|
addMessage(messageId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @todo - shredder: Function seems to be completely fine and ported over from java beta, but renders opaque??? need to investigate
|
||||||
void Gui::renderVignette(float br, int w, int h) {
|
void Gui::renderVignette(float br, int w, int h) {
|
||||||
br = 1 - br;
|
br = 1 - br;
|
||||||
if (br < 0) br = 0;
|
if (br < 0) br = 0;
|
||||||
@@ -354,7 +362,10 @@ void Gui::renderVignette(float br, int w, int h) {
|
|||||||
glDepthMask(false);
|
glDepthMask(false);
|
||||||
glBlendFunc2(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
|
glBlendFunc2(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
|
||||||
glColor4f2(tbr, tbr, tbr, 1);
|
glColor4f2(tbr, tbr, tbr, 1);
|
||||||
|
|
||||||
minecraft->textures->loadAndBindTexture("misc/vignette.png");
|
minecraft->textures->loadAndBindTexture("misc/vignette.png");
|
||||||
|
glTexParameteri2(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri2(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
|
||||||
Tesselator& t = Tesselator::instance;
|
Tesselator& t = Tesselator::instance;
|
||||||
t.begin();
|
t.begin();
|
||||||
@@ -1105,22 +1116,41 @@ void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) {
|
|||||||
|
|
||||||
// Draw count
|
// Draw count
|
||||||
//Tesselator& t = Tesselator::instance;
|
//Tesselator& t = Tesselator::instance;
|
||||||
glPushMatrix2();
|
|
||||||
glScalef2(InvGuiScale + InvGuiScale, InvGuiScale + InvGuiScale, 1);
|
|
||||||
const float k = 0.5f * GuiScale;
|
|
||||||
|
|
||||||
|
const float k = 0.5f * GuiScale;
|
||||||
|
if (minecraft->options.getBooleanValue(OPTIONS_JAVA_HUD)) // if true enables the java beta item count size and color and calls the java items decorations
|
||||||
|
{
|
||||||
t.beginOverride();
|
t.beginOverride();
|
||||||
if (minecraft->gameMode->isSurvivalType()) {
|
if (minecraft->gameMode->isSurvivalType()) {
|
||||||
x = baseItemX;
|
x = baseItemX;
|
||||||
for (int i = 0; i < slots; i++) {
|
for (int i = 0; i < slots; i++) {
|
||||||
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
||||||
if (item && item->count >= 0)
|
if (item && item->count >= 0)
|
||||||
renderSlotText(item, k*x, k*ySlot + 1, true, true);
|
ItemRenderer::renderGuiItemDecorations(minecraft->font, minecraft->textures, minecraft->player->inventory->getItem(i), x, (float)ySlot);
|
||||||
x += 20;
|
x += 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minecraft->textures->loadAndBindTexture("font/default8.png");
|
minecraft->textures->loadAndBindTexture("font/default8.png");
|
||||||
t.endOverrideAndDraw();
|
t.endOverrideAndDraw();
|
||||||
|
}
|
||||||
|
else { // otherwise uses the normal pocket edition one
|
||||||
|
glPushMatrix2();
|
||||||
|
glScalef2(InvGuiScale + InvGuiScale, InvGuiScale + InvGuiScale, 1);
|
||||||
|
t.beginOverride();
|
||||||
|
if (minecraft->gameMode->isSurvivalType()) {
|
||||||
|
x = baseItemX;
|
||||||
|
for (int i = 0; i < slots; i++) {
|
||||||
|
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
||||||
|
if (item && item->count >= 0)
|
||||||
|
renderSlotText(item, k*x, k*ySlot, true, true);
|
||||||
|
x += 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
minecraft->textures->loadAndBindTexture("font/default8.png");
|
||||||
|
t.endOverrideAndDraw();
|
||||||
|
|
||||||
glPopMatrix2();
|
glPopMatrix2();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -226,7 +226,10 @@ void OptionsScreen::generateOptionScreens() {
|
|||||||
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
||||||
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
||||||
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft)
|
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft)
|
||||||
.addOptionItem(OPTIONS_FOLIAGE_TINT, minecraft);
|
.addOptionItem(OPTIONS_FOLIAGE_TINT, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_JAVA_HUD, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_FOG_TYPE, minecraft);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
LevelRenderer::LevelRenderer( Minecraft* mc)
|
LevelRenderer::LevelRenderer( Minecraft* mc)
|
||||||
: mc(mc),
|
: mc(mc),
|
||||||
textures(mc->textures),
|
textures(mc->textures),
|
||||||
level(NULL),
|
level(NULL),
|
||||||
cullStep(0),
|
cullStep(0),
|
||||||
@@ -49,6 +49,7 @@ LevelRenderer::LevelRenderer( Minecraft* mc)
|
|||||||
xMaxChunk(0), yMaxChunk(0), zMaxChunk(0),
|
xMaxChunk(0), yMaxChunk(0), zMaxChunk(0),
|
||||||
|
|
||||||
lastViewDistance(-1),
|
lastViewDistance(-1),
|
||||||
|
lastFogType(-1),
|
||||||
|
|
||||||
noEntityRenderFrames(2),
|
noEntityRenderFrames(2),
|
||||||
totalEntities(0),
|
totalEntities(0),
|
||||||
@@ -161,6 +162,8 @@ void LevelRenderer::allChanged()
|
|||||||
Tile::leaves_carried->setFancy(fancy);
|
Tile::leaves_carried->setFancy(fancy);
|
||||||
lastViewDistance = mc->options.getIntValue(OPTIONS_VIEW_DISTANCE);
|
lastViewDistance = mc->options.getIntValue(OPTIONS_VIEW_DISTANCE);
|
||||||
|
|
||||||
|
lastFogType = mc->options.getIntValue(OPTIONS_FOG_TYPE);
|
||||||
|
|
||||||
bool tint = mc->options.getBooleanValue(OPTIONS_FOLIAGE_TINT);
|
bool tint = mc->options.getBooleanValue(OPTIONS_FOLIAGE_TINT);
|
||||||
FoliageColor::setUseTint(tint);
|
FoliageColor::setUseTint(tint);
|
||||||
GrassColor::setUseTint(tint);
|
GrassColor::setUseTint(tint);
|
||||||
@@ -171,9 +174,9 @@ void LevelRenderer::allChanged()
|
|||||||
dist = (int)((float)dist * 0.8f);
|
dist = (int)((float)dist * 0.8f);
|
||||||
LOGI("last: %d, power: %d\n", lastViewDistance, mc->isPowerVR());
|
LOGI("last: %d, power: %d\n", lastViewDistance, mc->isPowerVR());
|
||||||
|
|
||||||
#if defined(RPI)
|
#if defined(RPI)
|
||||||
dist *= 0.6f;
|
dist *= 0.6f;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (dist > 400) dist = 400;
|
if (dist > 400) dist = 400;
|
||||||
/*
|
/*
|
||||||
@@ -312,6 +315,17 @@ int LevelRenderer::render( Mob* player, int layer, float alpha )
|
|||||||
allChanged();
|
allChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int currentFogType = mc->options.getIntValue(OPTIONS_FOG_TYPE);
|
||||||
|
if (currentFogType != lastFogType) {
|
||||||
|
lastFogType = currentFogType;
|
||||||
|
|
||||||
|
if (level && level->dimension) {
|
||||||
|
level->dimension->FogType = currentFogType; // use new fog stuff
|
||||||
|
}
|
||||||
|
|
||||||
|
allChanged();
|
||||||
|
}
|
||||||
|
|
||||||
TIMER_PUSH("sortchunks");
|
TIMER_PUSH("sortchunks");
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
chunkFixOffs = (chunkFixOffs + 1) % chunksLength;
|
chunkFixOffs = (chunkFixOffs + 1) % chunksLength;
|
||||||
@@ -580,11 +594,11 @@ int LevelRenderer::renderChunks( int from, int to, int layer, float alpha )
|
|||||||
|
|
||||||
for (unsigned int i = 0; i < _renderChunks.size(); ++i) {
|
for (unsigned int i = 0; i < _renderChunks.size(); ++i) {
|
||||||
Chunk* chunk = _renderChunks[i];
|
Chunk* chunk = _renderChunks[i];
|
||||||
#ifdef USE_VBO
|
#ifdef USE_VBO
|
||||||
renderList.addR(chunk->getRenderChunk(layer));
|
renderList.addR(chunk->getRenderChunk(layer));
|
||||||
#else
|
#else
|
||||||
renderList.add(chunk->getList(layer));
|
renderList.add(chunk->getList(layer));
|
||||||
#endif
|
#endif
|
||||||
renderList.next();
|
renderList.next();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1139,53 +1153,53 @@ void LevelRenderer::addParticle(const std::string& name, float x, float y, float
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
void LevelRenderer::addParticle(ParticleType::Id name, float x, float y, float z, float xa, float ya, float za, int data) {
|
void LevelRenderer::addParticle(ParticleType::Id name, float x, float y, float z, float xa, float ya, float za, int data) {
|
||||||
float xd = mc->cameraTargetPlayer->x - x;
|
float xd = mc->cameraTargetPlayer->x - x;
|
||||||
float yd = mc->cameraTargetPlayer->y - y;
|
float yd = mc->cameraTargetPlayer->y - y;
|
||||||
float zd = mc->cameraTargetPlayer->z - z;
|
float zd = mc->cameraTargetPlayer->z - z;
|
||||||
|
|
||||||
const float particleDistance = 16;
|
const float particleDistance = 16;
|
||||||
if (xd * xd + yd * yd + zd * zd > particleDistance * particleDistance) return;
|
if (xd * xd + yd * yd + zd * zd > particleDistance * particleDistance) return;
|
||||||
|
|
||||||
//static Stopwatch sw;
|
//static Stopwatch sw;
|
||||||
//sw.start();
|
//sw.start();
|
||||||
|
|
||||||
//Particle* p = NULL;
|
//Particle* p = NULL;
|
||||||
|
|
||||||
if (name == ParticleType::bubble) mc->particleEngine->add( new BubbleParticle(level, x, y, z, xa, ya, za) );
|
if (name == ParticleType::bubble) mc->particleEngine->add( new BubbleParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::crit) mc->particleEngine->add(new CritParticle2(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::crit) mc->particleEngine->add(new CritParticle2(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::smoke) mc->particleEngine->add(new SmokeParticle(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::smoke) mc->particleEngine->add(new SmokeParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::explode) mc->particleEngine->add( new ExplodeParticle(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::explode) mc->particleEngine->add( new ExplodeParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::flame) mc->particleEngine->add( new FlameParticle(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::flame) mc->particleEngine->add( new FlameParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::lava) mc->particleEngine->add( new LavaParticle(level, x, y, z) );
|
else if (name == ParticleType::lava) mc->particleEngine->add( new LavaParticle(level, x, y, z) );
|
||||||
else if (name == ParticleType::largesmoke) mc->particleEngine->add( new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f) );
|
else if (name == ParticleType::largesmoke) mc->particleEngine->add( new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f) );
|
||||||
else if (name == ParticleType::reddust) mc->particleEngine->add( new RedDustParticle(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::reddust) mc->particleEngine->add( new RedDustParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::iconcrack) mc->particleEngine->add( new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]) );
|
else if (name == ParticleType::iconcrack) mc->particleEngine->add( new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]) );
|
||||||
|
|
||||||
//switch (name) {
|
//switch (name) {
|
||||||
// case ParticleType::bubble: p = new BubbleParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::bubble: p = new BubbleParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::crit: p = new CritParticle2(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::crit: p = new CritParticle2(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::smoke: p = new SmokeParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::smoke: p = new SmokeParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// //case ParticleType::note: p = new NoteParticle(level, x, y, z, xa, ya, za); break;
|
// //case ParticleType::note: p = new NoteParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::explode: p = new ExplodeParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::explode: p = new ExplodeParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::flame: p = new FlameParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::flame: p = new FlameParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::lava: p = new LavaParticle(level, x, y, z); break;
|
// case ParticleType::lava: p = new LavaParticle(level, x, y, z); break;
|
||||||
// //case ParticleType::splash: p = new SplashParticle(level, x, y, z, xa, ya, za); break;
|
// //case ParticleType::splash: p = new SplashParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::largesmoke: p = new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f); break;
|
// case ParticleType::largesmoke: p = new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f); break;
|
||||||
// case ParticleType::reddust: p = new RedDustParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::reddust: p = new RedDustParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::iconcrack: p = new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]); break;
|
// case ParticleType::iconcrack: p = new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]); break;
|
||||||
// //case ParticleType::snowballpoof: p = new BreakingItemParticle(level, x, y, z, Item::snowBall); break;
|
// //case ParticleType::snowballpoof: p = new BreakingItemParticle(level, x, y, z, Item::snowBall); break;
|
||||||
// //case ParticleType::slime: p = new BreakingItemParticle(level, x, y, z, Item::slimeBall); break;
|
// //case ParticleType::slime: p = new BreakingItemParticle(level, x, y, z, Item::slimeBall); break;
|
||||||
// //case ParticleType::heart: p = new HeartParticle(level, x, y, z, xa, ya, za); break;
|
// //case ParticleType::heart: p = new HeartParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// default:
|
// default:
|
||||||
// LOGW("Couldn't find particle of type: %d\n", name);
|
// LOGW("Couldn't find particle of type: %d\n", name);
|
||||||
// break;
|
// break;
|
||||||
//}
|
//}
|
||||||
//if (p) {
|
//if (p) {
|
||||||
// mc->particleEngine->add(p);
|
// mc->particleEngine->add(p);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//sw.stop();
|
//sw.stop();
|
||||||
//sw.printEvery(50, "add-particle-enum");
|
//sw.printEvery(50, "add-particle-enum");
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -113,6 +113,9 @@ private:
|
|||||||
bool occlusionCheck;
|
bool occlusionCheck;
|
||||||
int lastViewDistance;
|
int lastViewDistance;
|
||||||
|
|
||||||
|
// shredder added again...
|
||||||
|
int lastFogType;
|
||||||
|
|
||||||
int ticks;
|
int ticks;
|
||||||
int starList, skyList, darkList;
|
int starList, skyList, darkList;
|
||||||
|
|
||||||
|
|||||||
@@ -40,18 +40,18 @@ EntityRenderDispatcher::EntityRenderDispatcher()
|
|||||||
{
|
{
|
||||||
//@note: The Models (model/armor) will be deleted by resp. MobRenderer
|
//@note: The Models (model/armor) will be deleted by resp. MobRenderer
|
||||||
assign( ER_ITEM_RENDERER, new ItemRenderer());
|
assign( ER_ITEM_RENDERER, new ItemRenderer());
|
||||||
assign( ER_HUMANOID_RENDERER, new HumanoidMobRenderer(new HumanoidModel(), 0));
|
assign( ER_HUMANOID_RENDERER, new HumanoidMobRenderer(new HumanoidModel(), 0.5));
|
||||||
assign( ER_PIG_RENDERER, new PigRenderer(new PigModel(), NULL/*new PigModel(0.5f)*/, 0));
|
assign( ER_PIG_RENDERER, new PigRenderer(new PigModel(0.5), NULL/*new PigModel(0.5f)*/, 0.7));
|
||||||
assign( ER_COW_RENDERER, new MobRenderer(new CowModel(), 0));
|
assign( ER_COW_RENDERER, new MobRenderer(new CowModel(), 0.7));
|
||||||
assign( ER_CHICKEN_RENDERER, new ChickenRenderer( new ChickenModel(), 0));
|
assign( ER_CHICKEN_RENDERER, new ChickenRenderer( new ChickenModel(), 0.3));
|
||||||
assign( ER_SHEEP_RENDERER, new SheepRenderer(new SheepModel(), new SheepFurModel(), 0));
|
assign( ER_SHEEP_RENDERER, new SheepRenderer(new SheepModel(), new SheepFurModel(), 0.7));
|
||||||
assign( ER_SKELETON_RENDERER, new HumanoidMobRenderer(new SkeletonModel(), 0.5f));
|
assign( ER_SKELETON_RENDERER, new HumanoidMobRenderer(new SkeletonModel(), 0.5f));
|
||||||
assign( ER_ZOMBIE_RENDERER, new HumanoidMobRenderer(new ZombieModel(), 0.5f));
|
assign( ER_ZOMBIE_RENDERER, new HumanoidMobRenderer(new ZombieModel(), 0.5f));
|
||||||
assign( ER_CREEPER_RENDERER, new CreeperRenderer());
|
assign( ER_CREEPER_RENDERER, new CreeperRenderer());
|
||||||
assign( ER_SPIDER_RENDERER, new SpiderRenderer());
|
assign( ER_SPIDER_RENDERER, new SpiderRenderer());
|
||||||
assign( ER_TNT_RENDERER, new TntRenderer());
|
assign( ER_TNT_RENDERER, new TntRenderer());
|
||||||
assign( ER_ARROW_RENDERER, new ArrowRenderer());
|
assign( ER_ARROW_RENDERER, new ArrowRenderer());
|
||||||
assign( ER_PLAYER_RENDERER, new PlayerRenderer(new HumanoidModel(0, 0, 64, 64), 0));
|
assign( ER_PLAYER_RENDERER, new PlayerRenderer(new HumanoidModel(0, 0, 64, 64), 0.5));
|
||||||
assign( ER_THROWNEGG_RENDERER, new ItemSpriteRenderer(Item::egg->getIcon(0)));
|
assign( ER_THROWNEGG_RENDERER, new ItemSpriteRenderer(Item::egg->getIcon(0)));
|
||||||
assign( ER_SNOWBALL_RENDERER, new ItemSpriteRenderer(Item::snowBall->getIcon(0)));
|
assign( ER_SNOWBALL_RENDERER, new ItemSpriteRenderer(Item::snowBall->getIcon(0)));
|
||||||
assign( ER_PAINTING_RENDERER, new PaintingRenderer());
|
assign( ER_PAINTING_RENDERER, new PaintingRenderer());
|
||||||
@@ -133,7 +133,7 @@ void EntityRenderDispatcher::render( Entity* entity, float x, float y, float z,
|
|||||||
EntityRenderer* renderer = getRenderer(entity);
|
EntityRenderer* renderer = getRenderer(entity);
|
||||||
if (renderer != NULL) {
|
if (renderer != NULL) {
|
||||||
renderer->render(entity, x, y, z, rot, a);
|
renderer->render(entity, x, y, z, rot, a);
|
||||||
//renderer->postRender(entity, x, y, z, rot, a);
|
renderer->postRender(entity, x, y, z, rot, a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,17 @@
|
|||||||
#include "../gles.h"
|
#include "../gles.h"
|
||||||
#include "../../../world/phys/AABB.h"
|
#include "../../../world/phys/AABB.h"
|
||||||
#include "EntityRenderDispatcher.h"
|
#include "EntityRenderDispatcher.h"
|
||||||
|
#include "../../../util/Mth.h"
|
||||||
|
#include "../../../world/level/Level.h"
|
||||||
|
#include "../../../world/level/tile/Tile.h"
|
||||||
|
|
||||||
|
#include "../../Minecraft.h"
|
||||||
|
#include "../../Option.h"
|
||||||
|
|
||||||
EntityRenderDispatcher* EntityRenderer::entityRenderDispatcher = NULL;
|
EntityRenderDispatcher* EntityRenderer::entityRenderDispatcher = NULL;
|
||||||
|
|
||||||
EntityRenderer::EntityRenderer()
|
EntityRenderer::EntityRenderer()
|
||||||
: shadowRadius(0),
|
: shadowRadius(0),
|
||||||
shadowStrength(1.0f)
|
shadowStrength(1.0f)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -36,37 +42,37 @@ void EntityRenderer::render(const AABB& bb, float xo, float yo, float zo) {
|
|||||||
glColor4f2(1, 1, 1, 1);
|
glColor4f2(1, 1, 1, 1);
|
||||||
t.begin();
|
t.begin();
|
||||||
t.offset(xo, yo, zo);
|
t.offset(xo, yo, zo);
|
||||||
//t.normal(0, 0, -1);
|
t.normal(0, 0, -1);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||||
|
|
||||||
//t.normal(0, 0, 1);
|
t.normal(0, 0, 1);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z1);
|
t.vertex(bb.x1, bb.y0, bb.z1);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||||
|
|
||||||
//t.normal(0, -1, 0);
|
t.normal(0, -1, 0);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z1);
|
t.vertex(bb.x1, bb.y0, bb.z1);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||||
|
|
||||||
//t.normal(0, 1, 0);
|
t.normal(0, 1, 0);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||||
|
|
||||||
//t.normal(-1, 0, 0);
|
t.normal(-1, 0, 0);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||||
|
|
||||||
//t.normal(1, 0, 0);
|
t.normal(1, 0, 0);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||||
@@ -116,134 +122,139 @@ Font* EntityRenderer::getFont() {
|
|||||||
return entityRenderDispatcher->getFont();
|
return entityRenderDispatcher->getFont();
|
||||||
}
|
}
|
||||||
|
|
||||||
//void postRender(Entity entity, float x, float y, float z, float rot, float a) {
|
void EntityRenderer::postRender(Entity* entity, float x, float y, float z, float rot, float a) {
|
||||||
// if (entityRenderDispatcher.options.fancyGraphics && shadowRadius > 0) {
|
if (/*entityRenderDispatcher.options.fancyGraphics &&*/entityRenderDispatcher->minecraft->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS) && shadowRadius > 0) {
|
||||||
// float dist = entityRenderDispatcher.distanceToSqr(entity.x, entity.y, entity.z);
|
float dist = entityRenderDispatcher->distanceToSqr(entity->x, entity->y, entity->z);
|
||||||
// float pow = (float) ((1 - dist / (16.0f * 16.0f)) * shadowStrength);
|
float pow = (float) ((1 - dist / (16.0f * 16.0f)) * shadowStrength);
|
||||||
// if (pow > 0) {
|
if (pow > 0) {
|
||||||
// renderShadow(entity, x, y, z, pow, a);
|
renderShadow(entity, x, y, z, pow, a);
|
||||||
// }
|
}
|
||||||
// }
|
//}
|
||||||
// if (entity.isOnFire()) renderFlame(entity, x, y, z, a);
|
if (entity->isOnFire()) renderFlame(entity, x, y, z, a);
|
||||||
//}
|
}
|
||||||
|
}
|
||||||
|
void EntityRenderer::renderFlame(Entity* e, float x, float y, float z, float a) {
|
||||||
|
|
||||||
//void renderFlame(Entity e, float x, float y, float z, float a) {
|
int tex = ((Tile*)Tile::fire)->tex;
|
||||||
// glDisable2(GL_LIGHTING);
|
|
||||||
// int tex = Tile.fire.tex;
|
|
||||||
|
|
||||||
// int xt = (tex & 0xf) << 4;
|
int xt = (tex & 0xf) << 4;
|
||||||
// int yt = tex & 0xf0;
|
int yt = tex & 0xf0;
|
||||||
|
|
||||||
// float u0 = (xt) / 256.0f;
|
float u0 = (xt) / 256.0f;
|
||||||
// float u1 = (xt + 15.99f) / 256.0f;
|
float u1 = (xt + 15.99f) / 256.0f;
|
||||||
// float v0 = (yt) / 256.0f;
|
float v0 = (yt) / 256.0f;
|
||||||
// float v1 = (yt + 15.99f) / 256.0f;
|
float v1 = (yt + 15.99f) / 256.0f;
|
||||||
|
|
||||||
// glPushMatrix2();
|
glPushMatrix2();
|
||||||
// glTranslatef2((float) x, (float) y, (float) z);
|
glTranslatef2((float) x, (float) y, (float) z);
|
||||||
|
|
||||||
// float s = e.bbWidth * 1.4f;
|
float s = e->bbWidth * 1.4f;
|
||||||
// glScalef2(s, s, s);
|
glScalef2(s, s, s);
|
||||||
// bindTexture("terrain.png");
|
bindTexture("terrain.png");
|
||||||
// Tesselator t = Tesselator.instance;
|
Tesselator& t = Tesselator::instance;
|
||||||
|
|
||||||
// float r = 1.0f;
|
float r = 1.0f;
|
||||||
// float xo = 0.5f;
|
float xo = 0.5f;
|
||||||
// float yo = 0.0f;
|
float yo = 0.0f;
|
||||||
|
|
||||||
// float h = e.bbHeight / e.bbWidth;
|
float h = e->bbHeight / e->bbWidth;
|
||||||
|
|
||||||
// glRotatef2(-entityRenderDispatcher.playerRotY, 0, 1, 0);
|
glRotatef2(-entityRenderDispatcher->playerRotY, 0, 1, 0);
|
||||||
// glTranslatef2(0, 0, -0.4f + ((int) h) * 0.02f);
|
glTranslatef2(0, 0, -0.4f + ((int) h) * 0.02f);
|
||||||
// glColor4f2(1, 1, 1, 1);
|
glColor4f2(1, 1, 1, 1);
|
||||||
// // glRotatef2(-playerRotX, 1, 0, 0);
|
// glRotatef2(-playerRotX, 1, 0, 0);
|
||||||
// t.begin();
|
t.begin();
|
||||||
// while (h > 0) {
|
while (h > 0) {
|
||||||
// t.vertexUV(r - xo, 0 - yo, 0, u1, v1);
|
t.vertexUV(r - xo, 0 - yo, 0, u1, v1);
|
||||||
// t.vertexUV(0 - xo, 0 - yo, 0, u0, v1);
|
t.vertexUV(0 - xo, 0 - yo, 0, u0, v1);
|
||||||
// t.vertexUV(0 - xo, 1.4f - yo, 0, u0, v0);
|
t.vertexUV(0 - xo, 1.4f - yo, 0, u0, v0);
|
||||||
// t.vertexUV(r - xo, 1.4f - yo, 0, u1, v0);
|
t.vertexUV(r - xo, 1.4f - yo, 0, u1, v0);
|
||||||
// h -= 1;
|
h -= 1;
|
||||||
// yo -= 1;
|
yo -= 1;
|
||||||
// r *= 0.9f;
|
r *= 0.9f;
|
||||||
// glTranslatef2(0, 0, -0.04f);
|
glTranslatef2(0, 0, -0.04f);
|
||||||
// }
|
}
|
||||||
// t.end();
|
t.draw();
|
||||||
// glPopMatrix2();
|
glPopMatrix2();
|
||||||
// glEnable2(GL_LIGHTING);
|
// glEnable2(GL_LIGHTING);
|
||||||
//}
|
}
|
||||||
|
|
||||||
//void renderShadow(Entity e, float x, float y, float z, float pow, float a) {
|
void EntityRenderer::renderShadow(Entity* e, float x, float y, float z, float pow, float a) { //
|
||||||
// glEnable2(GL_BLEND);
|
glEnable2(GL_BLEND);
|
||||||
// glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
// Textures textures = entityRenderDispatcher.textures;
|
//Textures* textures = entityRenderDispatcher->textures;
|
||||||
// textures.bind(textures.loadTexture("%clamp%/misc/shadow.png"));
|
//textures->bind(textures->loadTexture("%clamp%/environment/shadow.png"));
|
||||||
|
Textures* textures = entityRenderDispatcher->textures;
|
||||||
|
textures->bind(textures->loadTexture("/misc/shadow.png"));
|
||||||
|
|
||||||
// Level level = getLevel();
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
|
||||||
// glDepthMask(false);
|
Level* level = getLevel();
|
||||||
// float r = shadowRadius;
|
|
||||||
|
|
||||||
// float ex = e.xOld + (e.x - e.xOld) * a;
|
glDepthMask(false);
|
||||||
// float ey = e.yOld + (e.y - e.yOld) * a + e.getShadowHeightOffs();
|
float r = shadowRadius;
|
||||||
// float ez = e.zOld + (e.z - e.zOld) * a;
|
|
||||||
|
|
||||||
// int x0 = Mth.floor(ex - r);
|
float ex = e->xOld + (e->x - e->xOld) * a;
|
||||||
// int x1 = Mth.floor(ex + r);
|
float ey = e->yOld + (e->y - e->yOld) * a + e->getShadowHeightOffs();
|
||||||
// int y0 = Mth.floor(ey - r);
|
float ez = e->zOld + (e->z - e->zOld) * a;
|
||||||
// int y1 = Mth.floor(ey);
|
|
||||||
// int z0 = Mth.floor(ez - r);
|
|
||||||
// int z1 = Mth.floor(ez + r);
|
|
||||||
|
|
||||||
// float xo = x - ex;
|
int x0 = Mth::floor(ex - r);
|
||||||
// float yo = y - ey;
|
int x1 = Mth::floor(ex + r);
|
||||||
// float zo = z - ez;
|
int y0 = Mth::floor(ey - r);
|
||||||
|
int y1 = Mth::floor(ey);
|
||||||
|
int z0 = Mth::floor(ez - r);
|
||||||
|
int z1 = Mth::floor(ez + r);
|
||||||
|
|
||||||
// Tesselator tt = Tesselator.instance;
|
float xo = x - ex;
|
||||||
// tt.begin();
|
float yo = y - ey;
|
||||||
// for (int xt = x0; xt <= x1; xt++)
|
float zo = z - ez;
|
||||||
// for (int yt = y0; yt <= y1; yt++)
|
|
||||||
// for (int zt = z0; zt <= z1; zt++) {
|
|
||||||
// int t = level.getTile(xt, yt - 1, zt);
|
|
||||||
// if (t > 0 && level.getRawBrightness(xt, yt, zt) > 3) {
|
|
||||||
// renderTileShadow(Tile.tiles[t], x, y + e.getShadowHeightOffs(), z, xt, yt, zt, pow, r, xo, yo + e.getShadowHeightOffs(), zo);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// tt.end();
|
|
||||||
|
|
||||||
// glColor4f2(1, 1, 1, 1);
|
Tesselator& tt = Tesselator::instance;
|
||||||
// glDisable2(GL_BLEND);
|
tt.begin();
|
||||||
// glDepthMask(true);
|
for (int xt = x0; xt <= x1; xt++)
|
||||||
//}
|
for (int yt = y0; yt <= y1; yt++)
|
||||||
|
for (int zt = z0; zt <= z1; zt++) {
|
||||||
|
int t = level->getTile(xt, yt - 1, zt);
|
||||||
|
if (t > 0 && level->getRawBrightness(xt, yt, zt) > 3) {
|
||||||
|
renderTileShadow(Tile::tiles[t], x, y + e->getShadowHeightOffs(), z, xt, yt, zt, pow, r, xo, yo + e->getShadowHeightOffs(), zo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tt.draw();
|
||||||
|
|
||||||
//Level* getLevel() {
|
glColor4f2(1, 1, 1, 1);
|
||||||
// return entityRenderDispatcher.level;
|
glDisable2(GL_BLEND);
|
||||||
//}
|
glDepthMask(true);
|
||||||
|
}
|
||||||
|
|
||||||
//void renderTileShadow(Tile tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo) {
|
Level* EntityRenderer::getLevel() {
|
||||||
// Tesselator t = Tesselator.instance;
|
return entityRenderDispatcher->level;
|
||||||
// if (!tt.isCubeShaped()) return;
|
}
|
||||||
|
|
||||||
// float a = ((pow - (y - (yt + yo)) / 2) * 0.5f) * getLevel().getBrightness(xt, yt, zt);
|
void EntityRenderer::renderTileShadow(Tile* tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo) {
|
||||||
// if (a < 0) return;
|
Tesselator& t = Tesselator::instance;
|
||||||
// if (a > 1) a = 1;
|
if (!tt->isCubeShaped()) return;
|
||||||
// t.color(1, 1, 1, (float) a);
|
|
||||||
// // glColor4f2(1, 1, 1, (float) a);
|
|
||||||
|
|
||||||
// float x0 = xt + tt.xx0 + xo;
|
float a = ((pow - (y - (yt + yo)) / 2) * 0.5f) * getLevel()->getBrightness(xt, yt, zt);
|
||||||
// float x1 = xt + tt.xx1 + xo;
|
if (a < 0) return;
|
||||||
// float y0 = yt + tt.yy0 + yo + 1.0 / 64.0f;
|
if (a > 1) a = 1;
|
||||||
// float z0 = zt + tt.zz0 + zo;
|
// t.color(1, 1, 1, (float) a);
|
||||||
// float z1 = zt + tt.zz1 + zo;
|
glColor4f2(1, 1, 1, (float) a);
|
||||||
|
|
||||||
// float u0 = (float) ((x - (x0)) / 2 / r + 0.5f);
|
float x0 = xt + tt->xx0 + xo;
|
||||||
// float u1 = (float) ((x - (x1)) / 2 / r + 0.5f);
|
float x1 = xt + tt->xx1 + xo;
|
||||||
// float v0 = (float) ((z - (z0)) / 2 / r + 0.5f);
|
float y0 = yt + tt->yy0 + yo + 1.0 / 64.0f;
|
||||||
// float v1 = (float) ((z - (z1)) / 2 / r + 0.5f);
|
float z0 = zt + tt->zz0 + zo;
|
||||||
|
float z1 = zt + tt->zz1 + zo;
|
||||||
|
|
||||||
// t.vertexUV(x0, y0, z0, u0, v0);
|
float u0 = (float) ((x - (x0)) / 2 / r + 0.5f);
|
||||||
// t.vertexUV(x0, y0, z1, u0, v1);
|
float u1 = (float) ((x - (x1)) / 2 / r + 0.5f);
|
||||||
// t.vertexUV(x1, y0, z1, u1, v1);
|
float v0 = (float) ((z - (z0)) / 2 / r + 0.5f);
|
||||||
// t.vertexUV(x1, y0, z0, u1, v0);
|
float v1 = (float) ((z - (z1)) / 2 / r + 0.5f);
|
||||||
//}
|
|
||||||
|
t.vertexUV(x0, y0, z0, u0, v0);
|
||||||
|
t.vertexUV(x0, y0, z1, u0, v1);
|
||||||
|
t.vertexUV(x1, y0, z1, u1, v1);
|
||||||
|
t.vertexUV(x1, y0, z0, u1, v0);
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ class EntityRenderDispatcher;
|
|||||||
class Entity;
|
class Entity;
|
||||||
class AABB;
|
class AABB;
|
||||||
class Font;
|
class Font;
|
||||||
|
class Tile;
|
||||||
|
class Level;
|
||||||
|
|
||||||
class EntityRenderer
|
class EntityRenderer
|
||||||
{
|
{
|
||||||
@@ -24,6 +26,11 @@ public:
|
|||||||
virtual void render(Entity* entity, float x, float y, float z, float rot, float a) = 0;
|
virtual void render(Entity* entity, float x, float y, float z, float rot, float a) = 0;
|
||||||
static void render(const AABB& bb, float xo, float yo, float zo);
|
static void render(const AABB& bb, float xo, float yo, float zo);
|
||||||
static void renderFlat(const AABB& bb);
|
static void renderFlat(const AABB& bb);
|
||||||
|
void renderShadow(Entity* e, float x, float y, float z, float pow, float a);
|
||||||
|
void renderTileShadow(Tile* tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo);
|
||||||
|
void renderFlame(Entity* e, float x, float y, float z, float a);
|
||||||
|
void postRender(Entity* entity, float x, float y, float z, float rot, float a);
|
||||||
|
Level* getLevel();
|
||||||
|
|
||||||
Font* getFont();
|
Font* getFont();
|
||||||
|
|
||||||
|
|||||||
@@ -226,7 +226,40 @@ void ItemRenderer::renderGuiItem(Font* font, Textures* textures, const ItemInsta
|
|||||||
t.draw();
|
t.draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemRenderer::renderGuiItemDecorations(const ItemInstance* item, float x, float y) {
|
|
||||||
|
void ItemRenderer::renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y){ // this is normally unused in the header but i ported it from java beta - shredder
|
||||||
|
if (item != NULL) {
|
||||||
|
if (item->count > 1) {
|
||||||
|
std::string countStr = std::to_string(item->count);
|
||||||
|
// glDisable(GL_LIGHTING);
|
||||||
|
// glDisable(GL_DEPTH_TEST);
|
||||||
|
font->drawShadow(countStr, x + 19 - 2 - font->width(countStr),
|
||||||
|
y + 6 + 3, 0xFFFFFF);
|
||||||
|
// glEnable(GL_LIGHTING);
|
||||||
|
// glEnable(GL_DEPTH_TEST);
|
||||||
|
}
|
||||||
|
if (item->isDamaged()) {
|
||||||
|
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage() + 0.5);
|
||||||
|
int cc = (int) std::floor(255.5f - (float) item->getDamageValue() * 255.0f / (float) item->getMaxDamage() + 0.5);
|
||||||
|
// glDisable(GL_LIGHTING);
|
||||||
|
// glDisable(GL_DEPTH_TEST);
|
||||||
|
// glDisable(GL_TEXTURE_2D);
|
||||||
|
// auto var8 = ::net::minecraft::client::renderer::Tesselator::instance();
|
||||||
|
Tesselator& t = Tesselator::instance;
|
||||||
|
int ca = 255 - cc << 16 | cc << 8;
|
||||||
|
int cb = (255 - cc) / 4 << 16 | 16128;
|
||||||
|
fillRect(t, x + 2, y + 13, 13, 2, 0);
|
||||||
|
fillRect(t, x + 2, y + 13, 12, 1, cb);
|
||||||
|
fillRect(t, x + 2, y + 13, p, 1, ca);
|
||||||
|
// glEnable(GL_TEXTURE_2D);
|
||||||
|
// glEnable(GL_LIGHTING);
|
||||||
|
// glEnable(GL_DEPTH_TEST);
|
||||||
|
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ItemRenderer::renderGuiItemDecorations(const ItemInstance* item, float x, float y) { // nothing changed here this is the normal pocket edition one.
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
if (item->count > 0 && item->isDamaged()) {
|
if (item->count > 0 && item->isDamaged()) {
|
||||||
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage());
|
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage());
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public:
|
|||||||
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, bool fancy);
|
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, bool fancy);
|
||||||
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, float w, float h, bool fancy);
|
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, float w, float h, bool fancy);
|
||||||
static void renderGuiItemCorrect(Font* font, Textures* textures, const ItemInstance* item, int x, int y);
|
static void renderGuiItemCorrect(Font* font, Textures* textures, const ItemInstance* item, int x, int y);
|
||||||
//void renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y);
|
static void renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y);
|
||||||
static void renderGuiItemDecorations(const ItemInstance* item, float x, float y);
|
static void renderGuiItemDecorations(const ItemInstance* item, float x, float y);
|
||||||
|
|
||||||
static void blit(float x, float y, float sx, float sy, float w, float h);
|
static void blit(float x, float y, float sx, float sy, float w, float h);
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ void MobRenderer::render(Entity* e, float x, float y, float z, float rot, float
|
|||||||
//glEnable2(GL_DEPTH_TEST);
|
//glEnable2(GL_DEPTH_TEST);
|
||||||
|
|
||||||
glPopMatrix2();
|
glPopMatrix2();
|
||||||
|
postRender(mob, x, y, z, rot, a);
|
||||||
renderName(mob, x, y, z);
|
renderName(mob, x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
98
src/util/Color.cpp
Normal file
98
src/util/Color.cpp
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
#include "Mth.h"
|
||||||
|
|
||||||
|
#include "Color.h"
|
||||||
|
#include <cassert>
|
||||||
|
|
||||||
|
//Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0).
|
||||||
|
//Alpha is defaulted to 1.0. The actual color used in rendering depends on finding the best match given the color space
|
||||||
|
//available for a particular output device.
|
||||||
|
//Parameters:
|
||||||
|
//r - the red component
|
||||||
|
//g - the green component
|
||||||
|
//b - the blue component
|
||||||
|
//Throws:
|
||||||
|
//IllegalArgumentException - if r, g or b are outside of the range 0.0 to 1.0, inclusive
|
||||||
|
Color::Color( float r, float g, float b)
|
||||||
|
{
|
||||||
|
assert( r >= 0.0f && r <= 1.0f );
|
||||||
|
assert( g >= 0.0f && g <= 1.0f );
|
||||||
|
assert( b >= 0.0f && b <= 1.0f );
|
||||||
|
|
||||||
|
//argb
|
||||||
|
colour = ( (0xFF<<24) | ( (int)(r*255)<<16 ) | ( (int)(g*255)<<8 ) | ( (int)(b*255) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
Color::Color( int r, int g, int b)
|
||||||
|
{
|
||||||
|
colour = ( (0xFF<<24) | ( (r&0xff)<<16 ) | ( (g&0xff)<<8 ) | ( (b&0xff) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Creates a Color object based on the specified values for the HSB color model.
|
||||||
|
//The s and b components should be floating-point values between zero and one (numbers in the range 0.0-1.0).
|
||||||
|
//The h component can be any floating-point number. The floor of this number is subtracted from it to create a fraction between 0 and 1.
|
||||||
|
//This fractional number is then multiplied by 360 to produce the hue angle in the HSB color model.
|
||||||
|
//
|
||||||
|
//Parameters:
|
||||||
|
//h - the hue component
|
||||||
|
//s - the saturation of the color
|
||||||
|
//b - the brightness of the color
|
||||||
|
//Returns:
|
||||||
|
//a Color object with the specified hue, saturation, and brightness.
|
||||||
|
Color Color::getHSBColor(float hue, float saturation, float brightness)
|
||||||
|
{
|
||||||
|
int r = 0, g = 0, b = 0;
|
||||||
|
if (saturation == 0)
|
||||||
|
{
|
||||||
|
r = g = b = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float h = (hue - (float)floor(hue)) * 6.0f;
|
||||||
|
float f = h - (float)floor(h);
|
||||||
|
float p = brightness * (1.0f - saturation);
|
||||||
|
float q = brightness * (1.0f - saturation * f);
|
||||||
|
float t = brightness * (1.0f - (saturation * (1.0f - f)));
|
||||||
|
switch ((int) h)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
r = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
g = (int) (t * 255.0f + 0.5f);
|
||||||
|
b = (int) (p * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
r = (int) (q * 255.0f + 0.5f);
|
||||||
|
g = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
b = (int) (p * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
r = (int) (p * 255.0f + 0.5f);
|
||||||
|
g = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
b = (int) (t * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
r = (int) (p * 255.0f + 0.5f);
|
||||||
|
g = (int) (q * 255.0f + 0.5f);
|
||||||
|
b = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
r = (int) (t * 255.0f + 0.5f);
|
||||||
|
g = (int) (p * 255.0f + 0.5f);
|
||||||
|
b = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
r = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
g = (int) (p * 255.0f + 0.5f);
|
||||||
|
b = (int) (q * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return Color( r, g, b );
|
||||||
|
}
|
||||||
|
|
||||||
|
int Color::getRGB()
|
||||||
|
{
|
||||||
|
return colour;
|
||||||
|
}
|
||||||
15
src/util/Color.h
Normal file
15
src/util/Color.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
class Color
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int colour;
|
||||||
|
|
||||||
|
public:
|
||||||
|
//Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0).
|
||||||
|
Color( float r, float g, float b);
|
||||||
|
Color( int r, int g, int b);
|
||||||
|
|
||||||
|
static Color getHSBColor(float h, float s, float b);
|
||||||
|
int getRGB();
|
||||||
|
};
|
||||||
@@ -245,6 +245,7 @@ void Inventory::setupDefault() {
|
|||||||
addItem(new ItemInstance(Item::seeds_melon));
|
addItem(new ItemInstance(Item::seeds_melon));
|
||||||
addItem(new ItemInstance(Item::dye_powder, 1, DyePowderItem::WHITE));
|
addItem(new ItemInstance(Item::dye_powder, 1, DyePowderItem::WHITE));
|
||||||
addItem(new ItemInstance(Item::hoe_iron));
|
addItem(new ItemInstance(Item::hoe_iron));
|
||||||
|
addItem(new ItemInstance(Item::flintAndSteel));
|
||||||
#ifdef RPI
|
#ifdef RPI
|
||||||
Sel[0] = addItem(new ItemInstance(Item::sword_iron));
|
Sel[0] = addItem(new ItemInstance(Item::sword_iron));
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
#include "../../network/packet/ExplodePacket.h"
|
#include "../../network/packet/ExplodePacket.h"
|
||||||
|
|
||||||
Level::Level(LevelStorage* levelStorage, const std::string& levelName, const LevelSettings& settings, int generatorVersion, Dimension* fixedDimension /* = NULL */)
|
Level::Level(LevelStorage* levelStorage, const std::string& levelName, const LevelSettings& settings, int generatorVersion, Dimension* fixedDimension /* = NULL */)
|
||||||
: levelStorage(levelStorage),
|
: levelStorage(levelStorage),
|
||||||
isClientSide(false),
|
isClientSide(false),
|
||||||
isFindingSpawn(false),
|
isFindingSpawn(false),
|
||||||
noNeighborUpdate(false),
|
noNeighborUpdate(false),
|
||||||
@@ -1176,10 +1176,20 @@ Vec3 Level::getSkyColor(Entity* source, float a) {
|
|||||||
if (br < 0.0f) br = 0.0f;
|
if (br < 0.0f) br = 0.0f;
|
||||||
if (br > 0.75f) br = 0.75f; //@note; was 1.0f
|
if (br > 0.75f) br = 0.75f; //@note; was 1.0f
|
||||||
|
|
||||||
// int xx = Mth::floor(source->x);
|
int xx = Mth::floor(source->x);
|
||||||
// int zz = Mth::floor(source->z);
|
int zz = Mth::floor(source->z);
|
||||||
// float temp = 0.5;//(float) getBiomeSource().getTemperature(xx, zz);
|
// float temp = 0.5;//(float) getBiomeSource().getTemperature(xx, zz); // unused in normal pe too, just hardcoded temp values for some reason.
|
||||||
int skyColor = 0x3070ff;//getBiomeSource().getBiome(xx, zz).getSkyColor(temp);
|
float temp = (float) getBiomeSource()->getTemperature(xx, zz);
|
||||||
|
int skyColor;
|
||||||
|
if (dimension->FogType == 1){ // 1 is java styled fog which should use temperatures!
|
||||||
|
skyColor = getBiomeSource()->getBiome(xx, zz)->getSkyColor(temp);
|
||||||
|
}
|
||||||
|
else { // otherwise default to the normal pocket edition skycolor
|
||||||
|
|
||||||
|
skyColor = 0x3070ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
// int skyColor = 0x3070ff;//getBiomeSource().getBiome(xx, zz).getSkyColor(temp); // This is the vanilla way, add it as OPTION_SKY - shredder
|
||||||
|
|
||||||
float r = ((skyColor >> 16) & 0xff) / 255.0f;
|
float r = ((skyColor >> 16) & 0xff) / 255.0f;
|
||||||
float g = ((skyColor >> 8) & 0xff) / 255.0f;
|
float g = ((skyColor >> 8) & 0xff) / 255.0f;
|
||||||
@@ -1943,10 +1953,10 @@ const EntityList& Level::getAllEntities() {
|
|||||||
//
|
//
|
||||||
/*
|
/*
|
||||||
void Level::addEntities(const EntityList& list) {
|
void Level::addEntities(const EntityList& list) {
|
||||||
entities.insert(entities.end(), list.begin(), list.end());
|
entities.insert(entities.end(), list.begin(), list.end());
|
||||||
for (int j = 0; j < (int)list.size(); j++) {
|
for (int j = 0; j < (int)list.size(); j++) {
|
||||||
entityAdded(list[j]);
|
entityAdded(list[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -2042,18 +2052,18 @@ void Level::setSpawnPos(Pos spawnPos) {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
void Level::ensureAdded(Entity* entity) {
|
void Level::ensureAdded(Entity* entity) {
|
||||||
int xc = Mth::floor(entity->x / 16);
|
int xc = Mth::floor(entity->x / 16);
|
||||||
int zc = Mth::floor(entity->z / 16);
|
int zc = Mth::floor(entity->z / 16);
|
||||||
int r = 2;
|
int r = 2;
|
||||||
for (int x = xc - r; x <= xc + r; x++) {
|
for (int x = xc - r; x <= xc + r; x++) {
|
||||||
for (int z = zc - r; z <= zc + r; z++) {
|
for (int z = zc - r; z <= zc + r; z++) {
|
||||||
this->getChunk(x, z);
|
this->getChunk(x, z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (std::find(entities.begin(), entities.end(), entity) == entities.end()) {
|
if (std::find(entities.begin(), entities.end(), entity) == entities.end()) {
|
||||||
entities.push_back(entity);
|
entities.push_back(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -2070,35 +2080,35 @@ void Level::broadcastEntityEvent(Entity* e, char eventId) {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
void Level::removeAllPendingEntityRemovals() {
|
void Level::removeAllPendingEntityRemovals() {
|
||||||
//Util::removeAll(entities, _entitiesToRemove);
|
//Util::removeAll(entities, _entitiesToRemove);
|
||||||
// //entities.removeAll(entitiesToRemove);
|
// //entities.removeAll(entitiesToRemove);
|
||||||
// for (int j = 0; j < (int)_entitiesToRemove.size(); j++) {
|
// for (int j = 0; j < (int)_entitiesToRemove.size(); j++) {
|
||||||
// Entity* e = _entitiesToRemove[j];
|
// Entity* e = _entitiesToRemove[j];
|
||||||
// int xc = e->xChunk;
|
// int xc = e->xChunk;
|
||||||
// int zc = e->zChunk;
|
// int zc = e->zChunk;
|
||||||
// if (e->inChunk && hasChunk(xc, zc)) {
|
// if (e->inChunk && hasChunk(xc, zc)) {
|
||||||
// getChunk(xc, zc)->removeEntity(e);
|
// getChunk(xc, zc)->removeEntity(e);
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// for (unsigned int j = 0; j < _entitiesToRemove.size(); j++) {
|
// for (unsigned int j = 0; j < _entitiesToRemove.size(); j++) {
|
||||||
// entityRemoved(_entitiesToRemove[j]);
|
// entityRemoved(_entitiesToRemove[j]);
|
||||||
// }
|
// }
|
||||||
// _entitiesToRemove.clear();
|
// _entitiesToRemove.clear();
|
||||||
|
|
||||||
for (unsigned int i = 0; i < entities.size(); i++) {
|
for (unsigned int i = 0; i < entities.size(); i++) {
|
||||||
Entity* e = entities[i];
|
Entity* e = entities[i];
|
||||||
|
|
||||||
if (e->removed) {
|
if (e->removed) {
|
||||||
int xc = e->xChunk;
|
int xc = e->xChunk;
|
||||||
int zc = e->zChunk;
|
int zc = e->zChunk;
|
||||||
if (e->inChunk && hasChunk(xc, zc)) {
|
if (e->inChunk && hasChunk(xc, zc)) {
|
||||||
getChunk(xc, zc)->removeEntity(e);
|
getChunk(xc, zc)->removeEntity(e);
|
||||||
}
|
}
|
||||||
entities.erase( entities.begin() + (i--) );
|
entities.erase( entities.begin() + (i--) );
|
||||||
entityRemoved(e);
|
entityRemoved(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -2231,7 +2241,7 @@ bool Level::inRange( int x, int y, int z ) {
|
|||||||
// AdventureSettings
|
// AdventureSettings
|
||||||
//
|
//
|
||||||
AdventureSettings::AdventureSettings()
|
AdventureSettings::AdventureSettings()
|
||||||
: doTickTime(true),
|
: doTickTime(true),
|
||||||
noPvP(false),
|
noPvP(false),
|
||||||
noPvM(false),
|
noPvM(false),
|
||||||
noMvP(false),
|
noMvP(false),
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
#include "../../entity/MobCategory.h"
|
#include "../../entity/MobCategory.h"
|
||||||
#include "../../level/tile/TallGrass.h"
|
#include "../../level/tile/TallGrass.h"
|
||||||
|
|
||||||
|
#include "../../../util/Color.h"
|
||||||
|
|
||||||
Biome* Biome::rainForest = NULL;
|
Biome* Biome::rainForest = NULL;
|
||||||
Biome* Biome::swampland = NULL;
|
Biome* Biome::swampland = NULL;
|
||||||
Biome* Biome::seasonalForest = NULL;
|
Biome* Biome::seasonalForest = NULL;
|
||||||
@@ -208,11 +210,11 @@ float Biome::adjustDepth( float depth )
|
|||||||
|
|
||||||
int Biome::getSkyColor( float temp )
|
int Biome::getSkyColor( float temp )
|
||||||
{
|
{
|
||||||
// temp /= 3.f;
|
temp /= 3.f;
|
||||||
// if (temp < -1) temp = -1;
|
if (temp < -1) temp = -1;
|
||||||
// if (temp > 1) temp = 1;
|
if (temp > 1) temp = 1;
|
||||||
return 0x80808080;
|
// return 0x80808080;This is the vanilla way, add it as OPTION_SKY or leave it like this bcus this function literally never gets used anyways if level has vanilla sky color - shredder
|
||||||
//return Color.getHSBColor(224 / 360.0f - temp * 0.05f, 0.50f + temp * 0.1f, 1.0f).getRGB();
|
return Color::getHSBColor(224 / 360.0f - temp * 0.05f, 0.50f + temp * 0.1f, 1.0f).getRGB();
|
||||||
}
|
}
|
||||||
|
|
||||||
Biome::MobList& Biome::getMobs(const MobCategory& category)
|
Biome::MobList& Biome::getMobs(const MobCategory& category)
|
||||||
|
|||||||
@@ -262,14 +262,14 @@ void LevelChunk::recalcHeight(int x, int yStart, int z) {
|
|||||||
|
|
||||||
/*public*/
|
/*public*/
|
||||||
void LevelChunk::skyBrightnessChanged() {
|
void LevelChunk::skyBrightnessChanged() {
|
||||||
// int x0 = xt;
|
int x0 = xt;
|
||||||
// int y0 = this->minHeight - 16;
|
int y0 = this->minHeight - 16;
|
||||||
// int z0 = zt;
|
int z0 = zt;
|
||||||
// int x1 = xt + 16;
|
int x1 = xt + 16;
|
||||||
// int y1 = Level::DEPTH - 1;
|
int y1 = Level::DEPTH - 1;
|
||||||
// int z1 = zt + 16;
|
int z1 = zt + 16;
|
||||||
|
|
||||||
//level->setTilesDirty(x0, y0, z0, x1, y1, z1);
|
level->setTilesDirty(x0, y0, z0, x1, y1, z1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*public*/
|
/*public*/
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ Dimension::Dimension()
|
|||||||
ultraWarm(false),
|
ultraWarm(false),
|
||||||
hasCeiling(false),
|
hasCeiling(false),
|
||||||
biomeSource(NULL),
|
biomeSource(NULL),
|
||||||
id(0)
|
id(0),
|
||||||
|
fogColor(0x80daff)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +94,18 @@ float* Dimension::getSunriseColor( float td, float a )
|
|||||||
|
|
||||||
Vec3 Dimension::getFogColor( float td, float a )
|
Vec3 Dimension::getFogColor( float td, float a )
|
||||||
{
|
{
|
||||||
|
if (FogType == 1)
|
||||||
|
{
|
||||||
|
fogColor = 0xc0d8ff; // 1 returns java beta styled fog color.
|
||||||
|
}
|
||||||
|
else if (FogType == 2)
|
||||||
|
{
|
||||||
|
fogColor = 0x406fe5; // 2 returns some type of unused fog color IDK what this one was used for possibly early pe??
|
||||||
|
}
|
||||||
|
else // otherwise as default we return the mcpe fog color
|
||||||
|
{
|
||||||
|
fogColor = 0x80daff;
|
||||||
|
}
|
||||||
float br = Mth::cos(td * Mth::PI * 2) * 2 + 0.5f;
|
float br = Mth::cos(td * Mth::PI * 2) * 2 + 0.5f;
|
||||||
if (br < 0.0f) br = 0.0f;
|
if (br < 0.0f) br = 0.0f;
|
||||||
if (br > 1.0f) br = 1.0f;
|
if (br > 1.0f) br = 1.0f;
|
||||||
@@ -104,7 +117,8 @@ Vec3 Dimension::getFogColor( float td, float a )
|
|||||||
g *= br * 0.94f + 0.06f;
|
g *= br * 0.94f + 0.06f;
|
||||||
b *= br * 0.91f + 0.09f;
|
b *= br * 0.91f + 0.09f;
|
||||||
return Vec3(r, g, b);
|
return Vec3(r, g, b);
|
||||||
//return Vec3(0.752941f, 0.847059f, 1);
|
|
||||||
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Dimension::mayRespawn()
|
bool Dimension::mayRespawn()
|
||||||
|
|||||||
@@ -49,8 +49,11 @@ public:
|
|||||||
bool hasCeiling;
|
bool hasCeiling;
|
||||||
float brightnessRamp[16];//Level::MAX_BRIGHTNESS + 1];
|
float brightnessRamp[16];//Level::MAX_BRIGHTNESS + 1];
|
||||||
int id;
|
int id;
|
||||||
|
|
||||||
|
// shredder added
|
||||||
|
int FogType; // lets us choose between what fog we want ig
|
||||||
protected:
|
protected:
|
||||||
static const long fogColor = 0x80daff;//0x406fe5;//0xc0d8ff;
|
long fogColor; //= 0x80daff;//0x406fe5;//0xc0d8ff;
|
||||||
float sunriseCol[4];
|
float sunriseCol[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
class NormalDayCycleDimension: public Dimension {
|
class NormalDayCycleDimension: public Dimension {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
float getTimeOfDay(long time, float a) {
|
float getTimeOfDay(long time, float a) {
|
||||||
int dayStep = (int) (time % Level::TICKS_PER_DAY);
|
int dayStep = (int) (time % Level::TICKS_PER_DAY);
|
||||||
float td = (dayStep + a) / Level::TICKS_PER_DAY - 0.25f;
|
float td = (dayStep + a) / Level::TICKS_PER_DAY - 0.25f;
|
||||||
@@ -20,6 +21,18 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Vec3 getFogColor( float td, float a ) {
|
Vec3 getFogColor( float td, float a ) {
|
||||||
|
if (FogType == 1)
|
||||||
|
{
|
||||||
|
fogColor = 0xc0d8ff; // 1 returns java beta styled fog color.
|
||||||
|
}
|
||||||
|
else if (FogType == 2)
|
||||||
|
{
|
||||||
|
fogColor = 0x406fe5; // 2 returns some type of unused fog color IDK what this one was used for possibly early pe??
|
||||||
|
}
|
||||||
|
else // otherwise as default we return the mcpe fog color
|
||||||
|
{
|
||||||
|
fogColor = 0x80daff;
|
||||||
|
}
|
||||||
float br = cos(td * Mth::PI * 2) * 2 + 0.5f;
|
float br = cos(td * Mth::PI * 2) * 2 + 0.5f;
|
||||||
if (br < 0) br = 0;
|
if (br < 0) br = 0;
|
||||||
if (br > 1.f) br = 1.f;
|
if (br > 1.f) br = 1.f;
|
||||||
|
|||||||
Reference in New Issue
Block a user