#include "client/rendering/entity/EntityRenderer.h" #include "client/engine/Utils.h" EntityRenderer::EntityRenderer() : texture("resources/skin.png") { // head mesh.addCuboid(0.0f, 0.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.125f, 0.0f, 0.25f, 0.125f, 0.25f, 0.0f, 0.375f, 0.125f, 0.25f, 0.125f, 0.375f, 0.25f, 0.0f, 0.125f, 0.125f, 0.25f, 0.125f, 0.125f, 0.25f, 0.25f, 0.375f, 0.125f, 0.5f, 0.25f); // right arm mesh.addCuboid(0.0f, 0.0f, 0.0f, 0.25f, 0.75f, 0.25f, 0.6875f, 0.25f, 0.75f, 0.3125f, 0.75f, 0.25f, 0.8125f, 0.3125f, 0.75f, 0.3125f, 0.8125f, 0.5f, 0.625f, 0.3125f, 0.6875f, 0.5f, 0.6875f, 0.3125f, 0.75f, 0.5f, 0.8125f, 0.3125f, 0.875f, 0.5f); // left arm mesh.addCuboid(0.0f, 0.0f, 0.0f, 0.25f, 0.75f, 0.25f, 0.5625f, 0.75f, 0.625f, 0.8125f, 0.625f, 0.75f, 0.6875f, 0.8125f, 0.625f, 0.8125f, 0.6875f, 1.0f, 0.5f, 0.8125f, 0.5625f, 1.0f, 0.5625f, 0.8125f, 0.625f, 1.0f, 0.6875f, 0.8125f, 0.75f, 1.0f); // body mesh.addCuboid(0.0f, 0.0f, 0.0f, 0.5f, 0.75f, 0.25f, 0.3125f, 0.25f, 0.4375f, 0.3125f, 0.4375f, 0.25f, 0.5625f, 0.3125f, 0.4375f, 0.3125f, 0.5f, 0.5f, 0.25f, 0.3125f, 0.3125f, 0.5f, 0.3125f, 0.3125f, 0.4375f, 0.5f, 0.5f, 0.3125f, 0.625f, 0.5f); // right leg mesh.addCuboid(0.0f, 0.0f, 0.0f, 0.25f, 0.75f, 0.25f, 0.0625f, 0.25f, 0.125f, 0.3125f, 0.125f, 0.25f, 0.1875f, 0.3125f, 0.125f, 0.3125f, 0.1875f, 0.5f, 0.0f, 0.3125f, 0.0625f, 0.5f, 0.0625f, 0.3125f, 0.125f, 0.5f, 0.1875f, 0.3125f, 0.25f, 0.5f); // left leg mesh.addCuboid(0.0f, 0.0f, 0.0f, 0.25f, 0.75f, 0.25f, 0.3125f, 0.75f, 0.375f, 0.8125f, 0.375f, 0.75f, 0.4375f, 0.8125f, 0.375f, 0.8125f, 0.4375f, 1.0f, 0.25f, 0.8125f, 0.3125f, 1.0f, 0.3125f, 0.8125f, 0.375f, 1.0f, 0.4375f, 0.8125f, 0.5f, 1.0f); mesh.build(); } EntityRenderer::~EntityRenderer() { } void EntityRenderer::tick() { lifetime += 15; } void EntityRenderer::renderTick(Shader& shader, Camera3D camera, DirectRenderer& dr, float lag) { const int d = 360; float f1 = lifetime % d; if(f1 >= d / 2) { f1 = d - f1; } float f2 = (lifetime + 15) % d; if(f2 >= d / 2) { f2 = d - f2; } float inter = interpolate(lag, f1, f2); texture.bind(); shader.setToIdentity(); shader.translateTo(5.0f + 0.5f, 42.0f, 15.0f + 0.25f); //shader.scale(3, 6, 3); shader.rotateY(90); shader.translate(-0.5f, 0.0f, -0.25f); shader.push(); shader.translate(0.25f + 0.25f, 1.5f, 0.0f + 0.25f); shader.rotateY(inter * 0.25f - 22.5f); shader.translate(-0.25f, 0.0f, -0.25f); shader.updateModelMatrix(); mesh.draw(0, 36); shader.pop(); shader.push(); shader.translate(0.0f, 1.375f, 0.25f); shader.rotateX(inter / 6 - 15); shader.translate(0.0f, -0.625f, -0.125f); shader.updateModelMatrix(); mesh.draw(36, 36); shader.pop(); shader.push(); shader.translate(0.75f, 1.375f, 0.25f); shader.rotateX(- inter / 6 + 15); shader.translate(0.0f, -0.625f, -0.125f); shader.updateModelMatrix(); mesh.draw(72, 36); shader.pop(); shader.push(); shader.translate(0.25f, 0.75f, 0.125f); shader.updateModelMatrix(); mesh.draw(108, 36); shader.pop(); shader.push(); shader.translate(0.25f, 0.0f, 0.125f); shader.updateModelMatrix(); mesh.draw(144, 36); shader.pop(); shader.push(); shader.translate(0.5f, 0.0f, 0.125f); shader.updateModelMatrix(); mesh.draw(180, 36); shader.pop(); }