* Add proper firework rendering

This commit is contained in:
iProgramInCpp
2023-12-31 15:14:56 +02:00
parent 90bd2935d4
commit bcd63f43f5
6 changed files with 85 additions and 7 deletions

View File

@@ -46,10 +46,8 @@ EntityRenderDispatcher::EntityRenderDispatcher() :
m_TntRenderer.init(this);
m_CameraRenderer.init(this);
m_ItemRenderer.init(this);
#ifdef ENH_ALLOW_SAND_GRAVITY
m_RocketRenderer.init(this);
m_FallingTileRenderer.init(this);
#endif
}
float EntityRenderDispatcher::distanceToSqr(float x, float y, float z)
@@ -94,11 +92,11 @@ EntityRenderer* EntityRenderDispatcher::getRenderer(int renderType)
return &m_PigRenderer;
case RENDER_CREEPER:
return &m_CreeperRenderer;
case RENDER_ROCKET:
return &m_RocketRenderer;
// TODO
#ifdef ENH_ALLOW_SAND_GRAVITY
case RENDER_FALLING_TILE:
return &m_FallingTileRenderer;
#endif
}
return nullptr;

View File

@@ -18,6 +18,7 @@
#include "CowRenderer.hpp"
#include "ChickenRenderer.hpp"
#include "CreeperRenderer.hpp"
#include "RocketRenderer.hpp"
class Minecraft;
class Font;
@@ -59,6 +60,7 @@ public:
//SheepRenderer m_SheepRenderer;
//SheepFurRenderer m_SheepFurRenderer;
TripodCameraRenderer m_CameraRenderer;
RocketRenderer m_RocketRenderer;
Textures* m_pTextures;
Level* m_pLevel;
Minecraft* m_pMinecraft;

View File

@@ -0,0 +1,44 @@
/********************************************************************
Minecraft: Pocket Edition - Decompilation Project
Copyright (C) 2023 iProgramInCpp
The following code is licensed under the BSD 1 clause license.
SPDX-License-Identifier: BSD-1-Clause
********************************************************************/
#include "RocketRenderer.hpp"
#include "client/app/Minecraft.hpp"
RocketRenderer::RocketRenderer() :
m_tile()
{
field_4 = 0.5f;
}
void RocketRenderer::render(Entity* entity, float x, float y, float z, float a, float b)
{
glPushMatrix();
glTranslatef(x, y, z);
Tesselator& t = Tesselator::instance;
t.color(1.0f, 1.0f, 1.0f);
float brightness = entity->getBrightness(1.0f);
bindTexture("gui/items.png");
t.begin();
m_renderer.renderTile(&m_tile, 0, brightness);
t.draw();
glPopMatrix();
}
FakeRocketTile::FakeRocketTile() : Tile(0, 16*2+14, Material::plant)
{
}
int FakeRocketTile::getRenderShape()
{
return SHAPE_CROSS;
}

View File

@@ -0,0 +1,33 @@
/********************************************************************
Minecraft: Pocket Edition - Decompilation Project
Copyright (C) 2023 iProgramInCpp
The following code is licensed under the BSD 1 clause license.
SPDX-License-Identifier: BSD-1-Clause
********************************************************************/
#pragma once
#include "EntityRenderer.hpp"
#include "client/renderer/TileRenderer.hpp"
#include "world/tile/Tile.hpp"
#include "world/entity/TripodCamera.hpp"
class FakeRocketTile : public Tile
{
public:
FakeRocketTile();
int getRenderShape() override;
};
class RocketRenderer : public EntityRenderer
{
public:
RocketRenderer();
void render(Entity*, float, float, float, float, float) override;
public:
TileRenderer m_renderer;
FakeRocketTile m_tile;
};

View File

@@ -36,6 +36,7 @@ enum eEntityRenderType
RENDER_SKELETON,
RENDER_SPIDER,
RENDER_CREEPER,
RENDER_ROCKET,
// custom
RENDER_FALLING_TILE = 50,

View File

@@ -14,11 +14,11 @@ Rocket::Rocket(Level* level, float x, float y, float z) : Entity(level)
{
field_B8C = 0;
field_B90 = 80;
field_C8 = RENDER_CAMERA;
field_C8 = RENDER_ROCKET;
field_34 = 1;
setSize(1.0f, 1.5f);
setSize(0.1f, 1.0f);
field_84 = field_8C * 0.5f - 0.25f;
setPos(x, y, z);