diff --git a/src/app_vr.cpp b/src/app_vr.cpp index f501f91..9e0723e 100644 --- a/src/app_vr.cpp +++ b/src/app_vr.cpp @@ -69,9 +69,10 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat auto layer_index = canvas->m_canvas->m_order[i]; for (int plane_index = 0; plane_index < 6; plane_index++) { - if (!canvas->m_canvas->m_layers[layer_index]->m_visible || + if (!(canvas->m_canvas->m_show_tmp && canvas->m_canvas->m_current_layer_idx == layer_index) && + (!canvas->m_canvas->m_layers[layer_index]->m_visible || canvas->m_canvas->m_layers[layer_index]->m_opacity == .0f || - !canvas->m_canvas->m_layers[layer_index]->m_dirty_face[plane_index]) + !canvas->m_canvas->m_layers[layer_index]->m_dirty_face[plane_index])) continue; int z = (int)(canvas->m_canvas->m_order.size() - i); @@ -184,6 +185,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat glm::vec3 aspect = { (float)uirtt.getWidth() / (float)uirtt.getHeight(), 1.f, 1.f }; // draw the frame + if (ui_visible) { auto mvp = proj * camera * glm::scale(glm::vec3(100)) * @@ -197,7 +199,8 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat } // draw the brush - if (auto mode = dynamic_cast(canvas->m_canvas->modes[(int)canvas->m_canvas->m_current_mode][0])) + auto mode = dynamic_cast(canvas->m_canvas->modes[(int)canvas->m_canvas->m_current_mode][0]); + if (ui_visible && mode) { auto pos = mode->m_resizing ? mode->m_size_pos_start : mode->m_cur_pos; if (App::I.keys[(int)kKey::KeyAlt] && !mode->m_resizing) @@ -207,6 +210,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat ShaderManager::use(kShader::StrokePreview); ShaderManager::u_int(kShaderUniform::Tex, 0); ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_current_brush->m_tip_flow); + ShaderManager::u_int(kShaderUniform::DrawOutline, false); auto tip_color = glm::vec4(glm::vec3(canvas->m_canvas->m_current_brush->m_tip_color), 1); ShaderManager::u_vec4(kShaderUniform::Col, tip_color); ShaderManager::u_mat4(kShaderUniform::MVP, @@ -245,6 +249,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat } // draw the cursor + if (ui_visible) { auto cur = (glm::vec2(cursor.x / width * zoom, 1.f - cursor.y / height * zoom) - 0.5f) * 2.f; auto mvp = proj * camera * @@ -260,6 +265,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat m_face_plane.draw_fill(); } +/* // draw the motion controller sphere { auto mvp = proj * camera * glm::translate(glm::normalize(vr_controller_pos)); @@ -268,6 +274,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat ShaderManager::u_mat4(kShaderUniform::MVP, mvp * glm::scale(glm::vec3(.025))); sphere.draw_fill(); } +*/ // draw the motion controller brush { @@ -275,6 +282,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat ShaderManager::use(kShader::StrokePreview); ShaderManager::u_int(kShaderUniform::Tex, 0); ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_current_brush->m_tip_flow); + ShaderManager::u_int(kShaderUniform::DrawOutline, false); auto tip_color = glm::vec4(glm::vec3(canvas->m_canvas->m_current_brush->m_tip_color), 1); ShaderManager::u_vec4(kShaderUniform::Col, tip_color); ShaderManager::u_mat4(kShaderUniform::MVP, diff --git a/src/main.cpp b/src/main.cpp index f5c1295..e314b2b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -504,6 +504,10 @@ bool win32_vr_start() async_unlock(); } } + if (b == ViveController::kButton::Pad && a == ViveController::kAction::Press) + { + App::I.toggle_ui(); + } }; const float target_tick_rate = 90; @@ -534,7 +538,7 @@ bool win32_vr_start() { controller_points.add(App::I.vr_controller_pos * 800.f); auto p = controller_points.average(); - if (glm::distance(p, controller_last_point) > 1) + if (glm::distance(p, controller_last_point) > 10) { async_lock(); Canvas::I->stroke_update(p, vive->m_controllers[0].axis(ViveController::kButton::Trigger).x);