THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 18/03/2007 at 11:47, xxxxxxxx wrote:
This may have changed in R10, but here's how I'm doing highlighting (minus the complicated highlight draw routine since I'm highlighting polygon selections not just objects). I don't do this with GetCursorInfo(), I do it with Draw().
// ToolData.GetCursorInfo
//*---------------------------------------------------------------------------*
Bool IPPTool::GetCursorInfo(BaseDocument* doc, BaseContainer& data, BaseDraw* bd, Real x, Real y, BaseContainer& bc)
//*---------------------------------------------------------------------------*
{
bc.SetLong(RESULT_CURSOR, MOUSE_POINT_HAND);
mouseX = x;
mouseY = y;
#ifdef C4D_R9
if (x > -1.0f) SpecialEventAdd(EVMSG_UPDATEHIGHLIGHT);
#else
if (x > -1.0f) DrawViews(DA_ONLY_ACTIVE_VIEW|DA_NO_THREAD|DA_NO_ANIMATION);
#endif
if (hilitedOP && hilitedBP)
{
String selected = hilitedOP->GetName()+":"+hilitedBP->GetName();
bc.SetString(RESULT_BUBBLEHELP, selected+String(opstr[operation]));
lastOP = hilitedOP;
lastBP = hilitedBP;
}
else
{
lastOP = NULL;
lastBP = NULL;
bc.SetString(RESULT_BUBBLEHELP, "interPoser Pro Tool"+String(opstr[operation]));
}
return TRUE;
}
// ToolData.Draw
//*---------------------------------------------------------------------------*
LONG IPPTool::Draw(BaseDocument* doc, BaseContainer& data, BaseDraw* bd, BaseDrawHelp* bh, BaseThread* bt, LONG flags)
//*---------------------------------------------------------------------------*
{
LONG drawFlags = DRAW_AXIS|DRAW_HANDLES;
BOOL activeBD = (bd == doc->GetActiveBaseDraw());
// Draw Highlighting (avoids uncolored BoundingBox highlights (?))
// Do not highlight bodyparts if:
// ActiveBaseDraw differs from this one,
// We're in drag mode,
// Bodypart selected and a control highlighted
if (activeBD && !dragMode && !restrictMode) drawFlags = DrawHighlights(doc, bd, bh, flags, drawFlags);
// Draw Operation Controls ONLY if there is a selection
if (!selectedBP) return drawFlags;
switch (operation)
{
case IPTOP_UNIVERSAL: DrawUniversalControl(bd, bh, activeBD); break;
case IPTOP_ROTATE: DrawRotateControl(bd, bh, activeBD); break;
case IPTOP_TWIST: DrawTwistControl(bd, bh, activeBD); break;
case IPTOP_SCALE: DrawScaleControl(bd, bh, activeBD); break;
case IPTOP_TRANSLATE: DrawTranslateControl(bd, bh, activeBD); break;
default: break;
}
return drawFlags & ~DRAW_AXIS;
}
Maybe this will help in resolving your problem (?).