git-svn-id: svn://db.shs.com.ru/libs@639 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user