123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #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();
- }
|