mirror of
https://github.com/zhenyan121/Cubed.git
synced 2026-08-08 17:57:02 +08:00
Refactor client world to use a custom SparseVector for player data instead of entt registry. Consolidate Transform, ViewAngles, and related structs into Position, Orientation, WalkPose. Introduce PlayerData and PlayerRenderData. Remove the unused move_system.cpp. Unify player render and shadow render into a single function.
33 lines
821 B
C++
33 lines
821 B
C++
#pragma once
|
|
#include "Cubed/shader.hpp"
|
|
|
|
#include <array>
|
|
#include <glad/glad.h>
|
|
|
|
namespace Cubed {
|
|
class ClientWorld;
|
|
class Renderer;
|
|
class PlayerRenderer {
|
|
public:
|
|
static constexpr int BODY_PART_NUM = 6;
|
|
PlayerRenderer(Renderer& renderer);
|
|
~PlayerRenderer();
|
|
void init();
|
|
void render(const Shader& shader, ClientWorld& world, bool shadow_render);
|
|
|
|
private:
|
|
struct PlayerVertex {
|
|
|
|
float x = 0.0f, y = 0.0f, z = 0.0f;
|
|
float s = 0.0f, t = 0.0f;
|
|
float nx = 0.0f, ny = 0.0f, nz = 0.0f;
|
|
float tx = 0.0f, ty = 0.0f, tz = 0.0f;
|
|
};
|
|
Renderer& m_renderer;
|
|
std::array<GLuint, BODY_PART_NUM> m_vao;
|
|
std::array<GLuint, BODY_PART_NUM> m_vbo;
|
|
bool m_inited{false};
|
|
std::array<std::vector<PlayerVertex>, BODY_PART_NUM> m_vertices;
|
|
};
|
|
} // namespace Cubed
|