mirror of
https://github.com/celisej567/mcpe.git
synced 2026-09-23 20:09:46 +03:00
* Add PigModel and PigRenderer
This commit is contained in:
0
source/client/model/ChickenModel.cpp
Normal file
0
source/client/model/ChickenModel.cpp
Normal file
0
source/client/model/ChickenModel.hpp
Normal file
0
source/client/model/ChickenModel.hpp
Normal file
0
source/client/model/CowModel.cpp
Normal file
0
source/client/model/CowModel.cpp
Normal file
0
source/client/model/CowModel.hpp
Normal file
0
source/client/model/CowModel.hpp
Normal file
0
source/client/model/CreeperModel.cpp
Normal file
0
source/client/model/CreeperModel.cpp
Normal file
0
source/client/model/CreeperModel.hpp
Normal file
0
source/client/model/CreeperModel.hpp
Normal file
@@ -12,6 +12,7 @@ Model::Model(int width, int height)
|
||||
{
|
||||
field_4 = 0.0f;
|
||||
field_8 = false;
|
||||
m_bIsBaby = true; // @HUH: Why is this true?
|
||||
m_textureWidth = width;
|
||||
m_textureHeight = height;
|
||||
}
|
||||
|
||||
@@ -30,4 +30,5 @@ public:
|
||||
int m_textureWidth;
|
||||
int m_textureHeight;
|
||||
std::vector<ModelPart*> m_parts;
|
||||
bool m_bIsBaby;
|
||||
};
|
||||
|
||||
20
source/client/model/PigModel.cpp
Normal file
20
source/client/model/PigModel.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
/********************************************************************
|
||||
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 "PigModel.hpp"
|
||||
|
||||
PigModel::PigModel(float f) :
|
||||
QuadrupedModel(6, f)
|
||||
{
|
||||
m_head.texOffs(16, 16);
|
||||
m_head.addBox(-2, 0, -9, 4, 3, 1, f);
|
||||
field_28C = 4.0f;
|
||||
}
|
||||
|
||||
PigModel::~PigModel()
|
||||
{
|
||||
}
|
||||
17
source/client/model/PigModel.hpp
Normal file
17
source/client/model/PigModel.hpp
Normal file
@@ -0,0 +1,17 @@
|
||||
/********************************************************************
|
||||
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 "QuadrupedModel.hpp"
|
||||
|
||||
class PigModel : public QuadrupedModel
|
||||
{
|
||||
public:
|
||||
PigModel(float);
|
||||
~PigModel();
|
||||
};
|
||||
@@ -10,7 +10,6 @@
|
||||
|
||||
QuadrupedModel::QuadrupedModel(int i, float f) :
|
||||
Model(64, 32),
|
||||
m_bIsBaby(true), // @HUH: Why is this true?
|
||||
m_head(0, 0),
|
||||
m_unknown(0, 0),
|
||||
m_body(28, 8),
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
The following code is licensed under the BSD 1 clause license.
|
||||
SPDX-License-Identifier: BSD-1-Clause
|
||||
********************************************************************/
|
||||
#pragma off
|
||||
#pragma once
|
||||
|
||||
#include "Model.hpp"
|
||||
|
||||
@@ -18,8 +18,8 @@ public:
|
||||
void render(float, float, float, float, float, float) override;
|
||||
void setupAnim(float, float, float, float, float, float) override;
|
||||
|
||||
private:
|
||||
bool m_bIsBaby;
|
||||
protected:
|
||||
friend class PigModel;
|
||||
ModelPart m_head;
|
||||
ModelPart m_unknown;
|
||||
ModelPart m_body;
|
||||
|
||||
0
source/client/model/SheepFurModel.cpp
Normal file
0
source/client/model/SheepFurModel.cpp
Normal file
0
source/client/model/SheepFurModel.hpp
Normal file
0
source/client/model/SheepFurModel.hpp
Normal file
0
source/client/model/SheepModel.cpp
Normal file
0
source/client/model/SheepModel.cpp
Normal file
0
source/client/model/SheepModel.hpp
Normal file
0
source/client/model/SheepModel.hpp
Normal file
0
source/client/model/SkeletonModel.cpp
Normal file
0
source/client/model/SkeletonModel.cpp
Normal file
0
source/client/model/SkeletonModel.hpp
Normal file
0
source/client/model/SkeletonModel.hpp
Normal file
0
source/client/model/ZombieModel.cpp
Normal file
0
source/client/model/ZombieModel.cpp
Normal file
0
source/client/model/ZombieModel.hpp
Normal file
0
source/client/model/ZombieModel.hpp
Normal file
0
source/client/renderer/entity/ChickenRenderer.cpp
Normal file
0
source/client/renderer/entity/ChickenRenderer.cpp
Normal file
0
source/client/renderer/entity/ChickenRenderer.hpp
Normal file
0
source/client/renderer/entity/ChickenRenderer.hpp
Normal file
0
source/client/renderer/entity/CowRenderer.cpp
Normal file
0
source/client/renderer/entity/CowRenderer.cpp
Normal file
0
source/client/renderer/entity/CowRenderer.hpp
Normal file
0
source/client/renderer/entity/CowRenderer.hpp
Normal file
0
source/client/renderer/entity/CreeperRenderer.cpp
Normal file
0
source/client/renderer/entity/CreeperRenderer.cpp
Normal file
0
source/client/renderer/entity/CreeperRenderer.hpp
Normal file
0
source/client/renderer/entity/CreeperRenderer.hpp
Normal file
@@ -10,11 +10,14 @@
|
||||
#include "client/app/Minecraft.hpp"
|
||||
#include "../ItemInHandRenderer.hpp"
|
||||
|
||||
#include "client/model/PigModel.hpp"
|
||||
|
||||
EntityRenderDispatcher* EntityRenderDispatcher::instance;
|
||||
float EntityRenderDispatcher::xOff, EntityRenderDispatcher::yOff, EntityRenderDispatcher::zOff;
|
||||
|
||||
EntityRenderDispatcher::EntityRenderDispatcher() :
|
||||
m_HumanoidMobRenderer(new HumanoidModel(0.0f, 0.0f), 0.0f)
|
||||
m_HumanoidMobRenderer(new HumanoidModel(0.0f, 0.0f), 0.0f),
|
||||
m_PigRenderer(new PigModel(0.0f), 0.0f)
|
||||
{
|
||||
m_pItemInHandRenderer = nullptr;
|
||||
m_pTextures = nullptr;
|
||||
@@ -27,14 +30,13 @@ EntityRenderDispatcher::EntityRenderDispatcher() :
|
||||
m_pFont = nullptr;
|
||||
|
||||
m_HumanoidMobRenderer.init(this);
|
||||
m_PigRenderer.init(this);
|
||||
|
||||
// TODO
|
||||
|
||||
m_TntRenderer.init(this);
|
||||
m_CameraRenderer.init(this);
|
||||
|
||||
#ifndef ORIGINAL_CODE
|
||||
// @BUG: Not initializing the item renderer would cause crashes if item7
|
||||
// entities exist, because it references the dispatcher
|
||||
m_ItemRenderer.init(this);
|
||||
#endif
|
||||
|
||||
#ifdef ENH_ALLOW_SAND_GRAVITY
|
||||
m_FallingTileRenderer.init(this);
|
||||
@@ -63,9 +65,9 @@ EntityRenderDispatcher* EntityRenderDispatcher::getInstance()
|
||||
return instance;
|
||||
}
|
||||
|
||||
EntityRenderer* EntityRenderDispatcher::getRenderer(Entity* pEnt)
|
||||
EntityRenderer* EntityRenderDispatcher::getRenderer(int renderType)
|
||||
{
|
||||
switch (pEnt->field_C8)
|
||||
switch (renderType)
|
||||
{
|
||||
case RENDER_TNT:
|
||||
return &m_TntRenderer;
|
||||
@@ -75,6 +77,9 @@ EntityRenderer* EntityRenderDispatcher::getRenderer(Entity* pEnt)
|
||||
return &m_CameraRenderer;
|
||||
case RENDER_HUMANOID:
|
||||
return &m_HumanoidMobRenderer;
|
||||
case RENDER_PIG:
|
||||
return &m_PigRenderer;
|
||||
// TODO
|
||||
#ifdef ENH_ALLOW_SAND_GRAVITY
|
||||
case RENDER_FALLING_TILE:
|
||||
return &m_FallingTileRenderer;
|
||||
@@ -84,6 +89,15 @@ EntityRenderer* EntityRenderDispatcher::getRenderer(Entity* pEnt)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
EntityRenderer* EntityRenderDispatcher::getRenderer(Entity* pEnt)
|
||||
{
|
||||
int renderType = pEnt->field_C8;
|
||||
if (renderType == RENDER_DYNAMIC)
|
||||
renderType = pEnt->queryEntityRenderer();
|
||||
|
||||
return getRenderer(renderType);
|
||||
}
|
||||
|
||||
void EntityRenderDispatcher::onGraphicsReset()
|
||||
{
|
||||
m_HumanoidMobRenderer.onGraphicsReset();
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "TntRenderer.hpp"
|
||||
#include "ItemRenderer.hpp"
|
||||
#include "FallingTileRenderer.hpp"
|
||||
#include "PigRenderer.hpp"
|
||||
|
||||
class Minecraft;
|
||||
class Font;
|
||||
@@ -29,6 +30,7 @@ public:
|
||||
float distanceToSqr(float x, float y, float z);
|
||||
Font* getFont();
|
||||
EntityRenderer* getRenderer(Entity* pEnt);
|
||||
EntityRenderer* getRenderer(int renderType);
|
||||
void onGraphicsReset();
|
||||
void prepare(Level*, Textures*, Font*, Mob*, Options*, float);
|
||||
void render(Entity*, float);
|
||||
@@ -41,8 +43,18 @@ public:
|
||||
public:
|
||||
ItemInHandRenderer* m_pItemInHandRenderer;
|
||||
HumanoidMobRenderer m_HumanoidMobRenderer;
|
||||
PigRenderer m_PigRenderer;
|
||||
//CowRenderer m_CowRenderer;
|
||||
//ChickenRenderer m_ChickenRenderer;
|
||||
TntRenderer m_TntRenderer;
|
||||
//padding??
|
||||
ItemRenderer m_ItemRenderer;
|
||||
//CreeperRenderer m_CreeperRenderer;
|
||||
//SpiderRenderer m_SpiderRenderer;
|
||||
//SkeletonRenderer m_SkeletonRenderer;
|
||||
//ZombieRenderer m_ZombieRenderer;
|
||||
//SheepRenderer m_SheepRenderer;
|
||||
//SheepFurRenderer m_SheepFurRenderer;
|
||||
TripodCameraRenderer m_CameraRenderer;
|
||||
Textures* m_pTextures;
|
||||
Level* m_pLevel;
|
||||
|
||||
@@ -83,9 +83,13 @@ void MobRenderer::render(Entity* entity, float x, float y, float z, float unused
|
||||
glDisable(GL_CULL_FACE);
|
||||
m_pModel->field_4 = getAttackAnim(pMob, f);
|
||||
m_pModel->field_8 = false;
|
||||
m_pModel->m_bIsBaby = pMob->isBaby();
|
||||
|
||||
if (m_pArmorModel)
|
||||
{
|
||||
m_pArmorModel->field_8 = m_pModel->field_8;
|
||||
m_pArmorModel->m_bIsBaby = m_pModel->m_bIsBaby;
|
||||
}
|
||||
|
||||
float aYaw = pMob->field_5C + (pMob->m_yaw - pMob->field_5C) * f;
|
||||
float aPitch = pMob->field_60 + (pMob->m_pitch - pMob->field_60) * f;
|
||||
@@ -104,7 +108,7 @@ void MobRenderer::render(Entity* entity, float x, float y, float z, float unused
|
||||
x1 = 1.0f;
|
||||
float x2 = pMob->field_130 - pMob->field_12C * (1.0f - f);
|
||||
|
||||
bindTexture("mob/char.png");
|
||||
bindTexture(pMob->getTexture());
|
||||
glEnable(GL_ALPHA_TEST);
|
||||
|
||||
m_pModel->setBrightness(entity->getBrightness(1.0f));
|
||||
|
||||
16
source/client/renderer/entity/PigRenderer.cpp
Normal file
16
source/client/renderer/entity/PigRenderer.cpp
Normal file
@@ -0,0 +1,16 @@
|
||||
/********************************************************************
|
||||
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 "PigRenderer.hpp"
|
||||
|
||||
PigRenderer::PigRenderer(Model* pModel, float f) : MobRenderer(pModel, f)
|
||||
{
|
||||
}
|
||||
|
||||
PigRenderer::~PigRenderer()
|
||||
{
|
||||
}
|
||||
17
source/client/renderer/entity/PigRenderer.hpp
Normal file
17
source/client/renderer/entity/PigRenderer.hpp
Normal file
@@ -0,0 +1,17 @@
|
||||
/********************************************************************
|
||||
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 "MobRenderer.hpp"
|
||||
|
||||
class PigRenderer : public MobRenderer
|
||||
{
|
||||
public:
|
||||
PigRenderer(Model*, float);
|
||||
~PigRenderer();
|
||||
};
|
||||
0
source/client/renderer/entity/SheepFurRenderer.cpp
Normal file
0
source/client/renderer/entity/SheepFurRenderer.cpp
Normal file
0
source/client/renderer/entity/SheepFurRenderer.hpp
Normal file
0
source/client/renderer/entity/SheepFurRenderer.hpp
Normal file
0
source/client/renderer/entity/SheepRenderer.cpp
Normal file
0
source/client/renderer/entity/SheepRenderer.cpp
Normal file
0
source/client/renderer/entity/SheepRenderer.hpp
Normal file
0
source/client/renderer/entity/SheepRenderer.hpp
Normal file
0
source/client/renderer/entity/SkeletonRenderer.cpp
Normal file
0
source/client/renderer/entity/SkeletonRenderer.cpp
Normal file
0
source/client/renderer/entity/SkeletonRenderer.hpp
Normal file
0
source/client/renderer/entity/SkeletonRenderer.hpp
Normal file
0
source/client/renderer/entity/SpiderRenderer.cpp
Normal file
0
source/client/renderer/entity/SpiderRenderer.cpp
Normal file
0
source/client/renderer/entity/SpiderRenderer.hpp
Normal file
0
source/client/renderer/entity/SpiderRenderer.hpp
Normal file
0
source/client/renderer/entity/ZombieRenderer.cpp
Normal file
0
source/client/renderer/entity/ZombieRenderer.cpp
Normal file
0
source/client/renderer/entity/ZombieRenderer.hpp
Normal file
0
source/client/renderer/entity/ZombieRenderer.hpp
Normal file
Reference in New Issue
Block a user