SoAction(3)

πŸ“¦ version 2.5.0, in fedora 43, fedora 44

πŸ’… SoAction(3) β€” Library Functions Manual πŸ’…

✨ NAME ✨

SoAction β€” the base class for all traversal actions. She's the blueprint, the mother of all action classes. πŸ’–

🌸 SYNOPSIS 🌸

#include <Inventor/actions/SoAction.h>

Inherited by β€” like, all these iconic subclasses showed up to the family reunion:

  • SoAudioRenderAction
  • SoCallbackAction
  • SoGLRenderAction
  • SoGetBoundingBoxAction
  • SoGetMatrixAction
  • SoGetPrimitiveCountAction
  • SoHandleEventAction
  • SoIntersectionDetectionAction
  • SoPickAction
  • SoSearchAction
  • SoSimplifyAction
  • SoToVRMLAction
  • SoWriteAction

πŸŽ€ Public Types πŸŽ€

  • enum AppliedCode { NODE = 0, PATH = 1, PATH_LIST = 2 }
  • enum PathCode { NO_PATH = 0, IN_PATH = 1, BELOW_PATH = 2, OFF_PATH = 3 }

πŸ’– Public Member Functions πŸ’–

  • virtual ~SoAction ()
  • virtual SoType getTypeId (void) const =0
  • virtual SbBool isOfType (SoType type) const
  • virtual void apply (SoNode *root)
  • virtual void apply (SoPath *path)
  • virtual void apply (const SoPathList &pathlist, SbBool obeysrules=0)
  • void apply (SoAction *beingApplied)
  • virtual void invalidateState (void)
  • AppliedCode getWhatAppliedTo (void) const
  • SoNode * getNodeAppliedTo (void) const
  • SoPath * getPathAppliedTo (void) const
  • const SoPathList * getPathListAppliedTo (void) const
  • const SoPathList * getOriginalPathListAppliedTo (void) const
  • SbBool isLastPathListAppliedTo (void) const
  • PathCode getPathCode (int &numindices, const int *&indices)
  • void traverse (SoNode *const node)
  • SbBool hasTerminated (void) const
  • const SoPath * getCurPath (void)
  • SoState * getState (void) const
  • PathCode getCurPathCode (void) const
  • virtual SoNode * getCurPathTail (void)
  • void usePathCode (int &numindices, const int *&indices)
  • void pushCurPath (const int childindex, SoNode *node=NULL)
  • void popCurPath (const PathCode prevpathcode)
  • void pushCurPath (void)
  • void popPushCurPath (const int childindex, SoNode *node=NULL)
  • void popCurPath (void)
  • void switchToPathTraversal (SoPath *path)
  • void switchToNodeTraversal (SoNode *node)

✨ Static Public Member Functions ✨

  • static void initClass (void)
  • static void initClasses (void)
  • static SoType getClassTypeId (void)
  • static void nullAction (SoAction *action, SoNode *node)

🌸 Protected Member Functions 🌸

  • SoAction (void)
  • virtual void beginTraversal (SoNode *node)
  • virtual void endTraversal (SoNode *node)
  • void setTerminated (const SbBool flag)
  • virtual const SoEnabledElementsList & getEnabledElements (void) const
  • virtual SbBool shouldCompactPathList (void) const

πŸ¦‹ Static Protected Member Functions πŸ¦‹

  • static SoEnabledElementsList * getClassEnabledElements (void)
  • static SoActionMethodList * getClassActionMethods (void)

πŸ“ Protected Attributes πŸ“

  • SoState * state
  • SoActionMethodList * traversalMethods

πŸ’« Detailed Description πŸ’«

SoAction is the base class for all traversal actions. Like, every action class in Coin is her descendant. πŸ‘‘

Applying actions is the basic mechanism in Coin for executing various operations on scene graphs or paths within scene graphs, including search operations, rendering, interaction through picking, etc.

The basic operation is to instantiate an action, set it up with miscellaneous parameters if necessary, then call its apply() method on the root node of the scenegraph (or sub-graph of a scenegraph). The action then traverses the scenegraph from the root node, depth-first and left-to-right, applying its specific processing at the nodes where it is applicable.

(SoAction and its derived classes in Coin are an implementation of the design pattern commonly known as the "Visitor" pattern.)

Here's a simple example that shows how to use the SoWriteAction to dump a scenegraph in the Inventor format to a file:

int write_scenegraph(const char * filename, SoNode * root)
{
  SoOutput output;
  if (output.openFile(filename)) return 0;

  // This is where the action is.  ;-)
  SoWriteAction wa(&output);
  wa.apply(root);

  return 1;
}

After traversal, some action types have stored information about the (sub-)scenegraph that was traversed, which you can then inquire about through methods like SoGetBoundingBoxAction::getBoundingBox(), SoRayPickAction::getPickedPoint(), SoGetPrimitiveCountAction::getTriangleCount(), etc etc.

See the various built-in actions for further information (ie the subclasses of this class), or look at the example code applications of the Coin library to see how actions are generally used.

For extending the Coin library with your own classes, we strongly recommend that you make yourself acquainted with the excellent Β«The Inventor ToolmakerΒ» book (ISBN 0-201-62493-1), which describes the tasks involved in detail. This book was written by the original SGI Inventor designers and explains many of the underlying design ideas, as well as having lots of hands-on examples on how to extend the Coin toolkit in ways that are true to the fundamental design ideas. (Β«The Inventor ToolmakerΒ» is also available at SGI's online library, at no cost. See Download The Inventor Toolmaker.) Reading the sourcecode of the built-in classes in Coin should also provide very helpful.

The following example shows the basic outline on how to set up your own extension action class:

// This is sample code on how you can get progress indication on Coin
// export operations by extending the library with your own action
// class. The new class inherits SoWriteAction. The code is presented
// as a stand-alone example.
//
// The general technique is to inherit SoWriteAction and override it's
// "entry point" into each node of the scenegraph. The granularity of
// the progress callbacks is on a per-node basis, which should usually
// be good enough.

#include <Inventor/SoDB.h>
#include <Inventor/actions/SoWriteAction.h>
#include <Inventor/nodes/SoSeparator.h>

class MyWriteAction : public SoWriteAction {
  SO_ACTION_HEADER(SoWriteAction);

public:
  MyWriteAction(SoOutput * out);
  virtual ~MyWriteAction();

  static void initClass(void);

protected:
  virtual void beginTraversal(SoNode * node);

private:
  static void actionMethod(SoAction *, SoNode *);
  int nrnodes;
  int totalnrnodes;
};

SO_ACTION_SOURCE(MyWriteAction);

MyWriteAction::MyWriteAction(SoOutput * out)
  : SoWriteAction(out)
{
  SO_ACTION_CONSTRUCTOR(MyWriteAction);
}

MyWriteAction::~MyWriteAction()
{
}

void
MyWriteAction::initClass(void)
{
  SO_ACTION_INIT_CLASS(MyWriteAction, SoWriteAction);

  SO_ACTION_ADD_METHOD(SoNode, MyWriteAction::actionMethod);
}

void
MyWriteAction::beginTraversal(SoNode * node)
{
  this->nrnodes = 0;
  this->totalnrnodes = 0;
  SoWriteAction::beginTraversal(node);
}

void
MyWriteAction::actionMethod(SoAction * a, SoNode * n)
{
  // To abort the export process in mid-writing, we could just avoid
  // calling in to the SoNode::writeS() method.
  SoNode::writeS(a, n);

  MyWriteAction * mwa = (MyWriteAction *)a;
  SoOutput * out = mwa->getOutput();
  if (out->getStage() == SoOutput::COUNT_REFS) {
    mwa->totalnrnodes++;
  }
  else { //  (out->getStage() == SoOutput::WRITE)
    mwa->nrnodes++;
    SbString s;
    s.sprintf(" # wrote node %p (%d/%d) \n", n, mwa->nrnodes, mwa->totalnrnodes);
    out->write(s.getString());
  }
}

int
main(int argc, char ** argv)
{
  if (argc < 2) {
    (void)fprintf(stderr, "\n\nUsage: %s <filename>\n\n", argv[0]);
    exit(1);
  }

  SoDB::init();
  MyWriteAction::initClass();

  SoInput in;
  if (!in.openFile(argv[1])) { exit(1); }

  SoSeparator * root = SoDB::readAll(&in);
  if (!root) { exit(1); }

  root->ref();

  SoOutput out;
  MyWriteAction mwa(&out);
  mwa.apply(root);

  root->unref();

  return 0;
}

🧚 Member Enumeration Documentation 🧚

enum SoAction::AppliedCode

Enumerated values for what the action was applied to.

enum SoAction::PathCode

Enumerated values for how the action is applied to a scene graph.

πŸŽ€ Constructor & Destructor Documentation πŸŽ€

SoAction::~SoAction (void ) [virtual]

Destructor, free resources.

References state.

SoAction::SoAction (void ) [protected]

Default constructor, does all necessary toplevel initialization.

References state, and traversalMethods.

Referenced by SoAudioRenderAction::addMethod(), SoCallbackAction::addMethod(), SoGetBoundingBoxAction::addMethod(), SoGetMatrixAction::addMethod(), SoGetPrimitiveCountAction::addMethod(), SoGLRenderAction::addMethod(), SoHandleEventAction::addMethod(), SoIntersectionDetectionAction::addMethod(), SoPickAction::addMethod(), SoSearchAction::addMethod(), SoSimplifyAction::addMethod(), SoWriteAction::addMethod(), apply(), getState(), getTypeId(), and nullAction().

πŸ’œ Member Function Documentation πŸ’œ

void SoAction::initClass (void ) [static]

Initializes the run-time type system for this class, and sets up the enabled elements and action method list.

References SoType::badType(), SoType::createType(), and initClasses().

Referenced by SoDB::init(), SoHardCopy::init(), and initClasses().

void SoAction::initClasses (void ) [static]

Initialize all the SoAction subclasses. Automatically called from SoAction::initClass().

References initClass().

Referenced by initClass().

SoType SoAction::getClassTypeId (void ) [static]

Returns the run-time type object associated with instances of this class.

virtual SoType SoAction::getTypeId (void ) const [pure virtual]

Returns the type identification of an action derived from a class inheriting SoAction. This is used for run-time type checking and "downward" casting.

Usage example:

void bar(SoAction * action)
{
  if (action->getTypeId() == SoGLRenderAction::getClassTypeId()) {
    // safe downward cast, know the type
    SoGLRenderAction * glrender = (SoGLRenderAction *)action;
  }
  return; // ignore if not renderaction
}

For application programmers wanting to extend the library with new actions: this method needs to be overridden in all subclasses. This is typically done as part of setting up the full type system for extension classes, which is usually accomplished by using the pre-defined macros available through Inventor/nodes/SoSubAction.h: SO_ACTION_SOURCE, SO_ACTION_INIT_CLASS and SO_ACTION_CONSTRUCTOR.

For more information on writing Coin extensions, see the SoAction class documentation.

Returns the actual type id of an object derived from a class inheriting SoAction. Needs to be overridden in all subclasses.

Okay so the way this one is implemented? It's in SoAudioRenderAction, SoBoxHighlightRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoGetPrimitiveCountAction, SoGLRenderAction, SoHandleEventAction, SoIntersectionDetectionAction, SoLineHighlightRenderAction, SoPickAction, SoRayPickAction, SoReorganizeAction, SoSearchAction, SoSimplifyAction, SoToVRML2Action, SoToVRMLAction, SoVectorizeAction, SoVectorizePSAction, and SoWriteAction. Obsessed. πŸ’…

It references apply(), beginTraversal(), endTraversal(), getCurPath(), getCurPathCode(), getCurPathTail(), getEnabledElements(), getNodeAppliedTo(), getOriginalPathListAppliedTo(), getPathAppliedTo(), getPathCode(), getPathListAppliedTo(), getState(), getWhatAppliedTo(), hasTerminated(), invalidateState(), isLastPathListAppliedTo(), isOfType(), nullAction(), popCurPath(), popPushCurPath(), pushCurPath(), setTerminated(), shouldCompactPathList(), SoAction(), switchToNodeTraversal(), switchToPathTraversal(), traverse(), and usePathCode().

And it's referenced by apply(), SoNode::audioRenderS(), SoNode::getMatrixS(), SoNode::handleEventS(), SoShape::invokeLineSegmentCallbacks(), SoShape::invokePointCallbacks(), SoShape::invokeTriangleCallbacks(), isOfType(), SoNode::pickS(), SoNode::rayPickS(), SoNode::searchS(), and SoNode::writeS().


✨ SbBool SoAction::isOfType (SoType type) const [virtual] ✨

Okay so this one returns TRUE if the type of this object is either of the same type or a subclass of type. Like, it's checking if you're that girl or a descendant of that girl. πŸ’…

References: getTypeId(), and SoType::isDerivedFrom().

Referenced by: SoSwitch::doAction(), SoVertexProperty::doAction(), SoVRMLSwitch::doAction(), SoVRMLExtrusion::generatePrimitives(), and getTypeId().


🌸 void SoAction::apply (SoNode * root) [virtual] 🌸

Applies the action to the scene graph rooted at root. Like, it's doing the thing to the whole tree. 🌳

Note that you should not apply an action to a node with a zero reference count. The behavior in that case is undefined. So don't do it, bestie. That's giving chaos. 😭

Reimplemented in SoBoxHighlightRenderAction, SoIntersectionDetectionAction, SoLineHighlightRenderAction, SoReorganizeAction, SoSimplifyAction, SoToVRML2Action, SoToVRMLAction, and SoVectorizeAction.

References: beginTraversal(), endTraversal(), getEnabledElements(), SoBase::getRefCount(), getState(), getTypeId(), SoDebugError::postWarning(), SoDB::readlock(), SoDB::readunlock(), SoBase::ref(), state, traversalMethods, and SoBase::unrefNoDelete().

Referenced by:

  • SoNodeKitPath::append()
  • apply()
  • SoBoxHighlightRenderAction::apply()
  • SoBoxHighlightRenderAction::apply()
  • SoBoxHighlightRenderAction::apply()
  • SoIntersectionDetectionAction::apply()
  • SoIntersectionDetectionAction::apply()
  • SoIntersectionDetectionAction::apply()
  • SoLineHighlightRenderAction::apply()
  • SoLineHighlightRenderAction::apply()
  • SoLineHighlightRenderAction::apply()
  • SoSimplifyAction::apply()
  • SoSimplifyAction::apply()
  • SoSimplifyAction::apply()
  • SoVectorizeAction::apply()
  • SoVectorizeAction::apply()
  • SoVectorizeAction::apply()
  • SoTransform::combineLeft()
  • SoVRMLTransform::combineLeft()
  • SoTransform::combineRight()
  • SoVRMLTransform::combineRight()
  • SoWriteAction::continueToApply()
  • SoWriteAction::continueToApply()
  • SoLevelOfDetail::doAction()
  • SoDragger::getPartToLocalMatrix()
  • getTypeId()
  • SoInteractionKit::isPathSurrogateInMySubgraph()
  • SoSceneManager::render()
  • SoSurroundScale::updateMySurroundParams()
  • SoCamera::viewAll()
  • SoCamera::viewAll()
  • SoDebug::write()
  • SoDebug::writeToFile()

πŸ¦‹ void SoAction::apply (SoPath * path) [virtual] πŸ¦‹

Applies the action to the parts of the graph defined by path. So like, just that specific path, you know? πŸ›€οΈ

Note that an SoPath will also contain all nodes that may influence e.g. geometry nodes in the path. So for instance applying an SoGLRenderAction on an SoPath will render that path as expected in the view, where geometry will get its materials, textures, and other appearance settings correctly. It's giving "the whole vibe comes along". πŸ’…

If the path ends in an SoGroup node, the action will also traverse the tail node's children. So it's not just the path, it's the path's kids too. πŸ‘Ά

Reimplemented in SoBoxHighlightRenderAction, SoIntersectionDetectionAction, SoLineHighlightRenderAction, SoReorganizeAction, SoSimplifyAction, SoToVRML2Action, SoToVRMLAction, and SoVectorizeAction.

References: beginTraversal(), endTraversal(), getEnabledElements(), SoPath::getLength(), SoPath::getNode(), SoBase::getRefCount(), getState(), SoDebugError::postWarning(), SoDB::readlock(), SoDB::readunlock(), SoBase::ref(), state, traversalMethods, and SoBase::unrefNoDelete().


πŸ’– void SoAction::apply (const SoPathList & pathlist, SbBool obeysrules = 0) [virtual] πŸ’–

Applies action to the graphs defined by pathlist. If obeysrules is set to TRUE, pathlist must obey the following four conditions (which is the case for path lists returned from search actions for non-group nodes and path lists returned from picking actions):

  1. All paths must start at the same head node.
  2. All paths must be sorted in traversal order.
  3. The paths must be unique.
  4. No path can continue through the end point of another path.

See also: SoAction::apply(SoPath * path)

Reimplemented in SoBoxHighlightRenderAction, SoIntersectionDetectionAction, SoLineHighlightRenderAction, SoReorganizeAction, SoSimplifyAction, SoToVRML2Action, SoToVRMLAction, and SoVectorizeAction.

References: SoPathList::append(), beginTraversal(), endTraversal(), getEnabledElements(), SbPList::getLength(), getState(), hasTerminated(), SoDB::readlock(), SoDB::readunlock(), shouldCompactPathList(), SoPathList::sort(), state, traversalMethods, SoBaseList::truncate(), and SoPathList::uniquify().


✨ void SoAction::apply (SoAction * beingApplied) ✨

Applies this action object to the same as beingApplied is being applied to. Like, copycat energy. πŸ‘―

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API. So it's a Coin exclusive, bestie. πŸ’Ž

Since: Coin 2.1

References: apply(), getNodeAppliedTo(), getOriginalPathListAppliedTo(), getPathAppliedTo(), getWhatAppliedTo(), and SoAction().


πŸŽ€ void SoAction::invalidateState (void ) [virtual] πŸŽ€

Invalidates the state, forcing it to be recreated at the next apply() invocation. So like, it's hitting refresh on the state. πŸ”„

Reimplemented in SoGLRenderAction.

References: state.

Referenced by: getTypeId(), SoGLRenderAction::invalidateState(), and SoSceneManager::setAudioRenderAction().


πŸ’€ void SoAction::nullAction (SoAction * action, SoNode * node) [static] πŸ’€

This method is used for filling up the lookup tables with void methods. So it's like the placeholders of the action world. πŸ’…

References: SoAction().

Referenced by: getTypeId(), and SoActionMethodList::setUp().


🌈 SoAction::AppliedCode SoAction::getWhatAppliedTo (void ) const 🌈

Returns a code indicating what (node, path, or pathlist) the action instance is being applied to. So it's like, "what are you doing?" but for actions. πŸ€”

Referenced by: apply(), getTypeId(), SoCallbackAction::invokePostCallbacks(), SoCallbackAction::invokePreCallbacks(), pushCurPath(), and usePathCode().


πŸ“ SoNode * SoAction::getNodeAppliedTo (void ) const πŸ“

Returns a pointer to the node the action is being applied to. Like, "who's the main character here?" 🎬

If action is not being applied to a node (but a path or a pathlist), the method returns NULL. So it's like, "not me, I'm not a node". πŸ™ˆ

Referenced by: apply(), and getTypeId().


🧚 SoPath * SoAction::getPathAppliedTo (void ) const 🧚

Returns the pointer to the path the action is being applied to. The path is managed by the action instance and should not be destroyed or modified by the caller. So hands off, bestie. 🚫

If action is not being applied to a path (but a node or a pathlist), the method returns NULL. So again, not me. πŸ™…

Referenced by: apply(), getTypeId(), SoCallbackAction::invokePostCallbacks(), and SoCallbackAction::invokePreCallbacks().


πŸ’œ const SoPathList * SoAction::getPathListAppliedTo (void ) const πŸ’œ

Returns the pointer to the path list the action is currently being applied to. The path list is managed by the action instance and should not be destroyed or modified by the caller. So don't touch it. πŸ›‘

If action is not being applied to a path list (but a node or a path), the method returns NULL. So like, "no list here". πŸ“

The returned pathlist pointer need not be equal to the list apply() was called with, as the action may have reorganized the path list for efficiency reasons. So it's like, the action did a little glow-up on the list. ✨

See also: void SoAction::apply(const SoPathList &, SbBool)

Referenced by: getTypeId().


🌸 const SoPathList * SoAction::getOriginalPathListAppliedTo (void ) const 🌸

Returns a pointer to the original path list the action is being applied to. Like, the before picture. πŸ“Έ

If the action is not being applied to a path list (but a node or a path), the method returns NULL. So again, not me. πŸ™ˆ

Referenced by: apply(), and getTypeId().


πŸ”₯ SbBool SoAction::isLastPathListAppliedTo (void ) const πŸ”₯

This method is not supported in Coin. It should probably have been private in OIV. So like, it's giving "why are you here?" πŸ’€

Referenced by: getTypeId().


πŸ‘‘ SoAction::PathCode SoAction::getPathCode (int & numindices, const int *& indices) πŸ‘‘

Returns a code that indicates where the current node lies with respect to the path(s) the action is being applied to. The arguments indices and numindices are only set if the method returns IN_PATH. So if it's IN_PATH, you get the deets. Otherwise, nada. 🀷

References: usePathCode().

Referenced by:

  • SoSeparator::audioRender()
  • SoVRMLGroup::audioRender()
  • SoBaseKit::doAction()
  • SoClipPlaneManip::doAction()
  • SoDirectionalLightManip::doAction()
  • SoFile::doAction()
  • SoGroup::doAction()
  • SoLOD::doAction()
  • SoNodeKitListPart::doAction()
  • SoPointLightManip::doAction()
  • SoSpotLightManip::doAction()
  • SoSwitch::doAction()
  • SoTransformManip::doAction()
  • SoVRMLAppearance::doAction()
  • SoVRMLInline::doAction()
  • SoVRMLLOD::doAction()
  • SoVRMLShape::doAction()
  • SoVRMLSwitch::doAction()
  • SoWWWInline::doAction()
  • SoBaseKit::getBoundingBox()
  • SoClipPlaneManip::getBoundingBox()
  • SoDirectionalLightManip::getBoundingBox()
  • SoFile::getBoundingBox()
  • SoGroup::getBoundingBox()
  • SoNodeKitListPart::getBoundingBox()
  • SoPointLightManip::getBoundingBox()
  • SoSpotLightManip::getBoundingBox()
  • SoTransformManip::getBoundingBox()
  • SoVRMLInline::getBoundingBox()
  • SoVRMLShape::getBoundingBox()
  • SoWWWInline::getBoundingBox()
  • SoBaseKit::getMatrix()
  • SoClipPlaneManip::getMatrix()
  • SoDirectionalLightManip::getMatrix()
  • SoNodeKitListPart::getMatrix()
  • SoPointLightManip::getMatrix()
  • SoSeparator::getMatrix()
  • SoSpotLightManip::getMatrix()
  • SoTransformManip::getMatrix()
  • SoTransformSeparator::getMatrix()
  • SoVRMLGroup::getMatrix()
  • getTypeId()
  • SoGroup::GLRender()
  • SoVRMLAppearance::GLRender()
  • SoVRMLBackground::GLRender()
  • SoVRMLCollision::GLRender()
  • SoVRMLShape::GLRender()
  • SoLOD::GLRenderInPath()
  • SoSeparator::GLRenderInPath()
  • SoVRMLBillboard::GLRenderInPath()
  • SoVRMLGroup::GLRenderInPath()
  • SoVRMLLOD::GLRenderInPath()
  • SoShaderObject::search()
  • SoShaderProgram::search()
  • SoVRMLGeometry::search()

🌟 void SoAction::traverse (SoNode *const node) 🌟

Traverses a scene graph rooted at node, invoking the action methods of the nodes in the graph. So it's like, going through the whole tree and doing the thing at each node. 🌳

References: SoNode::getActionMethodIndex(), SoBase::getTypeId(), and traversalMethods.

Referenced by beginTraversal(), SoAudioRenderAction::beginTraversal(), SoCallbackAction::beginTraversal(), SoGetMatrixAction::beginTraversal(), SoGetPrimitiveCountAction::beginTraversal(), SoHandleEventAction::beginTraversal(), SoSearchAction::beginTraversal(), SoWriteAction::beginTraversal(), getTypeId(), switchToNodeTraversal(), switchToPathTraversal(), SoChildList::traverse(), and SoChildList::traverseInPath().


πŸ’€ SbBool SoAction::hasTerminated (void ) const πŸ’€

Bestie. Okay. This one is SO important and it's literally one line of vibes: it returns TRUE if the action got prematurely terminated. Like, someone pulled the plug mid-run. πŸ’…

⚠️ But here's the plot twist, and the way this trips people up is iconic β€” the termination flag is gonna be FALSE if the action just… finished normally?? Like, ran over the whole scene graph the "ordinary" way, no drama, no one aborted it from inside any of the nodes in the graph. So FALSE does not mean "nothing bad happened," it means "nobody slammed the door on the way out." Don't let it play you. 😭

See also setTerminated() β€” go read that one too, they're a matching set, fr fr 🫢

Referenced by SoGLRenderAction::abortNow(), apply(), SoNode::callbackS(), getTypeId(), SoGroup::GLRender(), SoVRMLAppearance::GLRender(), SoVRMLCollision::GLRender(), SoVRMLShape::GLRender(), SoSeparator::GLRenderBelowPath(), SoVRMLBillboard::GLRenderBelowPath(), SoVRMLGroup::GLRenderBelowPath(), SoLOD::GLRenderInPath(), SoSeparator::GLRenderInPath(), SoVRMLBillboard::GLRenderInPath(), SoVRMLGroup::GLRenderInPath(), SoVRMLLOD::GLRenderInPath(), SoSearchAction::isFound(), SoHandleEventAction::isHandled(), SoChildList::traverse(), and SoChildList::traverseInPath().


πŸ¦‹ const SoPath * SoAction::getCurPath (void ) πŸ¦‹

Hands you back a pointer to the path generated during traversal β€” from the root of the traversed graph, all the way down to the current node. So basically: "where are we right now, and what's the receipt of how we got here?" 🧾✨

Like, the whole ancestry trail, from the top of the graph to wherever the action is standing in this exact moment. Main character energy but with a family tree. πŸ‘‘

Referenced by SoGLRenderAction::abortNow(), SoRayPickAction::addIntersection(), SoPathSwitch::audioRender(), SoGetBoundingBoxAction::checkResetAfter(), SoGetBoundingBoxAction::checkResetBefore(), SoLevelOfDetail::doAction(), SoPathSwitch::doAction(), SoPathSwitch::getBoundingBox(), SoPathSwitch::getMatrix(), SoPathSwitch::getPrimitiveCount(), getTypeId(), SoPathSwitch::GLRender(), SoAnnotation::GLRenderBelowPath(), SoExtSelection::GLRenderBelowPath(), SoAnnotation::GLRenderInPath(), SoDragger::handleEvent(), SoLocateHighlight::handleEvent(), SoPathSwitch::handleEvent(), SoVRMLDragSensor::handleEvent(), SoVRMLTouchSensor::handleEvent(), SoGLRenderAction::handleTransparency(), SoPathSwitch::pick(), SoNode::search(), SoShape::shouldGLRender(), and SoSurroundScale::updateMySurroundParams().


πŸ’œ SoState * SoAction::getState (void ) const πŸ’œ

Returns a pointer to the state of the action instance. And what's in that state, you ask? It's holding the current set of elements used during traversal. That's the live, in-flight toolkit the action is carrying around with it while it walks the graph. πŸŽ€

References SoEnabledElementsList::getCounter(), getEnabledElements(), SoAction(), and state. 🫢

…and the referenced-by roll call just keeps going, bestie. Like, she is everywhere. No brakes, no filter, full list, verbatim, because we don't gatekeep πŸ’…

Referenced by SoGLRenderAction::addDelayedPath(), apply(), apply(),
apply(), SoIndexedShape::areTexCoordsIndexed(), SoCamera::audioRender(),
SoListener::audioRender(), SoSeparator::audioRender(),
SoTransformSeparator::audioRender(), SoVRMLGroup::audioRender(),
SoVRMLSound::audioRender(), SoShape::beginSolidShape(),
SoCallbackAction::beginTraversal(),
SoGetBoundingBoxAction::beginTraversal(),
SoHandleEventAction::beginTraversal(), SoPickAction::beginTraversal(),
SoRayPickAction::beginTraversal(), SoComplexity::callback(),
SoDragger::callback(), SoEnvironment::callback(),
SoGeoSeparator::callback(), SoLight::callback(),
SoSeparator::callback(), SoTransformSeparator::callback(),
SoVRMLGroup::callback(), SoVRMLTransform::callback(),
SoGetBoundingBoxAction::checkResetAfter(),
SoGetBoundingBoxAction::checkResetBefore(), SoAsciiText::computeBBox(),
SoImage::computeBBox(), SoIndexedNurbsCurve::computeBBox(),
SoIndexedNurbsSurface::computeBBox(), SoIndexedShape::computeBBox(),
SoNurbsCurve::computeBBox(), SoNurbsSurface::computeBBox(),
SoText2::computeBBox(), SoText3::computeBBox(),
SoVRMLText::computeBBox(), SoNonIndexedShape::computeCoordBBox(),
SoAntiSquish::doAction(), SoArray::doAction(), SoBaseColor::doAction(),
SoBumpMap::doAction(), SoBumpMapCoordinate::doAction(),
SoBumpMapTransform::doAction(), SoCamera::doAction(),
SoClipPlane::doAction(), SoComplexity::doAction(),
SoCoordinate3::doAction(), SoCoordinate4::doAction(),
SoDrawStyle::doAction(), SoFont::doAction(), SoFontStyle::doAction(),
SoGeoCoordinate::doAction(), SoGeoLocation::doAction(),
SoGeoOrigin::doAction(), SoLevelOfDetail::doAction(),
SoLightModel::doAction(), SoMaterial::doAction(),
SoMaterialBinding::doAction(), SoMatrixTransform::doAction(),
SoMultipleCopy::doAction(), SoNormal::doAction(),
SoNormalBinding::doAction(), SoPackedColor::doAction(),
SoPickStyle::doAction(), SoPolygonOffset::doAction(),
SoProfile::doAction(), SoProfileCoordinate2::doAction(),
SoProfileCoordinate3::doAction(), SoResetTransform::doAction(),
SoRotation::doAction(), SoRotationXYZ::doAction(), SoScale::doAction(),
SoSceneTexture2::doAction(), SoSeparator::doAction(),
SoShapeHints::doAction(), SoSurroundScale::doAction(),
SoSwitch::doAction(), SoTexture2::doAction(),
SoTexture2Transform::doAction(), SoTexture3::doAction(),
SoTexture3Transform::doAction(), SoTextureCombine::doAction(),
SoTextureCoordinate2::doAction(), SoTextureCoordinate3::doAction(),
SoTextureCoordinateBinding::doAction(),
SoTextureCoordinateDefault::doAction(),
SoTextureCoordinateEnvironment::doAction(),
SoTextureCoordinatePlane::doAction(), SoTextureCubeMap::doAction(),
SoTextureUnit::doAction(), SoTransform::doAction(),
SoTransformSeparator::doAction(), SoTranslation::doAction(),
SoTransparencyType::doAction(), SoUnits::doAction(),
SoVertexProperty::doAction(), SoVRMLBillboard::doAction(),
SoVRMLColor::doAction(), SoVRMLCoordinate::doAction(),
SoVRMLGroup::doAction(), SoVRMLImageTexture::doAction(),
SoVRMLMaterial::doAction(), SoVRMLNormal::doAction(),
SoVRMLPixelTexture::doAction(), SoVRMLProximitySensor::doAction(),
SoVRMLShape::doAction(), SoVRMLSwitch::doAction(),
SoVRMLTextureCoordinate::doAction(), SoVRMLTextureTransform::doAction(),
SoVRMLTransform::doAction(), SoShape::endSolidShape(),
SoGetBoundingBoxAction::extendBy(), SoShape::finishVertexArray(),
SoAsciiText::generatePrimitives(), SoCone::generatePrimitives(),
SoCube::generatePrimitives(), SoCylinder::generatePrimitives(),
SoFaceSet::generatePrimitives(), SoImage::generatePrimitives(),
SoIndexedFaceSet::generatePrimitives(),
SoIndexedTriangleStripSet::generatePrimitives(),
SoLineSet::generatePrimitives(), SoPointSet::generatePrimitives(),
SoQuadMesh::generatePrimitives(), SoText3::generatePrimitives(),
SoTriangleStripSet::generatePrimitives(),
SoVRMLElevationGrid::generatePrimitives(),
SoVRMLExtrusion::generatePrimitives(),
SoVRMLIndexedFaceSet::generatePrimitives(),
SoVRMLIndexedLineSet::generatePrimitives(),
SoVRMLPointSet::generatePrimitives(), SoVRMLText::generatePrimitives(),
SoArray::getBoundingBox(), SoCamera::getBoundingBox(),
SoGeoLocation::getBoundingBox(), SoGeoSeparator::getBoundingBox(),
SoIndexedLineSet::getBoundingBox(),
SoIndexedNurbsCurve::getBoundingBox(),
SoLevelOfDetail::getBoundingBox(), SoLineSet::getBoundingBox(),
SoNurbsCurve::getBoundingBox(), SoResetTransform::getBoundingBox(),
SoSeparator::getBoundingBox(), SoTransformSeparator::getBoundingBox(),
SoVertexProperty::getBoundingBox(), SoVRMLBillboard::getBoundingBox(),
SoVRMLGroup::getBoundingBox(), SoVRMLIndexedLineSet::getBoundingBox(),
SoVRMLPointSet::getBoundingBox(), SoVRMLShape::getBoundingBox(),
SoVRMLTransform::getBoundingBox(), SoShape::getComplexityValue(),
SoGeoLocation::getMatrix(), SoGeoSeparator::getMatrix(),
SoSeparator::getMatrix(), SoUnits::getMatrix(),
SoVRMLTransform::getMatrix(), SoAsciiText::getPrimitiveCount(),
SoComplexity::getPrimitiveCount(), SoDragger::getPrimitiveCount(),
SoFaceSet::getPrimitiveCount(), SoGeoSeparator::getPrimitiveCount(),
SoLineSet::getPrimitiveCount(), SoMarkerSet::getPrimitiveCount(),
SoPointSet::getPrimitiveCount(),
SoTriangleStripSet::getPrimitiveCount(),
SoVRMLGroup::getPrimitiveCount(), SoVRMLText::getPrimitiveCount(),
SoVRMLTransform::getPrimitiveCount(), getTypeId(),
SoCallbackAction::getViewportRegion(), SoRayPickAction::getViewVolume(),
SoAsciiText::GLRender(), SoBumpMap::GLRender(),
SoBumpMapCoordinate::GLRender(), SoCamera::GLRender(),
SoClipPlane::GLRender(), SoColorIndex::GLRender(),
SoComplexity::GLRender(), SoCone::GLRender(), SoCoordinate3::GLRender(),
SoCoordinate4::GLRender(), SoCube::GLRender(), SoCylinder::GLRender(),
SoDirectionalLight::GLRender(), SoDragger::GLRender(),
SoEnvironment::GLRender(), SoFaceSet::GLRender(),
SoGeometryShader::GLRender(), SoGroup::GLRender(), SoImage::GLRender(),
SoIndexedFaceSet::GLRender(), SoIndexedLineSet::GLRender(),
SoIndexedNurbsCurve::GLRender(), SoIndexedNurbsSurface::GLRender(),
SoIndexedTriangleStripSet::GLRender(), SoLevelOfDetail::GLRender(),
SoLineSet::GLRender(), SoMarkerSet::GLRender(), SoNormal::GLRender(),
SoNurbsCurve::GLRender(), SoNurbsSurface::GLRender(),
SoPointLight::GLRender(), SoPointSet::GLRender(),
SoQuadMesh::GLRender(), SoResetTransform::GLRender(),
SoSceneTexture2::GLRender(), SoShadowCulling::GLRender(),
SoShadowStyle::GLRender(), SoShape::GLRender(), SoSphere::GLRender(),
SoSpotLight::GLRender(), SoTabPlaneDragger::GLRender(),
SoText2::GLRender(), SoText3::GLRender(), SoTexture2::GLRender(),
SoTexture2Transform::GLRender(), SoTexture3::GLRender(),
SoTexture3Transform::GLRender(), SoTextureCoordinate2::GLRender(),
SoTextureCoordinate3::GLRender(), SoTextureCoordinateCube::GLRender(),
SoTextureCoordinateCylinder::GLRender(),
SoTextureCoordinateDefault::GLRender(),
SoTextureCoordinateEnvironment::GLRender(),
SoTextureCoordinatePlane::GLRender(),
SoTextureCoordinateSphere::GLRender(), SoTextureCubeMap::GLRender(),
SoTextureScalePolicy::GLRender(), SoTextureUnit::GLRender(),
SoTransformSeparator::GLRender(), SoTriangleStripSet::GLRender(),
SoVRMLAppearance::GLRender(), SoVRMLBackground::GLRender(),
SoVRMLBox::GLRender(), SoVRMLCollision::GLRender(),
SoVRMLCone::GLRender(), SoVRMLCoordinate::GLRender(),
SoVRMLCylinder::GLRender(), SoVRMLDirectionalLight::GLRender(),
SoVRMLElevationGrid::GLRender(), SoVRMLExtrusion::GLRender(),
SoVRMLFog::GLRender(), SoVRMLImageTexture::GLRender(),
SoVRMLIndexedFaceSet::GLRender(), SoVRMLIndexedLineSet::GLRender(),
SoVRMLInline::GLRender(), SoVRMLNormal::GLRender(),
SoVRMLPixelTexture::GLRender(), SoVRMLPointLight::GLRender(),
SoVRMLPointSet::GLRender(), SoVRMLShape::GLRender(),
SoVRMLSphere::GLRender(), SoVRMLSpotLight::GLRender(),
SoVRMLText::GLRender(), SoVRMLTextureCoordinate::GLRender(),
SoVRMLVisibilitySensor::GLRender(), SoWWWInline::GLRender(),
SoAnnotation::GLRenderBelowPath(), SoExtSelection::GLRenderBelowPath(),
SoGeoSeparator::GLRenderBelowPath(),
SoLocateHighlight::GLRenderBelowPath(), SoLOD::GLRenderBelowPath(),
SoSeparator::GLRenderBelowPath(), SoVRMLBillboard::GLRenderBelowPath(),
SoVRMLGroup::GLRenderBelowPath(), SoVRMLLOD::GLRenderBelowPath(),
SoVRMLTransform::GLRenderBelowPath(), SoShape::GLRenderBoundingBox(),
SoAnnotation::GLRenderInPath(), SoGeoSeparator::GLRenderInPath(),
SoLocateHighlight::GLRenderInPath(), SoSeparator::GLRenderInPath(),
SoVRMLBillboard::GLRenderInPath(), SoVRMLGroup::GLRenderInPath(),
SoVRMLTransform::GLRenderInPath(), SoNode::GLRenderS(),
SoCamera::handleEvent(), SoVRMLAnchor::handleEvent(),
SoVRMLDragSensor::handleEvent(), SoGLRenderAction::handleTransparency(),
SoShape::invokeTriangleCallbacks(), SoTransformSeparator::pick(),
SoSceneManager::processEvent(), SoCone::rayPick(), SoCube::rayPick(),
SoCylinder::rayPick(), SoDragger::rayPick(), SoGeoSeparator::rayPick(),
SoImage::rayPick(), SoIndexedNurbsCurve::rayPick(),
SoIndexedNurbsSurface::rayPick(), SoNurbsCurve::rayPick(),
SoNurbsSurface::rayPick(), SoSeparator::rayPick(), SoShape::rayPick(),
SoText2::rayPick(), SoVRMLGroup::rayPick(), SoVRMLTransform::rayPick(),
SoTabPlaneDragger::reallyAdjustScaleTabSize(), SoArray::search(),
SoMultipleCopy::search(), SoDragger::setCameraInfo(),
SoShape::shouldGLRender(), SoShape::shouldRayPick(),
SoShape::startVertexArray(), SoSurroundScale::updateMySurroundParams(),
SoLOD::whichToTraverse(), and SoVRMLLOD::whichToTraverse().

Like… that's the whole friend group. Everyone in the scene references her. Main character energy fr fr πŸ‘‘


🌸 SoAction::PathCode SoAction::getCurPathCode (void ) const [inline]

Okay so this one is the vibe check for where you are in the traversal: it hands you back the current traversal path code. That's it, that's the tea. <purple>SoAction::PathCode</purple> is what you're getting back, it takes void (nothing, no arguments, she needs nothing from you 🫢), it's <mint>const</mint>, and it's <mint>inline</mint>.

The girls that call her:

  • SoLevelOfDetail::doAction()
  • SoLevelOfDetail::getBoundingBox()
  • SoSeparator::getBoundingBox()
  • SoVRMLGroup::getBoundingBox()
  • SoGroup::getMatrix()
  • SoSwitch::getMatrix()
  • SoVRMLSwitch::getMatrix()
  • getTypeId()
  • SoAnnotation::GLRender()
  • SoGroup::GLRender()
  • SoLOD::GLRender()
  • SoSeparator::GLRender()
  • SoVRMLAppearance::GLRender()
  • SoVRMLBillboard::GLRender()
  • SoVRMLCollision::GLRender()
  • SoVRMLGroup::GLRender()
  • SoVRMLLOD::GLRender()
  • SoVRMLShape::GLRender()
  • SoVRMLBillboard::GLRenderInPath()
  • SoVRMLGroup::GLRenderInPath()
  • SoVRMLTransform::GLRenderInPath()
  • SoNode::GLRenderS()
  • SoChildList::traverse()
  • SoChildList::traverseInPath()

Twenty-four callers and not one of them is slacking. ✨


πŸ¦‹ SoNode * SoAction::getCurPathTail (void ) [virtual]

Real talk: this one is internal library business. Like, the manpage says it plain β€” this API member is considered internal to the library, as it is not likely to be of interest to the application programmer. So if you're out here writing an app, this is not your moment bestie, it's the library's πŸ’…. She returns a SoNode *, she takes void, and she's [virtual].

Reimplemented in SoCallbackAction.

And she's referenced by getTypeId().


πŸŽ€ void SoAction::usePathCode (int & numindices, const int *& indices)

Same energy, same warning label: this API member is considered internal to the library, as it is not likely to be of interest to the application programmer. Internal. Library-only. Not for the app devs, no cap. She takes int & numindices and const int *& indices by reference β€” yes, references to pointers, she's doing the most and honestly? She ate. πŸ”₯


…and that's where this part lands, but there's still more where that came from πŸ‘€

References SbList< Type >::append(), SoPath::containsPath(), SbList< Type >::getArrayPtr(), SoPath::getIndex(), SbList< Type >::getLength(), SbPList::getLength(), getWhatAppliedTo(), and SbList< Type >::truncate().

Referenced by getPathCode(), and getTypeId().


void SoAction::pushCurPath (const int childindex, SoNode * node = NULL)

Bestie, this one gets you ready to traverse the childindex'th child. Use this method if the path code might change as a result of this. πŸŒ€

⚠️ This method is very internal. Do not use unless you know what you're doing. Like, fr fr.

References: SoPath::containsPath(), SbPList::getLength(), SoBase::getName(), SbName::getString(), and getWhatAppliedTo().

Referenced by:

  • getTypeId()
  • SoGroup::GLRender()
  • SoVRMLAppearance::GLRender()
  • SoVRMLCollision::GLRender()
  • SoVRMLShape::GLRender()
  • SoLOD::GLRenderBelowPath()
  • SoSeparator::GLRenderBelowPath()
  • SoVRMLBillboard::GLRenderBelowPath()
  • SoVRMLGroup::GLRenderBelowPath()
  • SoVRMLLOD::GLRenderBelowPath()
  • SoLOD::GLRenderInPath()
  • SoSeparator::GLRenderInPath()
  • SoVRMLBillboard::GLRenderInPath()
  • SoVRMLGroup::GLRenderInPath()
  • SoVRMLLOD::GLRenderInPath()
  • SoLOD::GLRenderOffPath()
  • SoVRMLLOD::GLRenderOffPath()
  • SoShaderObject::search()
  • SoShaderProgram::search()
  • SoChildList::traverse()
  • SoChildList::traverseInPath()

void SoAction::popCurPath (const PathCode prevpathcode) [inline]

Pops the current path, and sets the path code to prevpathcode. 🎯

⚠️ This method is very internal. Do not use unless you know what you're doing.

Referenced by:

  • getTypeId()
  • SoGroup::GLRender()
  • SoVRMLAppearance::GLRender()
  • SoVRMLCollision::GLRender()
  • SoVRMLShape::GLRender()
  • SoLOD::GLRenderBelowPath()
  • SoSeparator::GLRenderBelowPath()
  • SoVRMLBillboard::GLRenderBelowPath()
  • SoVRMLGroup::GLRenderBelowPath()
  • SoVRMLLOD::GLRenderBelowPath()
  • SoLOD::GLRenderInPath()
  • SoSeparator::GLRenderInPath()
  • SoVRMLBillboard::GLRenderInPath()
  • SoVRMLGroup::GLRenderInPath()
  • SoVRMLLOD::GLRenderInPath()
  • SoLOD::GLRenderOffPath()
  • SoVRMLLOD::GLRenderOffPath()
  • SoShaderObject::search()
  • SoShaderProgram::search()
  • SoChildList::traverse()
  • SoChildList::traverseInPath()

void SoAction::pushCurPath (void )

Pushes a NULL node onto the current path. Use this before traversing all children when you know that the path code will not change while traversing children. 🌳

⚠️ This method is very internal. Do not use unless you know what you're doing.

void SoAction::popPushCurPath (const int childindex, SoNode * node = NULL)

Get ready to traverse the childindex'th child. Use this method if you know the path code will not change as a result of this. πŸ”„

⚠️ This method is very internal. Do not use unless you know what you're doing.

Referenced by:

  • getTypeId()
  • SoGroup::GLRender()
  • SoVRMLAppearance::GLRender()
  • SoVRMLCollision::GLRender()
  • SoVRMLShape::GLRender()
  • SoSeparator::GLRenderBelowPath()
  • SoVRMLBillboard::GLRenderBelowPath()
  • SoVRMLGroup::GLRenderBelowPath()
  • SoChildList::traverse()

void SoAction::popCurPath (void )

Pops of the last child in the current path. Use this if you know the path code hasn't changed since the current path was pushed. πŸ“

⚠️ This method is very internal. Do not use unless you know what you're doing.

void SoAction::switchToPathTraversal (SoPath * path)

Store our state, traverse the given path, restore our state and continue traversal. πŸ”

References: SoPath::getNode(), and traverse().

Referenced by: getTypeId().


void SoAction::switchToNodeTraversal (SoNode * node)

Store our state, traverse the subgraph rooted at the given node, restore our state and continue traversal. 🌲

References: traverse().

Referenced by: getTypeId().


void SoAction::beginTraversal (SoNode * node) [protected], [virtual]

This virtual method is called from SoAction::apply(), and is the entry point for the actual scenegraph traversal. πŸšͺ

It can be overridden to initialize the action at traversal start, for specific initializations in the action subclasses inheriting SoAction.

Default method just calls traverse(), which any overridden implementation of the method must do too (or call SoAction::beginTraversal()) to trigger the scenegraph traversal. 🎬

Reimplemented in: SoAudioRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoGetPrimitiveCountAction, SoGLRenderAction, SoHandleEventAction, SoPickAction, SoRayPickAction, SoReorganizeAction, SoSearchAction, SoSimplifyAction, SoToVRML2Action, SoToVRMLAction, and SoWriteAction.

References: traverse().

Referenced by:

  • apply()
  • apply()
  • apply()
  • SoGetBoundingBoxAction::beginTraversal()
  • SoGLRenderAction::beginTraversal()
  • SoPickAction::beginTraversal()
  • SoSimplifyAction::beginTraversal()
  • getTypeId()

void SoAction::endTraversal (SoNode * node) [protected], [virtual]

This virtual method can be overridden to execute code after the scene graph traversal. Default method does nothing. πŸ›‘

Reimplemented in: SoGLRenderAction.

Referenced by:

  • apply()
  • apply()
  • apply()
  • SoGLRenderAction::endTraversal()
  • getTypeId()

void SoAction::setTerminated (const SbBool flag) [protected]

Set the termination flag. 🏁

Typically set to TRUE from nodes upon special conditions being met during scene graph traversal -- like the correct node being found when doing SoSearchAction traversal or when grabbing the event from an SoHandleEventAction.

See also: hasTerminated()

Referenced by:

  • SoGLRenderAction::abortNow()
  • getTypeId()
  • SoCallbackAction::invokePostCallbacks()
  • SoCallbackAction::invokePreCallbacks()
  • SoSearchAction::setFound()
  • SoHandleEventAction::setHandled()

const SoEnabledElementsList & SoAction::getEnabledElements (void ) const [protected], [virtual]

Returns a list of the elements used by action instances of this class upon traversal operations. πŸ“‹

Reimplemented in: SoAudioRenderAction, SoBoxHighlightRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoGetMatrixAction, SoGetPrimitiveCountAction, SoGLRenderAction, SoHandleEventAction, SoIntersectionDetectionAction, SoLineHighlightRenderAction, SoPickAction, SoRayPickAction, SoReorganizeAction, SoSearchAction, SoSimplifyAction, SoToVRML2Action, SoToVRMLAction, SoVectorizeAction, SoVectorizePSAction, and SoWriteAction.

Referenced by:

  • apply()
  • apply()
  • apply()
  • getState()
  • getTypeId()

SbBool SoAction::shouldCompactPathList (void ) const [protected], [virtual]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. πŸ™ˆ

Referenced by: apply(), and getTypeId().


SoEnabledElementsList * SoAction::getClassEnabledElements (void ) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. πŸ™ˆ

This method not available in the original OIV API, see SoSubAction.h for explanation.


SoActionMethodList * SoAction::getClassActionMethods (void ) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. πŸ™ˆ

This method not available in the original OIV API, see SoSubAction.h for explanation.


✨ Member Data Documentation ✨

SoState* SoAction::state [protected]

Pointer to the traversal state instance of the action. 🧠

Referenced by:

  • SoRayPickAction::addIntersection()
  • apply()
  • apply()
  • apply()
  • SoGetMatrixAction::beginTraversal()
  • SoRayPickAction::beginTraversal()
  • SoRayPickAction::computeWorldSpaceRay()
  • SoGetBoundingBoxAction::extendBy()
  • SoCallbackAction::getComplexity()
  • SoCallbackAction::getComplexityType()
  • SoCallbackAction::getCoordinate3()
  • SoCallbackAction::getCoordinate4()
  • SoCallbackAction::getCreaseAngle()
  • SoCallbackAction::getDecimationPercentage()
  • SoCallbackAction::getDecimationType()
  • SoCallbackAction::getDrawStyle()
  • SoCallbackAction::getFaceType()
  • SoCallbackAction::getFocalDistance()
  • SoCallbackAction::getFontName()
  • SoCallbackAction::getFontSize()
  • SoCallbackAction::getLightAttenuation()
  • SoCallbackAction::getLightModel()
  • SoCallbackAction::getLinePattern()
  • SoCallbackAction::getLineWidth()
  • SoCallbackAction::getMaterial()
  • SoCallbackAction::getMaterialBinding()
  • SoCallbackAction::getModelMatrix()
  • SoCallbackAction::getNormal()
  • SoCallbackAction::getNormalBinding()
  • SoCallbackAction::getNumCoordinates()
  • SoCallbackAction::getNumNormals()
  • SoCallbackAction::getNumProfileCoordinates()
  • SoCallbackAction::getNumTextureCoordinates()
  • SoCallbackAction::getPickStyle()
  • SoCallbackAction::getPointSize()
  • SoCallbackAction::getProfile()
  • SoCallbackAction::getProfileCoordinate2()
  • SoCallbackAction::getProfileCoordinate3()
  • SoCallbackAction::getProjectionMatrix()
  • SoCallbackAction::getShapeType()
  • getState()
  • SoCallbackAction::getSwitch()
  • SoCallbackAction::getTextureBlendColor()
  • SoCallbackAction::getTextureCoordinate2()
  • SoCallbackAction::getTextureCoordinate3()
  • SoCallbackAction::getTextureCoordinate4()
  • SoCallbackAction::getTextureCoordinateBinding()
  • SoCallbackAction::getTextureImage()
  • SoCallbackAction::getTextureImage()
  • SoCallbackAction::getTextureMatrix()
  • SoCallbackAction::getTextureModel()
  • SoCallbackAction::getTextureWrapR()
  • SoCallbackAction::getTextureWrapS()
  • SoCallbackAction::getTextureWrapT()
  • SoCallbackAction::getUnits()
  • SoCallbackAction::getVertexOrdering()
  • SoCallbackAction::getViewingMatrix()
  • SoCallbackAction::getViewVolume()
  • invalidateState()
  • SoRayPickAction::isBetweenPlanes()
  • SoGetBoundingBoxAction::setCenter()
  • SoRayPickAction::setObjectSpace()
  • SoRayPickAction::setObjectSpace()
  • SoAction()
  • ~SoAction()

SoActionMethodList* SoAction::traversalMethods [protected]

Stores the list of "nodetype to actionmethod" mappings for the particular action instance. πŸ—ΊοΈ

Referenced by:

  • apply()
  • apply()
  • apply()
  • SoGetMatrixAction::beginTraversal()
  • SoAction()
  • traverse()

✨ Author ✨

Generated automatically by Doxygen for Coin from the source code. πŸ€–


And that's a wrap, bestie! This was Coin version 2.5.0, page SoAction(3). Stay iconic! πŸ’–βœ¨πŸ‘‘

πŸ“¦ where this page comes from