fixed bug where it was impossible to select objects via clicking
This commit is contained in:
parent
8f01039689
commit
13703f1775
1 changed files with 17 additions and 17 deletions
|
|
@ -50,7 +50,7 @@ MainViewport::MainViewport() : Graphics::ViewportWidget("Main Viewport", true),
|
||||||
m_internalFramebuf = std::make_unique<Graphics::Framebuffer>(
|
m_internalFramebuf = std::make_unique<Graphics::Framebuffer>(
|
||||||
std::vector<Graphics::FramebufferTextureInfo>{
|
std::vector<Graphics::FramebufferTextureInfo>{
|
||||||
{GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, GL_COLOR_ATTACHMENT0},
|
{GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, GL_COLOR_ATTACHMENT0},
|
||||||
{GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT, GL_COLOR_ATTACHMENT1},
|
{GL_R32I, GL_RED_INTEGER, GL_INT, GL_COLOR_ATTACHMENT1},
|
||||||
{GL_RGBA16F, GL_RGBA, GL_FLOAT, GL_COLOR_ATTACHMENT2},
|
{GL_RGBA16F, GL_RGBA, GL_FLOAT, GL_COLOR_ATTACHMENT2},
|
||||||
{GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL_ATTACHMENT}
|
{GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL_ATTACHMENT}
|
||||||
},
|
},
|
||||||
|
|
@ -321,7 +321,7 @@ void MainViewport::Draw() {
|
||||||
continue;
|
continue;
|
||||||
} else if (IsArea(obj.Type) && drawAllAreas) {
|
} else if (IsArea(obj.Type) && drawAllAreas) {
|
||||||
static auto AreaMdl = Model("St_Area");
|
static auto AreaMdl = Model("St_Area");
|
||||||
glUniform1ui(ObjIdPos, ObjID);
|
glUniform1i(ObjIdPos, ObjID);
|
||||||
AreaMdl.Draw(obj.TF, m_internalFramebuf->m_shader, VP);
|
AreaMdl.Draw(obj.TF, m_internalFramebuf->m_shader, VP);
|
||||||
ObjID++;
|
ObjID++;
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -339,7 +339,7 @@ void MainViewport::Draw() {
|
||||||
|
|
||||||
|
|
||||||
auto &mdl = MdlFromObj.find(obj.Type)->second;
|
auto &mdl = MdlFromObj.find(obj.Type)->second;
|
||||||
glUniform1ui(ObjIdPos, ObjID);
|
glUniform1i(ObjIdPos, ObjID);
|
||||||
|
|
||||||
if (&obj == selectedElem)
|
if (&obj == selectedElem)
|
||||||
glUniform4f(ObjColPos, 1, .7, .7, 1);
|
glUniform4f(ObjColPos, 1, .7, .7, 1);
|
||||||
|
|
@ -354,7 +354,7 @@ void MainViewport::Draw() {
|
||||||
|
|
||||||
if (selectedElem != nullptr) {
|
if (selectedElem != nullptr) {
|
||||||
auto selobj = selectedElem;
|
auto selobj = selectedElem;
|
||||||
glUniform1ui(ObjIdPos, 0);
|
glUniform1i(ObjIdPos, 0);
|
||||||
|
|
||||||
if (IsArea(selobj->Type)) {
|
if (IsArea(selobj->Type)) {
|
||||||
static auto AreaMdl = Model("St_Area");
|
static auto AreaMdl = Model("St_Area");
|
||||||
|
|
@ -395,21 +395,21 @@ void MainViewport::Draw() {
|
||||||
glUniform4f(ObjColPos, 0.5, 0, 0, 1);
|
glUniform4f(ObjColPos, 0.5, 0, 0, 1);
|
||||||
if (HoveredObjId == 1)
|
if (HoveredObjId == 1)
|
||||||
glUniform4f(ObjColPos, 1, 0, 0, 1);
|
glUniform4f(ObjColPos, 1, 0, 0, 1);
|
||||||
glUniform1ui(ObjIdPos, 1);
|
glUniform1i(ObjIdPos, 1);
|
||||||
Arrow.Draw(tf, m_internalFramebuf->m_shader, VP);
|
Arrow.Draw(tf, m_internalFramebuf->m_shader, VP);
|
||||||
|
|
||||||
tf.Rotation = {0, 0, 0};
|
tf.Rotation = {0, 0, 0};
|
||||||
glUniform4f(ObjColPos, 0, 0.5, 0, 1);
|
glUniform4f(ObjColPos, 0, 0.5, 0, 1);
|
||||||
if (HoveredObjId == 2)
|
if (HoveredObjId == 2)
|
||||||
glUniform4f(ObjColPos, 0, 1, 0, 1);
|
glUniform4f(ObjColPos, 0, 1, 0, 1);
|
||||||
glUniform1ui(ObjIdPos, 2);
|
glUniform1i(ObjIdPos, 2);
|
||||||
Arrow.Draw(tf, m_internalFramebuf->m_shader, VP);
|
Arrow.Draw(tf, m_internalFramebuf->m_shader, VP);
|
||||||
|
|
||||||
tf.Rotation = {90, 0, 0};
|
tf.Rotation = {90, 0, 0};
|
||||||
glUniform4f(ObjColPos, 0, 0, 0.5, 1);
|
glUniform4f(ObjColPos, 0, 0, 0.5, 1);
|
||||||
if (HoveredObjId == 3)
|
if (HoveredObjId == 3)
|
||||||
glUniform4f(ObjColPos, 0, 0, 1, 1);
|
glUniform4f(ObjColPos, 0, 0, 1, 1);
|
||||||
glUniform1ui(ObjIdPos, 3);
|
glUniform1i(ObjIdPos, 3);
|
||||||
Arrow.Draw(tf, m_internalFramebuf->m_shader, VP);
|
Arrow.Draw(tf, m_internalFramebuf->m_shader, VP);
|
||||||
|
|
||||||
glUniform4f(ObjColPos, 1, 1, 1, 1);
|
glUniform4f(ObjColPos, 1, 1, 1, 1);
|
||||||
|
|
@ -426,21 +426,21 @@ void MainViewport::Draw() {
|
||||||
glUniform4f(ObjColPos, 0.5, 0, 0, 1);
|
glUniform4f(ObjColPos, 0.5, 0, 0, 1);
|
||||||
if (HoveredObjId == 1)
|
if (HoveredObjId == 1)
|
||||||
glUniform4f(ObjColPos, 1, 0, 0, 1);
|
glUniform4f(ObjColPos, 1, 0, 0, 1);
|
||||||
glUniform1ui(ObjIdPos, 1);
|
glUniform1i(ObjIdPos, 1);
|
||||||
Scalar.Draw(tf, m_internalFramebuf->m_shader, VP);
|
Scalar.Draw(tf, m_internalFramebuf->m_shader, VP);
|
||||||
|
|
||||||
tf.Rotation = {selobj->TF.Rotation.X, selobj->TF.Rotation.Y, selobj->TF.Rotation.Z};
|
tf.Rotation = {selobj->TF.Rotation.X, selobj->TF.Rotation.Y, selobj->TF.Rotation.Z};
|
||||||
glUniform4f(ObjColPos, 0, 0.5, 0, 1);
|
glUniform4f(ObjColPos, 0, 0.5, 0, 1);
|
||||||
if (HoveredObjId == 2)
|
if (HoveredObjId == 2)
|
||||||
glUniform4f(ObjColPos, 0, 1, 0, 1);
|
glUniform4f(ObjColPos, 0, 1, 0, 1);
|
||||||
glUniform1ui(ObjIdPos, 2);
|
glUniform1i(ObjIdPos, 2);
|
||||||
Scalar.Draw(tf, m_internalFramebuf->m_shader, VP);
|
Scalar.Draw(tf, m_internalFramebuf->m_shader, VP);
|
||||||
|
|
||||||
tf.Rotation = {selobj->TF.Rotation.X + 90, selobj->TF.Rotation.Y, selobj->TF.Rotation.Z};
|
tf.Rotation = {selobj->TF.Rotation.X + 90, selobj->TF.Rotation.Y, selobj->TF.Rotation.Z};
|
||||||
glUniform4f(ObjColPos, 0, 0, 0.5, 1);
|
glUniform4f(ObjColPos, 0, 0, 0.5, 1);
|
||||||
if (HoveredObjId == 3)
|
if (HoveredObjId == 3)
|
||||||
glUniform4f(ObjColPos, 0, 0, 1, 1);
|
glUniform4f(ObjColPos, 0, 0, 1, 1);
|
||||||
glUniform1ui(ObjIdPos, 3);
|
glUniform1i(ObjIdPos, 3);
|
||||||
Scalar.Draw(tf, m_internalFramebuf->m_shader, VP);
|
Scalar.Draw(tf, m_internalFramebuf->m_shader, VP);
|
||||||
|
|
||||||
glUniform4f(ObjColPos, 1, 1, 1, 1);
|
glUniform4f(ObjColPos, 1, 1, 1, 1);
|
||||||
|
|
@ -457,21 +457,21 @@ void MainViewport::Draw() {
|
||||||
glUniform4f(ObjColPos, 0.5, 0, 0, 1);
|
glUniform4f(ObjColPos, 0.5, 0, 0, 1);
|
||||||
if (HoveredObjId == 1)
|
if (HoveredObjId == 1)
|
||||||
glUniform4f(ObjColPos, 1, 0, 0, 1);
|
glUniform4f(ObjColPos, 1, 0, 0, 1);
|
||||||
glUniform1ui(ObjIdPos, 1);
|
glUniform1i(ObjIdPos, 1);
|
||||||
Rotator.Draw(tf, m_internalFramebuf->m_shader, VP);
|
Rotator.Draw(tf, m_internalFramebuf->m_shader, VP);
|
||||||
|
|
||||||
tf.Rotation = {0, 0, 0};
|
tf.Rotation = {0, 0, 0};
|
||||||
glUniform4f(ObjColPos, 0, 0.5, 0, 1);
|
glUniform4f(ObjColPos, 0, 0.5, 0, 1);
|
||||||
if (HoveredObjId == 2)
|
if (HoveredObjId == 2)
|
||||||
glUniform4f(ObjColPos, 0, 1, 0, 1);
|
glUniform4f(ObjColPos, 0, 1, 0, 1);
|
||||||
glUniform1ui(ObjIdPos, 2);
|
glUniform1i(ObjIdPos, 2);
|
||||||
Rotator.Draw(tf, m_internalFramebuf->m_shader, VP);
|
Rotator.Draw(tf, m_internalFramebuf->m_shader, VP);
|
||||||
|
|
||||||
tf.Rotation = {90, 0, 0};
|
tf.Rotation = {90, 0, 0};
|
||||||
glUniform4f(ObjColPos, 0, 0, 0.5, 1);
|
glUniform4f(ObjColPos, 0, 0, 0.5, 1);
|
||||||
if (HoveredObjId == 3)
|
if (HoveredObjId == 3)
|
||||||
glUniform4f(ObjColPos, 0, 0, 1, 1);
|
glUniform4f(ObjColPos, 0, 0, 1, 1);
|
||||||
glUniform1ui(ObjIdPos, 3);
|
glUniform1i(ObjIdPos, 3);
|
||||||
Rotator.Draw(tf, m_internalFramebuf->m_shader, VP);
|
Rotator.Draw(tf, m_internalFramebuf->m_shader, VP);
|
||||||
|
|
||||||
glUniform4f(ObjColPos, 1, 1, 1, 1);
|
glUniform4f(ObjColPos, 1, 1, 1, 1);
|
||||||
|
|
@ -544,9 +544,9 @@ void MainViewport::HandleInput(InputEvent event) {
|
||||||
|
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, m_internalFramebuf->getId());
|
glBindFramebuffer(GL_FRAMEBUFFER, m_internalFramebuf->getId());
|
||||||
glReadBuffer(GL_COLOR_ATTACHMENT1);
|
glReadBuffer(GL_COLOR_ATTACHMENT1);
|
||||||
unsigned int obj = 0;
|
int obj = 0;
|
||||||
|
|
||||||
glReadPixels(x, y, 1, 1, GL_RED_INTEGER, GL_UNSIGNED_INT, &obj);
|
glReadPixels(x, y, 1, 1, GL_RED_INTEGER, GL_INT, &obj);
|
||||||
|
|
||||||
|
|
||||||
if (obj < 16) {
|
if (obj < 16) {
|
||||||
|
|
@ -652,9 +652,9 @@ void MainViewport::HandleInput(InputEvent event) {
|
||||||
|
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, m_internalFramebuf->getId());
|
glBindFramebuffer(GL_FRAMEBUFFER, m_internalFramebuf->getId());
|
||||||
glReadBuffer(GL_COLOR_ATTACHMENT1);
|
glReadBuffer(GL_COLOR_ATTACHMENT1);
|
||||||
unsigned int obj = 0;
|
int obj = 0;
|
||||||
|
|
||||||
glReadPixels(x, y, 1, 1, GL_RED_INTEGER, GL_UNSIGNED_INT, &obj);
|
glReadPixels(x, y, 1, 1, GL_RED_INTEGER, GL_INT, &obj);
|
||||||
|
|
||||||
if (CurrentGizmoType == Move) {
|
if (CurrentGizmoType == Move) {
|
||||||
if (SpecialObjCur == 0) {
|
if (SpecialObjCur == 0) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue