mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-12 06:21:50 +00:00
update ModelViewer
This commit is contained in:
parent
fe69d31f97
commit
60106d4fb1
2 changed files with 17 additions and 4 deletions
|
|
@ -13,6 +13,7 @@
|
||||||
#include "window/Window.hpp"
|
#include "window/Window.hpp"
|
||||||
#include "../GUI.hpp"
|
#include "../GUI.hpp"
|
||||||
|
|
||||||
|
// TODO: remove
|
||||||
// TODO: remove
|
// TODO: remove
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
|
|
||||||
|
|
@ -24,8 +25,7 @@ ModelViewer::ModelViewer(
|
||||||
: Container(gui, size),
|
: Container(gui, size),
|
||||||
modelName(modelName),
|
modelName(modelName),
|
||||||
camera(),
|
camera(),
|
||||||
batch(std::make_unique<Batch3D>(1024)),
|
batch(std::make_unique<Batch3D>(1024)) {
|
||||||
fbo(std::make_unique<Framebuffer>(size.x, size.y)) {
|
|
||||||
camera.perspective = true;
|
camera.perspective = true;
|
||||||
camera.position = glm::vec3(2, 2, 2);
|
camera.position = glm::vec3(2, 2, 2);
|
||||||
}
|
}
|
||||||
|
|
@ -115,7 +115,13 @@ void ModelViewer::draw(const DrawContext& pctx, const Assets& assets) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto& prevShader = Shader::getUsed();
|
auto& prevShader = Shader::getUsed();
|
||||||
|
|
||||||
|
if (!fbo) {
|
||||||
|
if (size.x <= 0 || size.y <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fbo = std::make_unique<Framebuffer>(size.x, size.y);
|
||||||
|
}
|
||||||
fbo->resize(size.x, size.y);
|
fbo->resize(size.x, size.y);
|
||||||
{
|
{
|
||||||
glDisable(GL_SCISSOR_TEST);
|
glDisable(GL_SCISSOR_TEST);
|
||||||
|
|
@ -154,6 +160,13 @@ void ModelViewer::draw(const DrawContext& pctx, const Assets& assets) {
|
||||||
Container::draw(pctx, assets);
|
Container::draw(pctx, assets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModelViewer::setVisible(bool flag) {
|
||||||
|
if (!flag && fbo) {
|
||||||
|
fbo.reset();
|
||||||
|
}
|
||||||
|
Container::setVisible(flag);
|
||||||
|
}
|
||||||
|
|
||||||
void ModelViewer::setCenter(const glm::vec3& center) {
|
void ModelViewer::setCenter(const glm::vec3& center) {
|
||||||
this->center = center;
|
this->center = center;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ namespace gui {
|
||||||
bool grabbing = false;
|
bool grabbing = false;
|
||||||
public:
|
public:
|
||||||
ModelViewer(GUI& gui, const glm::vec2& size, const std::string& modelName);
|
ModelViewer(GUI& gui, const glm::vec2& size, const std::string& modelName);
|
||||||
|
|
||||||
~ModelViewer();
|
~ModelViewer();
|
||||||
|
|
||||||
void setModel(const std::string& modelName);
|
void setModel(const std::string& modelName);
|
||||||
|
|
@ -34,6 +33,7 @@ namespace gui {
|
||||||
|
|
||||||
void act(float delta) override;
|
void act(float delta) override;
|
||||||
void draw(const DrawContext& pctx, const Assets& assets) override;
|
void draw(const DrawContext& pctx, const Assets& assets) override;
|
||||||
|
void setVisible(bool flag) override;
|
||||||
|
|
||||||
void setRotation(const glm::vec3& euler);
|
void setRotation(const glm::vec3& euler);
|
||||||
void setCenter(const glm::vec3& center);
|
void setCenter(const glm::vec3& center);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue