コード例 #1
0
//    detach/attach any sensors, callbacks, and/or field connections.
//    Called by:            start/end of SoBaseKit::readInstance
//    and on new copy by:   start/end of SoBaseKit::copy.
//    Classes that redefine must call setUpConnections(TRUE,TRUE) 
//    at end of constructor.
//    Returns the state of the node when this was called.
SbBool
SoTranslate2Dragger::setUpConnections( SbBool onOff, SbBool doItAlways )
{
    if ( !doItAlways && connectionsSetUp == onOff)
	return onOff;

    if ( onOff ) {

	// We connect AFTER base class.
	SoDragger::setUpConnections( onOff, FALSE );

	// Call the sensor CBs to make things are up-to-date.
	fieldSensorCB( this, NULL );

	// Connect the field sensors
	if (fieldSensor->getAttachedField() != &translation)
	    fieldSensor->attach( &translation );
    }
    else {

	// We disconnect BEFORE base class.

	// Disconnect the field sensors.
	if (fieldSensor->getAttachedField())
	    fieldSensor->detach();

	SoDragger::setUpConnections( onOff, FALSE );
    }

    return !(connectionsSetUp = onOff);
}
コード例 #2
0
SbBool TranslateRadialDragger::
setUpConnections(
  SbBool onOff,
  SbBool doItAlways)
{
  if(!doItAlways && connectionsSetUp == onOff)
  {
    return onOff;
  }
  if(onOff)
  {
    // We connect AFTER base class.
    SoDragger::setUpConnections(onOff, doItAlways);

    // Call the sensor CB to make things up-to-date.
    fieldSensorCB(this, NULL);

    // Connect the field sensor
    if(fieldSensor->getAttachedField() != &translation)
    {
      fieldSensor->attach(&translation);
    }
  }
  else
  {
    // We disconnect BEFORE base class.

    // Disconnect the field sensor.
    if(fieldSensor->getAttachedField())
    {
      fieldSensor->detach();
    }

    SoDragger::setUpConnections(onOff, doItAlways);
  }
  return(!(connectionsSetUp = onOff));
}
コード例 #3
0
//    detach/attach any sensors, callbacks, and/or field connections.
//    Called by:            start/end of SoBaseKit::readInstance
//    and on new copy by:   start/end of SoBaseKit::copy.
//    Classes that redefine must call setUpConnections(TRUE,TRUE) 
//    at end of constructor.
//    Returns the state of the node when this was called.
SbBool
SoDragPointDragger::setUpConnections( SbBool onOff, SbBool doItAlways )
{
    if ( !doItAlways && connectionsSetUp == onOff)
	return onOff;

    if ( onOff ) {

	// We connect AFTER base class.
	SoDragger::setUpConnections( onOff, FALSE );

	// SET Parts and callbacks on CHLD DRAGGERS
	// Create the translate1Draggers...
	SoSeparator *dummySep = new SoSeparator;
	dummySep->ref();

	SoDragger *xD, *yD, *zD;
	xD = (SoDragger *) getAnyPart("xTranslator",FALSE);
	yD = (SoDragger *) getAnyPart("yTranslator",FALSE);
	zD = (SoDragger *) getAnyPart("zTranslator",FALSE);
	if (xD) {
	    xD->setPartAsDefault("translator","dragPointXTranslatorTranslator");
	    xD->setPartAsDefault("translatorActive",
			    "dragPointXTranslatorTranslatorActive");
	    xD->setPartAsDefault("feedback", dummySep );
	    xD->setPartAsDefault("feedbackActive", dummySep );
	    registerChildDragger( xD );
	}
	if (yD) {
	    yD->setPartAsDefault("translator","dragPointYTranslatorTranslator");
	    yD->setPartAsDefault("translatorActive",
			    "dragPointYTranslatorTranslatorActive");
	    yD->setPartAsDefault("feedback", dummySep );
	    yD->setPartAsDefault("feedbackActive", dummySep );
	    registerChildDragger( yD );
	}
	if (zD) {
	    zD->setPartAsDefault("translator","dragPointZTranslatorTranslator");
	    zD->setPartAsDefault("translatorActive",
			    "dragPointZTranslatorTranslatorActive");
	    zD->setPartAsDefault("feedback", dummySep );
	    zD->setPartAsDefault("feedbackActive", dummySep );
	    registerChildDragger( zD );
	}

	// Create the translate2Draggers...
	SoDragger *yzD, *xzD, *xyD;
	yzD = (SoDragger *) getAnyPart("yzTranslator",FALSE);
	xzD = (SoDragger *) getAnyPart("xzTranslator",FALSE);
	xyD = (SoDragger *) getAnyPart("xyTranslator",FALSE);
	if (yzD) {
	    yzD->setPartAsDefault("translator",
			    "dragPointYZTranslatorTranslator");
	    yzD->setPartAsDefault("translatorActive",
			    "dragPointYZTranslatorTranslatorActive");
	    yzD->setPartAsDefault("feedback", dummySep );
	    yzD->setPartAsDefault("feedbackActive", dummySep );
	    yzD->setPartAsDefault("xAxisFeedback", dummySep );
	    yzD->setPartAsDefault("yAxisFeedback", dummySep );
	    registerChildDragger( yzD );
	}

	if (xzD) {
	    xzD->setPartAsDefault("translator",
			    "dragPointXZTranslatorTranslator");
	    xzD->setPartAsDefault("translatorActive",
			    "dragPointXZTranslatorTranslatorActive");
	    xzD->setPartAsDefault("feedback", dummySep );
	    xzD->setPartAsDefault("feedbackActive", dummySep );
	    xzD->setPartAsDefault("xAxisFeedback", dummySep );
	    xzD->setPartAsDefault("yAxisFeedback", dummySep );
	    registerChildDragger( xzD );
	}

	if (xyD) {
	    xyD->setPartAsDefault("translator",
			    "dragPointXYTranslatorTranslator");
	    xyD->setPartAsDefault("translatorActive",
			    "dragPointXYTranslatorTranslatorActive");
	    xyD->setPartAsDefault("feedback", dummySep );
	    xyD->setPartAsDefault("feedbackActive", dummySep );
	    xyD->setPartAsDefault("xAxisFeedback", dummySep );
	    xyD->setPartAsDefault("yAxisFeedback", dummySep );
	    registerChildDragger( xyD );
	}

	dummySep->unref();

	// Call the sensor CBs to make things are up-to-date.
	fieldSensorCB( this, NULL );

	// Connect the field sensors
	if (fieldSensor->getAttachedField() != &translation)
	    fieldSensor->attach( &translation );
    }
    else {

	// We disconnect BEFORE base class.

	// Remove callbacks from CHLD DRAGGERS
	SoDragger *xD, *yD, *zD;
	xD = (SoDragger *) getAnyPart("xTranslator",FALSE);
	yD = (SoDragger *) getAnyPart("yTranslator",FALSE);
	zD = (SoDragger *) getAnyPart("zTranslator",FALSE);
	if (xD)
	    unregisterChildDragger( xD );
	if (yD)
	    unregisterChildDragger( yD );
	if (zD)
	    unregisterChildDragger( zD );

	SoDragger *yzD, *xzD, *xyD;
	yzD = (SoDragger *) getAnyPart("yzTranslator",FALSE);
	xzD = (SoDragger *) getAnyPart("xzTranslator",FALSE);
	xyD = (SoDragger *) getAnyPart("xyTranslator",FALSE);
	if (yzD)
	    unregisterChildDragger( yzD );
	if (xzD)
	    unregisterChildDragger( xzD );
	if (xyD)
	    unregisterChildDragger( xyD );

	// Disconnect the field sensors.
	if (fieldSensor->getAttachedField())
	    fieldSensor->detach();

	SoDragger::setUpConnections( onOff, FALSE );
    }

    return !(connectionsSetUp = onOff);
}