Interaktionen programmieren

SoSelection ist ein spezieller SoSeperator Node.
Diesem Node kann angegeben werden, welche Funktion ausgeführt werden soll, wenn eines seiner Kinder selektiert wird.

Zuerst müssen neue Funktionen definiert werden, am besten je eine für den Fall, dass etwas selektiert wird und wenn etwas de-selektiert wird:
(die Argumente sind vom SoSelection Node vorgegeben - nicht ändern!)
void mySelectionCB(void *x, SoPath *selectionPath)
{
  SoTransform *mytrans = new SoTransform;
  mytrans->translation.setValue(3, 0, 0);
  root->addChild(mytrans);
  SoCube *mycube = new SoCube;
  root->addChild(mycube);
}

void myDeSelectionCB(void *x, SoPath *selectionPath)
{
  SoTransform *mytrans = new SoTransform;
  mytrans->translation.setValue(0, 3, 0);
  root->addChild(mytrans);
  SoCube *mycube = new SoCube;
  root->addChild(mycube);
}

Das Ausführen dieser Funktionen bewirkt, dass jeweils ein neuer Kubus gemacht wird.

In main() wird der SoSelection Node kreiert und einige Shapes als Kinder.

   SoSelection *myselection = new SoSelection;
   myselection->policy = SoSelection::SINGLE;          
   myselection->addSelectionCallback(mySelectionCB);
   myselection->addDeselectionCallback(myDeSelectionCB);
   root->addChild(myselection);

   SoCube *cube1 = new SoCube;
   myselection->addChild(cube1);

 
    


























































This website has been archived and is no longer maintained.