minimap generator: add progress bar and adt selection overlay, hide shadows from render
This commit is contained in:
@@ -20,6 +20,8 @@ uniform bool draw_impassible_flag;
|
||||
uniform bool draw_terrain_height_contour;
|
||||
uniform bool draw_lines;
|
||||
uniform bool draw_hole_lines;
|
||||
uniform bool draw_selection;
|
||||
uniform bool draw_shadows;
|
||||
|
||||
uniform bool draw_wireframe;
|
||||
uniform int wireframe_type;
|
||||
@@ -120,9 +122,16 @@ void main()
|
||||
out_color.rgb = mix(vec3(1.0), out_color.rgb, 0.5);
|
||||
}
|
||||
|
||||
float shadow_alpha = texture(shadow_map, vary_texcoord / 8.0).r;
|
||||
if(draw_selection)
|
||||
{
|
||||
out_color.rgb = mix(vec3(1.0), out_color.rgb, 0.5);
|
||||
}
|
||||
|
||||
out_color = vec4 (out_color.rgb * (1.0 - shadow_alpha), 1.0);
|
||||
if (draw_shadows)
|
||||
{
|
||||
float shadow_alpha = texture(shadow_map, vary_texcoord / 8.0).r;
|
||||
out_color = vec4 (out_color.rgb * (1.0 - shadow_alpha), 1.0);
|
||||
}
|
||||
|
||||
if (draw_terrain_height_contour)
|
||||
{
|
||||
|
||||
@@ -1665,6 +1665,8 @@ void MapView::saveMinimap(MinimapRenderSettings* settings)
|
||||
}
|
||||
}
|
||||
|
||||
minimapTool->progressUpdate(mmap_render_index);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2596,6 +2598,7 @@ void MapView::draw_map()
|
||||
, _draw_hole_lines.get() || terrainMode == editing_mode::holes
|
||||
, _draw_models_with_box.get()
|
||||
, _draw_hidden_models.get()
|
||||
, minimapTool->getMinimapRenderSettings()
|
||||
, _area_id_colors
|
||||
, _draw_fog.get()
|
||||
, terrainTool->_edit_type
|
||||
|
||||
@@ -201,6 +201,7 @@ public:
|
||||
void change_selected_wmo_doodadset(int set);
|
||||
void saveMinimap(MinimapRenderSettings* settings);
|
||||
void initMinimapSave() { saving_minimap = true; };
|
||||
noggit::camera* getCamera() { return &_camera; };
|
||||
|
||||
void set_editing_mode (editing_mode);
|
||||
|
||||
|
||||
@@ -664,6 +664,7 @@ void World::draw ( math::matrix_4x4 const& model_view
|
||||
, bool draw_hole_lines
|
||||
, bool draw_models_with_box
|
||||
, bool draw_hidden_models
|
||||
, MinimapRenderSettings* minimap_render_settings
|
||||
, std::map<int, misc::random_color>& area_id_colors
|
||||
, bool draw_fog
|
||||
, eTerrainType ground_editing_brush
|
||||
@@ -909,6 +910,7 @@ void World::draw ( math::matrix_4x4 const& model_view
|
||||
mcnk_shader.uniform("tex1", 2);
|
||||
mcnk_shader.uniform("tex2", 3);
|
||||
mcnk_shader.uniform("tex3", 4);
|
||||
mcnk_shader.uniform("draw_shadows", 1);
|
||||
mcnk_shader.uniform("shadow_map", 5);
|
||||
|
||||
mcnk_shader.uniform("tex_anim_0", math::vector_2d());
|
||||
@@ -918,6 +920,17 @@ void World::draw ( math::matrix_4x4 const& model_view
|
||||
|
||||
for (MapTile* tile : mapIndex.loaded_tiles())
|
||||
{
|
||||
|
||||
if (terrainMode == editing_mode::minimap
|
||||
&& minimap_render_settings->selected_tiles.at(64 * tile->index.x + tile->index.z))
|
||||
{
|
||||
mcnk_shader.uniform("draw_selection", 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
mcnk_shader.uniform("draw_selection", 0);
|
||||
}
|
||||
|
||||
tile->draw ( frustum
|
||||
, mcnk_shader
|
||||
, detailtexcoords
|
||||
@@ -1856,6 +1869,8 @@ void World::drawMinimap ( MapTile *tile
|
||||
mcnk_shader.uniform("tex1", 2);
|
||||
mcnk_shader.uniform("tex2", 3);
|
||||
mcnk_shader.uniform("tex3", 4);
|
||||
|
||||
mcnk_shader.uniform("draw_shadows", 0);
|
||||
mcnk_shader.uniform("shadow_map", 5);
|
||||
|
||||
mcnk_shader.uniform("tex_anim_0", math::vector_2d());
|
||||
|
||||
@@ -121,6 +121,7 @@ public:
|
||||
, bool draw_hole_lines
|
||||
, bool draw_models_with_box
|
||||
, bool draw_hidden_models
|
||||
, MinimapRenderSettings* minimap_render_settings
|
||||
, std::map<int, misc::random_color>& area_id_colors
|
||||
, bool draw_fog
|
||||
, eTerrainType ground_editing_brush
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <QWheelEvent>
|
||||
#include <QApplication>
|
||||
#include <QComboBox>
|
||||
#include <QProgressBar>
|
||||
|
||||
|
||||
namespace noggit
|
||||
@@ -50,7 +51,8 @@ namespace noggit
|
||||
|
||||
_minimap_widget->world(world);
|
||||
_minimap_widget->draw_boundaries(true);
|
||||
_minimap_widget->use_selection(&_selected_tiles);
|
||||
_minimap_widget->use_selection(&_render_settings.selected_tiles);
|
||||
_minimap_widget->camera(mapView->getCamera());
|
||||
|
||||
// Right side
|
||||
|
||||
@@ -123,6 +125,10 @@ namespace noggit
|
||||
draw_elevation->setChecked(_render_settings.draw_elevation);
|
||||
render_settings_box_layout->addRow (draw_elevation);
|
||||
|
||||
_progress_bar = new QProgressBar(this);
|
||||
_progress_bar->setRange(0, 4096);
|
||||
generate_layout->addRow (_progress_bar);
|
||||
|
||||
// Connections
|
||||
|
||||
connect ( _radius_spin, qOverload<double> (&QDoubleSpinBox::valueChanged)
|
||||
@@ -210,7 +216,7 @@ namespace noggit
|
||||
{
|
||||
if (world->mapIndex.hasTile(tile_index(x + i, y + j)))
|
||||
{
|
||||
_selected_tiles[64 * (x + i) + (y + j)] = !QApplication::keyboardModifiers().testFlag(
|
||||
_render_settings.selected_tiles[64 * (x + i) + (y + j)] = !QApplication::keyboardModifiers().testFlag(
|
||||
Qt::ControlModifier);
|
||||
}
|
||||
|
||||
@@ -221,7 +227,7 @@ namespace noggit
|
||||
{
|
||||
if (world->mapIndex.hasTile(tile_index(tile.x(), tile.y())))
|
||||
{
|
||||
_selected_tiles[64 * tile.x() + tile.y()] = !QApplication::keyboardModifiers().testFlag(
|
||||
_render_settings.selected_tiles[64 * tile.x() + tile.y()] = !QApplication::keyboardModifiers().testFlag(
|
||||
Qt::ControlModifier);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
#include <QLabel>
|
||||
#include <QWidget>
|
||||
#include <QSettings>
|
||||
#include <QtWidgets/QDoubleSpinBox>
|
||||
#include <QtWidgets/QSlider>
|
||||
#include <QDoubleSpinBox>
|
||||
#include <QProgressBar>
|
||||
|
||||
#include <boost/optional.hpp>
|
||||
#include <string>
|
||||
@@ -43,6 +43,7 @@ struct MinimapRenderSettings
|
||||
std::vector<uint32_t> m2_instance_filter_include; // include specific M2 instances
|
||||
std::vector<std::string> wmo_model_filter_exclude; // exclude WMOs by filename
|
||||
std::vector<uint32_t> wmo_instance_filter_exclude; // exclude specific WMO instances
|
||||
std::array<bool, 4096> selected_tiles = {false};
|
||||
};
|
||||
|
||||
|
||||
@@ -60,21 +61,22 @@ namespace noggit
|
||||
|
||||
float brushRadius() const { return _radius; }
|
||||
|
||||
std::array<bool, 4096>* getSelectedTiles() { return &_selected_tiles; };
|
||||
std::array<bool, 4096>* getSelectedTiles() { return &_render_settings.selected_tiles; };
|
||||
|
||||
MinimapRenderSettings* getMinimapRenderSettings() { return &_render_settings; };
|
||||
|
||||
QSize sizeHint() const override;
|
||||
void wheelEvent(QWheelEvent* event) override;
|
||||
|
||||
void progressUpdate(int value) { _progress_bar->setValue(value); };
|
||||
|
||||
private:
|
||||
float _radius = 0.01f;
|
||||
MinimapRenderSettings _render_settings;
|
||||
QSlider* _radius_slider;
|
||||
QDoubleSpinBox* _radius_spin;
|
||||
minimap_widget* _minimap_widget;
|
||||
|
||||
std::array<bool, 4096> _selected_tiles = {false};
|
||||
QProgressBar* _progress_bar;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user