Files
MinecraftConsoles/Minecraft.Client/LightningBoltRenderer.cpp
Loki Rautio 087b7e7abf Revert "Project modernization (#630)"
This code was not tested and breaks in Release builds, reverting to restore
functionality of the nightly. All in-game menus do not work and generating
a world crashes.

This reverts commit a9be52c41a.
2026-03-07 21:12:22 -06:00

97 lines
2.8 KiB
C++

#include "stdafx.h"
#include "LightningBoltRenderer.h"
#include "Tesselator.h"
#include "..\Minecraft.World\net.minecraft.world.entity.global.h"
void LightningBoltRenderer::render(shared_ptr<Entity> _bolt, double x, double y, double z, float rot, float a)
{
// 4J - dynamic cast required because we aren't using templates/generics in our version
shared_ptr<LightningBolt> bolt = dynamic_pointer_cast<LightningBolt>(_bolt);
Tesselator *t = Tesselator::getInstance();
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
double xOffs[8];
double zOffs[8];
double xOff = 0;
double zOff = 0;
{
Random *random = new Random(bolt->seed);
for (int h = 7; h >= 0; h--)
{
xOffs[h] = xOff;
zOffs[h] = zOff;
xOff += random->nextInt(11) - 5;
zOff += random->nextInt(11) - 5;
}
}
for (int r = 0; r < 4; r++)
{
Random *random = new Random(bolt->seed);
for (int p = 0; p < 3; p++)
{
int hs = 7;
int ht = 0;
if (p > 0) hs = 7 - p;
if (p > 0) ht = hs - 2;
double xo0 = xOffs[hs] - xOff;
double zo0 = zOffs[hs] - zOff;
for (int h = hs; h >= ht; h--)
{
double xo1 = xo0;
double zo1 = zo0;
if (p == 0)
{
xo0 += random->nextInt(11) - 5;
zo0 += random->nextInt(11) - 5;
}
else
{
xo0 += random->nextInt(31) - 15;
zo0 += random->nextInt(31) - 15;
}
t->begin(GL_TRIANGLE_STRIP);
float br = 0.5f;
t->color(0.9f * br, 0.9f * br, 1 * br, 0.3f);
double rr1 = (0.1 + r * 0.2);
if (p == 0) rr1 *= (h * 0.1 + 1);
double rr2 = (0.1 + r * 0.2);
if (p == 0) rr2 *= ((h-1) * 0.1 + 1);
for (int i = 0; i < 5; i++)
{
double xx1 = x + 0.5 - rr1;
double zz1 = z + 0.5 - rr1;
if (i == 1 || i == 2) xx1 += rr1 * 2;
if (i == 2 || i == 3) zz1 += rr1 * 2;
double xx2 = x + 0.5 - rr2;
double zz2 = z + 0.5 - rr2;
if (i == 1 || i == 2) xx2 += rr2 * 2;
if (i == 2 || i == 3) zz2 += rr2 * 2;
t->vertex((float)(xx2 + xo0), (float)( y + (h) * 16), (float)( zz2 + zo0));
t->vertex((float)(xx1 + xo1), (float)( y + (h + 1) * 16), (float)( zz1 + zo1));
}
t->end();
}
}
}
glDisable(GL_BLEND);
glEnable(GL_LIGHTING);
glEnable(GL_TEXTURE_2D);
}