From a49909c94516d21e7ece5b11d6ac42c6581de696 Mon Sep 17 00:00:00 2001 From: T1ti <40864460+T1ti@users.noreply.github.com> Date: Sun, 20 Oct 2024 03:55:42 +0200 Subject: [PATCH] animation bounding box only shows with boxes enabled --- src/noggit/MapView.cpp | 12 +++++++----- src/noggit/ModelInstance.cpp | 4 ++-- src/noggit/rendering/ModelRender.cpp | 6 ++++++ src/noggit/rendering/ModelRender.hpp | 1 + src/noggit/rendering/WorldRender.cpp | 15 +++++++++++---- .../ui/tools/PreviewRenderer/PreviewRenderer.cpp | 2 ++ 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/noggit/MapView.cpp b/src/noggit/MapView.cpp index 2c980be4..766ba751 100755 --- a/src/noggit/MapView.cpp +++ b/src/noggit/MapView.cpp @@ -3525,6 +3525,12 @@ void MapView::draw_map() cursorColor = draw_parameters.cursor_color; minimapRenderSettings = draw_parameters.minimapRenderSettings; + bool debug_cam = _debug_cam_mode.get(); + + // math::frustum frustum(model_view(debug_cam) * projection()); + _model_view = model_view(debug_cam); + _projection = projection(); + //! \note Select terrain below mouse, if no item selected or the item is map. if (!(_world->has_selection() || _locked_cursor_mode.get())) @@ -3539,8 +3545,7 @@ void MapView::draw_map() bool show_unpaintable = _classic_ui ? show_unpaintable_chunks : _left_sec_toolbar->showUnpaintableChunk(); - bool debug_cam = _debug_cam_mode.get(); - // math::frustum frustum(model_view(debug_cam) * projection()); + WorldRenderParams renderParams; @@ -3582,9 +3587,6 @@ void MapView::draw_map() renderParams.render_select_wmo_aabb = _render_wmo_aabb; renderParams.render_select_wmo_groups_bounds = _render_wmo_groups_bounds; - _model_view = model_view(debug_cam); - _projection = projection(); - _world->renderer()->draw ( _model_view , _projection diff --git a/src/noggit/ModelInstance.cpp b/src/noggit/ModelInstance.cpp index 432b5b55..833c4fdb 100755 --- a/src/noggit/ModelInstance.cpp +++ b/src/noggit/ModelInstance.cpp @@ -87,13 +87,13 @@ void ModelInstance::draw_box (glm::mat4x4 const& model_view // animated bounding box // worldRnder already draws it for any model with mesh_bounds_ratio < 0.3 - if (draw_anim_bb && model->mesh_bounds_ratio > 0.3f && model->mesh_bounds_ratio < 0.5f) + if (draw_anim_bb && model->mesh_bounds_ratio < 0.5f) { auto animated_bb = model->getAnimatedBoundingBox(); Noggit::Rendering::Primitives::WireBox::getInstance(_context).draw(model_view , projection , transformMatrix() - , { 0.6f, 0.6f, 0.6f, 0.6f } // gray + , { 0.6f, 0.6f, 0.6f, 1.0f } // gray , animated_bb[0] , animated_bb[1] ); diff --git a/src/noggit/rendering/ModelRender.cpp b/src/noggit/rendering/ModelRender.cpp index ae1ade8f..d869a788 100755 --- a/src/noggit/rendering/ModelRender.cpp +++ b/src/noggit/rendering/ModelRender.cpp @@ -162,6 +162,7 @@ void ModelRender::draw(glm::mat4x4 const& model_view , bool no_cull , bool animate , bool draw_fake_geometry_box + , bool draw_animation_box ) { ZoneScopedN(NOGGIT_CURRENT_FUNCTION); @@ -203,6 +204,11 @@ void ModelRender::draw(glm::mat4x4 const& model_view if (all_boxes || _model->_hidden ) { model_boxes_to_draw.emplace(_model, instances.size()); + + if (draw_animation_box) + { + } + } else if (draw_fake_geometry_box && _model->use_fake_geometry() /*|| _model->particles_only()*/) { // hackfix for rendering particle only objects bounds as they currently don't render diff --git a/src/noggit/rendering/ModelRender.hpp b/src/noggit/rendering/ModelRender.hpp index 86b62c08..cfe464d6 100755 --- a/src/noggit/rendering/ModelRender.hpp +++ b/src/noggit/rendering/ModelRender.hpp @@ -135,6 +135,7 @@ namespace Noggit::Rendering , bool no_cull , bool animate , bool draw_fake_geometry_box + , bool draw_animation_box ); void drawParticles(glm::mat4x4 const& model_view diff --git a/src/noggit/rendering/WorldRender.cpp b/src/noggit/rendering/WorldRender.cpp index 84772c22..7ab0d55a 100755 --- a/src/noggit/rendering/WorldRender.cpp +++ b/src/noggit/rendering/WorldRender.cpp @@ -811,6 +811,8 @@ void WorldRender::draw (glm::mat4x4 const& model_view continue; } + bool draw_animated_boxes = true; + /*if (draw_hidden_models || !pair.first->is_hidden())*/ // now done when building models_to_draw { pair.first->renderer()->draw( model_view @@ -827,13 +829,16 @@ void WorldRender::draw (glm::mat4x4 const& model_view , false , render_settings.draw_model_animations , render_settings.editing_mode == editing_mode::object + , draw_animated_boxes ); _world->_n_rendered_objects += pair.second.size(); } // Draw animated bounding boxes for small animated models that move - if (render_settings.editing_mode == editing_mode::object - && pair.first->animated_mesh() /*&& render_settings.draw_model_animations*/ && pair.first->mesh_bounds_ratio < 0.3f) + if (/*render_settings.editing_mode == editing_mode::object*/ + (render_settings.draw_models_with_box || pair.first->is_hidden()) // same condition to draw bounding box in draw() + /*&& render_settings.draw_model_animations*/ + && pair.first->animated_mesh() && pair.first->mesh_bounds_ratio < 0.5f) { auto animated_bb = pair.first->getAnimatedBoundingBox(); for (auto const& instance_matrix : pair.second) @@ -841,7 +846,7 @@ void WorldRender::draw (glm::mat4x4 const& model_view Noggit::Rendering::Primitives::WireBox::getInstance(_world->_context).draw(model_view , projection , instance_matrix - , { 0.6f, 0.6f, 0.6f, 0.6f } // grey + , { 0.6f, 0.6f, 0.6f, 1.0f } // grey , animated_bb[0] , animated_bb[1] ); @@ -945,9 +950,11 @@ void WorldRender::draw (glm::mat4x4 const& model_view { // bool is_selected = false; bool is_selected = _world->is_selected(model->uid); + + bool draw_anim_bb = !(render_settings.draw_models_with_box || model->model->is_hidden()); model->draw_box(model_view, projection, is_selected, render_settings.render_select_m2_collission_bbox - , render_settings.render_select_m2_aabb, true); + , render_settings.render_select_m2_aabb, draw_anim_bb); } } } diff --git a/src/noggit/ui/tools/PreviewRenderer/PreviewRenderer.cpp b/src/noggit/ui/tools/PreviewRenderer/PreviewRenderer.cpp index ba86f3f0..5de78446 100755 --- a/src/noggit/ui/tools/PreviewRenderer/PreviewRenderer.cpp +++ b/src/noggit/ui/tools/PreviewRenderer/PreviewRenderer.cpp @@ -261,6 +261,7 @@ void PreviewRenderer::draw() , false , _draw_animated.get() , true + , false ); } @@ -288,6 +289,7 @@ void PreviewRenderer::draw() , false , _draw_animated.get() , false + , false ); }