TBview。cpp文件:
BEGIN_MESSAGE_MAP(CTBView, zsVegaView)
//{{AFX_MSG_MAP(CTBView)
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
// Standard printing commands
END_MESSAGE_MAP()
void CTBView::postConfig( void )
{
createPicker();
}
void CTBView::postFrame( void )
{
if(bPicker)
doPick();
}
void CTBView::createPicker()
{
picker = vgNewPicker();
assert( picker );
vgName( picker, "jzx_picker" );
vgPickerScene( picker, mainScene );
vgPickerChannel( picker, mainChan );
vgPickerHighLightColor( picker, 1.0f, 1.0f, 0.0f );
vgProp( picker, VGPICK_TRANSFORM, VGPICK_TRANSLATE );
vgProp( picker, VGPICK_TRANSCOORDS, VGPICK_OBJECT_AXES );
vgProp( picker, VGPICK_HL_LEVEL, VGPICK_OBJECT );
vgProp( picker, VGPICK_HL_STYLE, VGPICK_HL_BBOX_LINES );
vgProp( picker, VGPICK_HL_LINEWIDTH, 2.0f );
vgProp( picker, VGPICK_CLAMP, VGPICK_CLAMP_Z );
vgProp( picker, VGPICK_TERRAIN_CLAMP, VG_OFF );
vgProp( picker, VGPICK_TRANSOVERRIDE, VG_ON );
vgProp( picker, VGPICK_DISPLAY_STDOUT, VG_OFF );
vgProp( picker, VGPICK_MULTIPLE_PICKS, VG_ON );
vgProp( picker, VGPICK_AUTOTRANSFORM, VG_OFF );
vgProp( picker, VGPICK_TRACKPLANE, VGPICK_TRACK_XY );
vgProp( picker, VGPICK_AUTOTRACKPLANE, VG_OFF );
vgProp( picker, VGPICK_DRAG_FACTOR, 0.0f );
vgProp( picker, VGPICK_RENDER_ISECT, VG_OFF );
vgPickerClampIsector( picker, 0xffffffff );
vgPickerIsector( picker, 0xffffffff );
vgProp( picker, VGCOMMON_ENABLED, VG_ON );
}
vgObject* CTBView::doPick()
{
vgObject *obj=NULL;
vgPosition *pos = NULL;
pos = vgNewPos();
if( pos != NULL )
{
vgGetPos( mainObs, pos );
if( vgPerformPickProcessing( picker, pos) )
{
obj=(vgObject*) vgGetPickerPickedObject( picker );
vgDelete(pos);
return obj;
}
}
return NULL;
} // doPick()
void CTBView::OnLButtonDown(UINT nFlags, CPoint point)
{
bPicker=TRUE;
zsVegaView::OnLButtonDown(nFlags, point);
} |