aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/EnderDragonRenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/EnderDragonRenderer.cpp')
-rw-r--r--Minecraft.Client/EnderDragonRenderer.cpp43
1 files changed, 20 insertions, 23 deletions
diff --git a/Minecraft.Client/EnderDragonRenderer.cpp b/Minecraft.Client/EnderDragonRenderer.cpp
index 8c531d4e..4119e5b9 100644
--- a/Minecraft.Client/EnderDragonRenderer.cpp
+++ b/Minecraft.Client/EnderDragonRenderer.cpp
@@ -4,18 +4,20 @@
#include "Tesselator.h"
#include "Lighting.h"
#include "EnderDragonRenderer.h"
+#include "BossMobGuiInfo.h"
-shared_ptr<EnderDragon> EnderDragonRenderer::bossInstance;
-int EnderDragonRenderer::currentModel;
+ResourceLocation EnderDragonRenderer::DRAGON_EXPLODING_LOCATION = ResourceLocation(TN_MOB_ENDERDRAGON_SHUFFLE);
+ResourceLocation EnderDragonRenderer::CRYSTAL_BEAM_LOCATION = ResourceLocation(TN_MOB_ENDERDRAGON_BEAM);
+ResourceLocation EnderDragonRenderer::DRAGON_EYES_LOCATION = ResourceLocation(TN_MOB_ENDERDRAGON_ENDEREYES);
+ResourceLocation EnderDragonRenderer::DRAGON_LOCATION = ResourceLocation(TN_MOB_ENDERDRAGON);
EnderDragonRenderer::EnderDragonRenderer() : MobRenderer(new DragonModel(0), 0.5f)
{
- currentModel = 0;
dragonModel = (DragonModel *) model;
- this->setArmor(model);
+ setArmor(model); // TODO: Make second constructor that assigns this.
}
-void EnderDragonRenderer::setupRotations(shared_ptr<Mob> _mob, float bob, float bodyRot, float a)
+void EnderDragonRenderer::setupRotations(shared_ptr<LivingEntity> _mob, float bob, float bodyRot, float a)
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
@@ -46,7 +48,7 @@ void EnderDragonRenderer::setupRotations(shared_ptr<Mob> _mob, float bob, float
}
}
-void EnderDragonRenderer::renderModel(shared_ptr<Entity> _mob, float wp, float ws, float bob, float headRotMinusBodyRot, float headRotx, float scale)
+void EnderDragonRenderer::renderModel(shared_ptr<LivingEntity> _mob, float wp, float ws, float bob, float headRotMinusBodyRot, float headRotx, float scale)
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
@@ -57,7 +59,7 @@ void EnderDragonRenderer::renderModel(shared_ptr<Entity> _mob, float wp, float w
glDepthFunc(GL_LEQUAL);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, tt);
- bindTexture(mob->customTextureUrl, TN_MOB_ENDERDRAGON_SHUFFLE); // 4J was "/mob/enderdragon/shuffle.png"
+ bindTexture(&DRAGON_EXPLODING_LOCATION); // 4J was "/mob/enderdragon/shuffle.png"
model->render(mob, wp, ws, bob, headRotMinusBodyRot, headRotx, scale, true);
glAlphaFunc(GL_GREATER, 0.1f);
@@ -65,7 +67,7 @@ void EnderDragonRenderer::renderModel(shared_ptr<Entity> _mob, float wp, float w
}
- bindTexture(mob->customTextureUrl, mob->getTexture());
+ bindTexture(mob);
model->render(mob, wp, ws, bob, headRotMinusBodyRot, headRotx, scale, true);
if (mob->hurtTime > 0)
@@ -75,12 +77,7 @@ void EnderDragonRenderer::renderModel(shared_ptr<Entity> _mob, float wp, float w
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1, 0, 0, 0.5f);
-#ifdef __PSVITA__
- // AP - not sure that the usecompiled flag is supposed to be false. This makes it really slow on vita. Making it true still seems to look the same
model->render(mob, wp, ws, bob, headRotMinusBodyRot, headRotx, scale, true);
-#else
- model->render(mob, wp, ws, bob, headRotMinusBodyRot, headRotx, scale, false);
-#endif
glEnable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
glDepthFunc(GL_LEQUAL);
@@ -91,12 +88,7 @@ void EnderDragonRenderer::render(shared_ptr<Entity> _mob, double x, double y, do
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
- EnderDragonRenderer::bossInstance = mob;
- if (currentModel != DragonModel::MODEL_ID)
- {
- model = new DragonModel(0);
- currentModel = DragonModel::MODEL_ID;
- }
+ BossMobGuiInfo::setBossHealth(mob, false);
MobRenderer::render(mob, x, y, z, rot, a);
if (mob->nearestCrystal != NULL)
{
@@ -135,7 +127,7 @@ void EnderDragonRenderer::render(shared_ptr<Entity> _mob, double x, double y, do
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
- bindTexture(TN_MOB_ENDERDRAGON_BEAM); // 4J was "/mob/enderdragon/beam.png"
+ bindTexture(&CRYSTAL_BEAM_LOCATION); // 4J was "/mob/enderdragon/beam.png"
glShadeModel(GL_SMOOTH);
@@ -167,7 +159,12 @@ void EnderDragonRenderer::render(shared_ptr<Entity> _mob, double x, double y, do
}
}
-void EnderDragonRenderer::additionalRendering(shared_ptr<Mob> _mob, float a)
+ResourceLocation *EnderDragonRenderer::getTextureLocation(shared_ptr<Entity> mob)
+{
+ return &DRAGON_LOCATION;
+}
+
+void EnderDragonRenderer::additionalRendering(shared_ptr<LivingEntity> _mob, float a)
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
@@ -227,7 +224,7 @@ void EnderDragonRenderer::additionalRendering(shared_ptr<Mob> _mob, float a)
}
-int EnderDragonRenderer::prepareArmor(shared_ptr<Mob> _mob, int layer, float a)
+int EnderDragonRenderer::prepareArmor(shared_ptr<LivingEntity> _mob, int layer, float a)
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<EnderDragon> mob = dynamic_pointer_cast<EnderDragon>(_mob);
@@ -238,7 +235,7 @@ int EnderDragonRenderer::prepareArmor(shared_ptr<Mob> _mob, int layer, float a)
}
if (layer != 0) return -1;
- bindTexture(TN_MOB_ENDERDRAGON_ENDEREYES); // 4J was "/mob/enderdragon/ender_eyes.png"
+ bindTexture(&DRAGON_EYES_LOCATION); // 4J was "/mob/enderdragon/ender_eyes.png"
float br = 1;
glEnable(GL_BLEND);
// 4J Stu - We probably don't need to do this on 360 either (as we force it back on the renderer)