git-svn-id: svn://db.shs.com.ru/libs@639 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2019-12-02 21:09:33 +00:00
parent 35668c13fc
commit c2100ecbc0
8 changed files with 61 additions and 20 deletions

View File

@@ -53,6 +53,7 @@ void RendererSelection::resize(int width, int height) {
void RendererSelection::generateObjectsID(Scene & scene) {
ids.clear();
aim_ids.clear();
QMapIterator<Mesh*, QList<ObjectBase*> > it(scene.geometries_used);
while (it.hasNext()) {
it.next();
@@ -68,6 +69,7 @@ void RendererSelection::generateObjectsID(Scene & scene) {
foreach (ObjectBase * o, lit.value()) {
uint id = qHash(o);
ids[id] = o;
aim_ids[id + 1] = o;
o->id_ = id;
}
}
@@ -80,21 +82,31 @@ void RendererSelection::renderSelection(Scene & scene) {
MouseController & mc(view->mouse);
if (r->bindShader(Renderer::srSelectionFill, &prog)) {
mc.hov_objects.clear();
mc.hov_aims.clear();
id_hover = 0;
if (fbo_selection.queriedPoints() > 0) {
if (fbo_selection.queriedPoints() == 1) {
id_hover = fbo_selection.getPoint();
mc.hov_objects.resize(1);
mc.hov_objects[0] = ids.value(id_hover);
ObjectBase * o = ids.value(id_hover);
if (o)
mc.hov_objects << o;
else {
o = aim_ids.value(id_hover);
if (o)
mc.hov_aims << o;
}
//qDebug() << id_hover;
} else {
QVector<uint> points = fbo_selection.getPoints();
QSet<uint> ids_hover;
foreach (uint i, points)
ids_hover << i;
mc.hov_objects.clear();
foreach (uint i, ids_hover)
mc.hov_objects << ids.value(i);
foreach (uint i, ids_hover) {
ObjectBase * o = ids.value(i);
if (o) mc.hov_objects << o;
o = aim_ids.value(i);
if (o) mc.hov_aims << o;
}
//qDebug() << ids_hover;
}
}