mySPoints.Clear();
for (int i = 1; i <= aNbVertex; i++) {
- Handle(SketcherPrs_SensitivePoint) aSP = new SketcherPrs_SensitivePoint(myOwner, myPntArray, i);
+ Handle(SketcherPrs_SensitivePoint) aSP = new SketcherPrs_SensitivePoint(myOwner, i);
mySPoints.Append(aSP);
}
}
aGroup->UserDraw(this, true);
+
+ // Disable frustum culling for this object by marking it as mutable
+ aGroup->Structure()->SetMutable(true);
//aGroup->AddPrimitiveArray(myPntArray);
}
void SketcherPrs_SymbolPrs::ComputeSelection(const Handle(SelectMgr_Selection)& aSelection,
const Standard_Integer aMode)
{
- //ClearSelected();
+ ClearSelected();
if ((aMode == 0) || (aMode == SketcherPrs_Tools::Sel_Constraint)) {
for (int i = 1; i <= mySPoints.Length(); i++)
aSelection->Add(mySPoints.Value(i));
if (theWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT)
aLineColor = theWorkspace->HighlightColor;
+ if (toHilight)
+ aCtx->core11fwd->glDisable (GL_LIGHTING);
+ else
+ aCtx->core11fwd->glEnable (GL_LIGHTING);
+
aCtx->SetColor4fv(*(const OpenGl_Vec4* )(aLineColor->rgb));
// Update selection position only if there is no selected object
// because it can corrupt selection of other objects
- //if ((GetContext()->NbCurrents() == 0) && (GetContext()->NbSelected() == 0))
- // GetContext()->RecomputeSelectionOnly(this);
+ if ((GetContext()->NbCurrents() == 0) && (GetContext()->NbSelected() == 0))
+ {
+ GetContext()->MainSelector()->RebuildSensitivesTree (this);
+ GetContext()->MainSelector()->RebuildObjectsTree (false);
+ }
}
}
}
+void SketcherPrs_SymbolPrs::BoundingBox (Bnd_Box& theBndBox)
+{
+ Select3D_BndBox3d aTmpBox;
+ for (Select3D_EntitySequenceIter aPntIter (mySPoints); aPntIter.More(); aPntIter.Next())
+ {
+ const Handle(Select3D_SensitiveEntity)& anEnt = aPntIter.Value();
+ aTmpBox.Combine (anEnt->BoundingBox());
+ }
+
+ theBndBox.Update (aTmpBox.CornerMin().x(), aTmpBox.CornerMin().y(), aTmpBox.CornerMin().z(),
+ aTmpBox.CornerMax().x(), aTmpBox.CornerMax().y(), aTmpBox.CornerMax().z());
+}
+