UpdateProjection();
}
+void Camera::View(const glm::mat4 &v) noexcept {
+ view = v;
+}
void Camera::UpdateProjection() noexcept {
projection = glm::perspective(fov, aspect, near, far);
return entity_prog;
}
-PlainColor &Viewport::WorldOutlineProgram() noexcept {
- if (active_prog != OUTLINE_WORLD) {
- outline_prog.Activate();
- outline_prog.SetVP(cam.View(), cam.Projection());
- active_prog = OUTLINE_WORLD;
+PlainColor &Viewport::WorldColorProgram() noexcept {
+ if (active_prog != COLOR_WORLD) {
+ color_prog.Activate();
+ color_prog.SetVP(cam.View(), cam.Projection());
+ active_prog = COLOR_WORLD;
}
- return outline_prog;
+ return color_prog;
}
-PlainColor &Viewport::HUDOutlineProgram() noexcept {
- if (active_prog != OUTLINE_HUD) {
- outline_prog.Activate();
- outline_prog.SetVP(canv.View(), canv.Projection());
- active_prog = OUTLINE_HUD;
+PlainColor &Viewport::HUDColorProgram() noexcept {
+ if (active_prog != COLOR_HUD) {
+ color_prog.Activate();
+ color_prog.SetVP(canv.View(), canv.Projection());
+ active_prog = COLOR_HUD;
}
- return outline_prog;
+ return color_prog;
}
SkyBoxShader &Viewport::SkyBoxProgram() noexcept {
void Viewport::WorldPosition(const glm::mat4 &t) noexcept {
- cam.View(glm::inverse(t));
+ const glm::vec3 offset(0.0f, 0.0f, 0.0f);
+ //const glm::vec3 offset(0.0f, 0.0f, -5.0f);
+ cam.View(glm::translate(glm::inverse(t), glm::vec3(t * glm::vec4(offset, 0.0f))));
ChunkProgram().SetView(cam.View());
sky_prog.Activate();
SkyBoxProgram().SetView(cam.View());