SoVRMLSwitch(3)

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

πŸŽ€ SoVRMLSwitch β€” Library Functions Manual (3) πŸŽ€

okay bestie, welcome to the manual page for SoVRMLSwitch, and bestie, this one is LONG, so buckle up. We're doing this in parts and this is part one. Let's go πŸ’…


πŸ’– NAME πŸ’–

The SoVRMLSwitch class is a group node for traversing selected children. that's the whole vibe. slay.


✨ SYNOPSIS ✨

#include <Inventor/VRMLnodes/SoVRMLSwitch.h>

Inherits SoGroup. yes bestie, it's a whole group, we love a group.

πŸ‘‘ Public Member Functions

  • virtual SoType getTypeId (void) const
  • SoVRMLSwitch (void)
  • SoVRMLSwitch (int choices)
  • virtual SbBool affectsState (void) const
  • void addChoice (SoNode *choice)
  • void insertChoice (SoNode *choice, int idx)
  • SoNode * getChoice (int idx) const
  • int findChoice (SoNode *choice) const
  • int getNumChoices (void) const
  • void removeChoice (int idx)
  • void removeChoice (SoNode *node)
  • void removeAllChoices (void)
  • void replaceChoice (int idx, SoNode *choice)
  • void replaceChoice (SoNode *old, SoNode *choice)
  • virtual void doAction (SoAction *action)
  • virtual void callback (SoCallbackAction *action)
  • virtual void GLRender (SoGLRenderAction *action)
  • virtual void pick (SoPickAction *action)
  • virtual void getBoundingBox (SoGetBoundingBoxAction *action)
  • virtual void handleEvent (SoHandleEventAction *action)
  • virtual void getMatrix (SoGetMatrixAction *action)
  • virtual void search (SoSearchAction *action)
  • virtual void write (SoWriteAction *action)
  • virtual void audioRender (SoAudioRenderAction *action)
  • void addChild (SoNode *child)
  • void insertChild (SoNode *child, int idx)
  • SoNode * getChild (int idx) const
  • int findChild (const SoNode *child) const
  • int getNumChildren (void) const
  • void removeChild (int idx)
  • void removeChild (SoNode *child)
  • void removeAllChildren (void)
  • void replaceChild (int idx, SoNode *node)
  • void replaceChild (SoNode *old, SoNode *node)
  • virtual SoChildList * getChildren (void) const

🫢 Public Member Functions inherited from SoGroup

  • SoGroup (void)
  • SoGroup (int nchildren)
  • virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)

🫢 Public Member Functions inherited from SoNode

  • void setOverride (const SbBool state)
  • SbBool isOverride (void) const
  • void setNodeType (const NodeType type)
  • NodeType getNodeType (void) const
  • virtual SoNode * copy (SbBool copyconnections=0) const
  • virtual void GLRenderBelowPath (SoGLRenderAction *action)
  • virtual void GLRenderInPath (SoGLRenderAction *action)
  • virtual void GLRenderOffPath (SoGLRenderAction *action)
  • virtual void rayPick (SoRayPickAction *action)
  • virtual void grabEventsSetup (void)
  • virtual void grabEventsCleanup (void)
  • virtual void startNotify (void)
  • uint32_t getNodeId (void) const
  • virtual void writeInstance (SoOutput *out)
  • virtual SoNode * addToCopyDict (void) const
  • virtual SoFieldContainer * copyThroughConnection (void) const

🫢 Public Member Functions inherited from SoFieldContainer

  • void setToDefaults (void)
  • SbBool hasDefaultValues (void) const
  • SbBool fieldsAreEqual (const SoFieldContainer *container) const
  • void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=0)
  • SbBool set (const char *const fielddata)
  • void get (SbString &fielddata)
  • virtual int getFields (SoFieldList &l) const
  • virtual int getAllFields (SoFieldList &l) const
  • virtual SoField * getField (const SbName &name) const
  • virtual SoField * getEventIn (const SbName &name) const
  • virtual SoField * getEventOut (const SbName &name) const
  • SbBool getFieldName (const SoField *const field, SbName &name) const
  • SbBool enableNotify (const SbBool flag)
  • SbBool isNotifyEnabled (void) const
  • SbBool set (const char *fielddata, SoInput *in)
  • void get (SbString &fielddata, SoOutput *out)
  • virtual SbBool validateNewFieldValue (SoField *field, void *newval)
  • virtual void addWriteReference (SoOutput *out, SbBool isfromfield=0)
  • SbBool getIsBuiltIn (void) const
  • void setUserData (void *userdata) const
  • void * getUserData (void) const

🫢 Public Member Functions inherited from SoBase

  • void ref (void) const
  • void unref (void) const
  • void unrefNoDelete (void) const
  • int32_t getRefCount (void) const
  • void touch (void)
  • SbBool isOfType (SoType type) const
  • virtual SbName getName (void) const
  • virtual void setName (const SbName &newname)
  • void addAuditor (void *const auditor, const SoNotRec::Type type)
  • void removeAuditor (void *const auditor, const SoNotRec::Type type)
  • const SoAuditorList & getAuditors (void) const
  • SbBool shouldWrite (void)
  • void assertAlive (void) const

🌟 Static Public Member Functions

  • static SoType getClassTypeId (void)
  • static void initClass (void)

🌟 Static Public Member Functions inherited from SoGroup

  • static SoType getClassTypeId (void)
  • static void initClass (void)

🌟 Static Public Member Functions inherited from SoNode

  • static uint32_t getCompatibilityTypes (const SoType &nodetype)
  • static SoType getClassTypeId (void)
  • static SoNode * getByName (const SbName &name)
  • static int getByName (const SbName &name, SoNodeList &l)
  • static void initClass (void)
  • static void initClasses (void)
  • static uint32_t getNextNodeId (void)
  • static int getActionMethodIndex (const SoType type)
  • static void getBoundingBoxS (SoAction *action, SoNode *node)
  • static void GLRenderS (SoAction *action, SoNode *node)
  • static void callbackS (SoAction *action, SoNode *node)
  • static void getMatrixS (SoAction *action, SoNode *node)
  • static void handleEventS (SoAction *action, SoNode *node)
  • static void pickS (SoAction *action, SoNode *node)
  • static void rayPickS (SoAction *action, SoNode *node)
  • static void searchS (SoAction *action, SoNode *node)
  • static void writeS (SoAction *action, SoNode *node)
  • static void audioRenderS (SoAction *action, SoNode *node)
  • static void getPrimitiveCountS (SoAction *action, SoNode *node)

🌟 Static Public Member Functions inherited from SoFieldContainer

  • static void initClass (void)
  • static SoType getClassTypeId (void)
  • static void initCopyDict (void)
  • static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)
  • static SoFieldContainer * checkCopy (const SoFieldContainer *orig)
  • static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)
  • static void copyDone (void)

🌟 Static Public Member Functions inherited from SoBase

  • static void initClass (void)
  • static SoType getClassTypeId (void)
  • static void addName (SoBase *const base, const char *const name)
  • static void removeName (SoBase *const base, const char *const name)
  • static void incrementCurrentWriteCounter (void)
  • static void decrementCurrentWriteCounter (void)
  • static SoBase * getNamedBase (const SbName &name, SoType type)
  • static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)
  • static SbBool read (SoInput *in, SoBase *&base, SoType expectedtype)
  • static void setInstancePrefix (const SbString &c)
  • static void setTraceRefs (SbBool trace)
  • static SbBool getTraceRefs (void)
  • static SbBool connectRoute (SoInput *in, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)
  • static SbBool readRoute (SoInput *in)

πŸ“ Public Attributes

  • SoMFNode choice
  • SoSFInt32 whichChoice

πŸ”’ Protected Member Functions

  • virtual const SoFieldData * getFieldData (void) const
  • virtual ~SoVRMLSwitch (void)
  • virtual void notify (SoNotList *list)
  • virtual SbBool readInstance (SoInput *in, unsigned short flags)
  • virtual void copyContents (const SoFieldContainer *from, SbBool copyConn)

πŸ”’ Protected Member Functions inherited from SoGroup

  • virtual ~SoGroup ()
  • virtual SbBool readChildren (SoInput *in)

πŸ”’ Protected Member Functions inherited from SoNode

  • SoNode (void)
  • virtual ~SoNode ()

πŸ”’ Protected Member Functions inherited from SoFieldContainer

  • SoFieldContainer (void)
  • ~SoFieldContainer ()

πŸ”’ Protected Member Functions inherited from SoBase

  • SoBase (void)
  • virtual ~SoBase ()
  • virtual void destroy (void)
  • SbBool hasMultipleWriteRefs (void) const
  • SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const
  • void writeFooter (SoOutput *out) const
  • virtual const char * getFileFormatName (void) const

πŸ’œ Static Protected Member Functions

  • static const SoFieldData ** getFieldDataPtr (void)

πŸ’œ Static Protected Member Functions inherited from SoGroup

  • static const SoFieldData ** getFieldDataPtr (void)

πŸ’œ Static Protected Member Functions inherited from SoNode

  • static const SoFieldData ** getFieldDataPtr (void)
  • static void setNextActionMethodIndex (int index)
  • static int getNextActionMethodIndex (void)
  • static void incNextActionMethodIndex (void)
  • static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)

πŸ’œ Static Protected Member Functions inherited from SoBase

  • static uint32_t getCurrentWriteCounter (void)
  • static void staticDataLock (void)
  • static void staticDataUnlock (void)

πŸ¦‹ Friends

  • class SoVRMLSwitchP

🌈 Additional Inherited Members

🧚 Public Types inherited from SoNode

bestie look at this whole enum, it's giving hexadecimal royalty:

enum NodeType { INVENTOR = 0x0000, VRML1 = 0x0001, VRML2 = 0x0002,
    INVENTOR_1 = 0x0004, INVENTOR_2_0 = 0x0008, INVENTOR_2_1 = 0x0010,
    INVENTOR_2_5 = 0x0020, INVENTOR_2_6 = 0x0040, COIN_1_0 = 0x0080,
    COIN_2_0 = 0x0100, EXTENSION = 0x0200, COIN_2_2 = 0x0400, COIN_2_3 =
    0x0800, COIN_2_4 = 0x1000, INVENTOR_5_0 = 0x2000, COIN_2_5 = 0x4000
}

🧚 Protected Types inherited from SoBase

enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }

🧚 Protected Attributes inherited from SoGroup

  • SoChildList * children

🧚 Protected Attributes inherited from SoNode

  • uint32_t uniqueId

🧚 Protected Attributes inherited from SoFieldContainer

  • SbBool isBuiltIn

🧚 Static Protected Attributes inherited from SoNode

  • static uint32_t nextUniqueId = 0
  • static int nextActionMethodIndex = 0

and that's where part one leaves us, bestie β€” we are NOT done yet, the lore continues πŸ’–

✨ Detailed Description ✨

The SoVRMLSwitch class is a group node for traversing selected children. That's the whole vibe: it's a group, but it's a picky group β€” it only walks into one of its kids (or literally none, bestie, zero is a valid mood πŸ’…).

The detailed class documentation is taken verbatim from the VRML97 standard (ISO/IEC 14772-1:1997). It is copyright The Web3D Consortium, and is used by permission of the Consortium:

Switch {
  exposedField    MFNode  choice      []
  exposedField    SFInt32 whichChoice -1    # [-1, inf)
}

Okay so the tea β˜•: the Switch grouping node traverses zero or one of the nodes specified in the choice field. If you want the deep lore on which node types are legal values for choice, go read 4.6.5, Grouping and children nodes (http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-VRML97/part1/concepts.html#4.6.5) β€” it's giving required reading, ngl.

The whichChoice field specifies the index of the child to traverse, with the first child having index 0 (yes queen, zero-indexed, as the universe intended). If whichChoice is less than zero or greater than the number of nodes in the choice field, nothing is chosen β€” the switch just sits there, gorgeous and empty. πŸ«₯

And here's the plot twist that lowkey trips people up: all nodes under a Switch continue to receive and send events regardless of the value of whichChoice. For example, if an active SoVRMLTimeSensor is contained within an inactive choice of an Switch, the SoVRMLTimeSensor sends events regardless of the Switch's state. So like, being "off" doesn't mean "asleep", bestie β€” it's still clacking away in the group chat. 😭


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

SoVRMLSwitch::SoVRMLSwitch (void )

Constructor. That's it, that's the whole thing. ✨

Referenced by getFieldData().

SoVRMLSwitch::SoVRMLSwitch (int choices)

Constructor. choices is the expected number of children. (A little heads-up about how many besties are coming to the party so nobody has to rearrange the furniture mid-slumber party. πŸŽ€)

References SoGroup::SoGroup().

SoVRMLSwitch::~SoVRMLSwitch (void ) [protected], [virtual]

Destructor. She's leaving the group chat, say your goodbyes. πŸ‘‹


πŸ’– Member Function Documentation πŸ’–

SoType SoVRMLSwitch::getTypeId (void ) const [virtual]

Returns the type identification of an object derived from a class inheriting SoBase. This is used for run-time type checking and "downward" casting. Basically: "who are you really, under all that inheritance." 🌈

Usage example:

void foo(SoNode * node)
{
  if (node->getTypeId() == SoFile::getClassTypeId()) {
    SoFile * filenode = (SoFile *)node;  // safe downward cast, knows the type
  }
  else if (node->getTypeId().isOfType(SoGroup::getClassTypeId())) {
    SoGroup * group = (SoGroup *)node;  // safe downward cast, knows the type
  }
}

For application programmers wanting to extend the library with new nodes, engines, nodekits, draggers or others: 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 for instance Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on. It's giving ✨init ritual✨ and honestly it kind of is one.

For more information on writing Coin extensions, see the class documentation of the toplevel superclasses for the various class groups.

Reimplemented from SoGroup.

const SoFieldData * SoVRMLSwitch::getFieldData (void ) const [protected], [virtual]

Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL. (Not this class though β€” this one's got fields, she's booked and busy. πŸ’…)

Reimplemented from SoGroup.

References SoVRMLSwitch().

SbBool SoVRMLSwitch::affectsState (void ) const [virtual]

Returns TRUE if the node could have any effect on the state during traversal. πŸ‘‘

If it returns FALSE, no data in the traversal-state will change from the pre-traversal state to the post-traversal state. The SoSeparator node will for instance return FALSE, as it pushes and pops the state before and after traversal of its children. All SoShape nodes will also return FALSE, as just pushing out geometry data to the rendering engine won't affect the actual rendering state.

The default method returns TRUE, on a "better safe than sorry" philosophy. Which is honestly such a Virgo move and we respect it.

Reimplemented from SoNode.

References affectsState(), getChild(), getNumChildren(), and whichChoice.

Referenced by affectsState().

void SoVRMLSwitch::addChoice (SoNode * choiceptr)

Adds choice to the choice field. New bestie acquired. 🫢

References addChild(), and SoNode::SoNode().

void SoVRMLSwitch::insertChoice (SoNode * choiceptr, int idx)

Inserts choice at index idx. Cutting the line, but make it fashion. πŸ’…

References insertChild(), and SoNode::SoNode().

SoNode * SoVRMLSwitch::getChoice (int idx) const

Returns the choice at index idx. Who's at that seat? πŸ‘€

References getChild().

int SoVRMLSwitch::findChoice (SoNode * choiceptr) const

Finds the index for choice, or -1 if not found. If she's not on the list, you get a -1, no cap. 😭

References findChild(), and SoNode::SoNode().

int SoVRMLSwitch::getNumChoices (void ) const

Returns the number of choices. Just the headcount, bestie. πŸ”’

References getNumChildren().

void SoVRMLSwitch::removeChoice (int idx)

Removes the choice at index idx. Blocked. 🚫

References removeChild().

void SoVRMLSwitch::removeChoice (SoNode * choiceptr)

If choice is found, remove it. If not found... nothing happens, and honestly same. πŸ™ˆ

References removeChild(), and SoNode::SoNode().

void SoVRMLSwitch::removeAllChoices (void )

Removes all choices. Total group chat wipe. Clean slate era. ✨

References removeAllChildren().

void SoVRMLSwitch::replaceChoice (int idx, SoNode * choiceptr)

Replace the choice at index idx with choice. Glow-up, but for one specific seat. πŸ’–

References replaceChild(), and SoNode::SoNode().

void SoVRMLSwitch::replaceChoice (SoNode * old, SoNode * choiceptr)

Find old, and replace it with choice. We love a good recast. 🎭

References replaceChild(), and SoNode::SoNode().

void SoVRMLSwitch::doAction (SoAction * action) [virtual]

This function performs the typical operation of a node for any action. The main character of action methods, fr fr. πŸ‘‘

Reimplemented from SoGroup.

References SoGetBoundingBoxAction::getCenter(), getChildren(), getNumChildren(), SoAction::getPathCode(), SoAction::getState(), SoGetBoundingBoxAction::isCenterSet(), SoAction::isOfType(), SoDebugError::post(), SoGetBoundingBoxAction::resetCenter(), SoGetBoundingBoxAction::setCenter(), SoChildList::traverse(), SoChildList::traverseInPath(), and whichChoice.

Referenced by audioRender(), callback(), getBoundingBox(), getMatrix(), GLRender(), handleEvent(), pick(), and search().

void SoVRMLSwitch::callback (SoCallbackAction * action) [virtual]

Action method for SoCallbackAction.

Simply updates the state according to how the node behaves for the render action, so the application programmer can use the SoCallbackAction for extracting information about the scene graph. It's the "just tell me what's going on in there" action. πŸ”

Reimplemented from SoGroup.

References doAction().

void SoVRMLSwitch::GLRender (SoGLRenderAction * action) [virtual]

Action method for the SoGLRenderAction.

This is called during rendering traversals. Nodes influencing the rendering state in any way or who wants to throw geometry primitives at OpenGL overrides this method. Yes, "throw geometry primitives at OpenGL" is the official phrasing and honestly it eats. πŸ”₯

Reimplemented from SoGroup.

References doAction().

void SoVRMLSwitch::pick (SoPickAction * action) [virtual]

Action method for SoPickAction.

Does common processing for SoPickAction action instances. It's the "is the mouse touching this" department. πŸ–±οΈ

Reimplemented from SoGroup.

References doAction().

void SoVRMLSwitch::getBoundingBox (SoGetBoundingBoxAction * action) [virtual]

Action method for the SoGetBoundingBoxAction.

Calculates bounding box and center coordinates for node and modifies the values of the action to encompass the bounding box for this node and to shift the center point for the scene more towards the one for this node. It's giving "where does this thing even live". πŸ“¦

Nodes influencing how geometry nodes calculates their bounding box also overrides this method to change the relevant state variables.

Reimplemented from SoGroup.

References doAction().

void SoVRMLSwitch::handleEvent (SoHandleEventAction * action) [virtual]

Action method for SoHandleEventAction.

Inspects the event data from action, and processes it if it is something which this node should react to. If it's not for her, she simply does not respond β€” queen of boundaries. πŸ’…

Nodes influencing relevant state variables for how event handling is done also overrides this method.

Reimplemented from SoGroup.

References doAction().

void SoVRMLSwitch::getMatrix (SoGetMatrixAction * action) [virtual]

Action method for SoGetMatrixAction.

Updates action by accumulating with the transformation matrix of this node (if any). Math but make it slay. πŸ“βœ¨

Reimplemented from SoGroup.

References doAction(), and SoAction::getCurPathCode().

void SoVRMLSwitch::search (SoSearchAction * action) [virtual]

Action method for SoSearchAction.

Compares the search criteria from the action to see if this node is a match. Searching is done by matching up all criteria set up in the SoSearchAction β€” if any of the requested criteria is a miss, the search is not deemed successful for the node. It's giving strict search filter, no partial credit. πŸ”Ž

See also SoSearchAction

Reimplemented from SoGroup.

References doAction(), getChildren(), SoSearchAction::isFound(), SoSearchAction::isSearchingAll(), SoNode::search(), and SoChildList::traverse().

void SoVRMLSwitch::write (SoWriteAction * action) [virtual]

Action method for SoWriteAction.

Writes out a node object, and any connected nodes, engines etc, if necessary. Saving the whole friend group to disk, bestie. πŸ’ΎπŸ’–

Reimplemented from SoGroup.

References SoNode::write().

void SoVRMLSwitch::audioRender (SoAudioRenderAction * action) [virtual]

Action method for SoAudioRenderAction.

Does common processing for SoAudioRenderAction action instances. Yes she does sound too. Multitalented. 🎧

Reimplemented from SoGroup.

References doAction().

void SoVRMLSwitch::addChild (SoNode * node) [virtual]

Append a child node to the list of children nodes this group node is managing.

Please note that this method is not virtual in the original SGI Inventor API. (Coin said "actually we're making it virtual", iconic behaviour, but the history is the history.)

Reimplemented from SoGroup.

References choice, and SoNode::SoNode().

Referenced by addChoice().

void SoVRMLSwitch::insertChild (SoNode * child, int newchildindex) [virtual]

Insert a child node at position newchildindex.

Please note that this method is not virtual in the original SGI Inventor API.

Reimplemented from SoGroup.

References choice, and SoNode::SoNode().

Referenced by insertChoice().

SoNode * SoVRMLSwitch::getChild (int index) const [virtual]

Returns pointer to child node at index.

Please note that this method is not virtual in the original SGI Inventor API.

Reimplemented from SoGroup.

References choice.

Referenced by affectsState(), and getChoice().

int SoVRMLSwitch::findChild (const SoNode * node) const [virtual]

Returns index in our list of children for child node, or -1 if node is not a child of this group node. Again with the -1, it's a whole motif. 😭

Please note that this method is not virtual in the original SGI Inventor API.

Reimplemented from SoGroup.

References choice, and SoNode::SoNode().

Referenced by findChoice(), and notify().

int SoVRMLSwitch::getNumChildren (void ) const [virtual]

Returns number of child nodes managed by this group.

Please note that this method is not virtual in the original SGI Inventor API.

Reimplemented from SoGroup.

References choice.

Referenced by affectsState(), doAction(), and getNumChoices().

void SoVRMLSwitch::removeChild (int childindex) [virtual]

Remove node at childindex in our list of children.

Please note that this method is not virtual in the original SGI Inventor API.

Reimplemented from SoGroup.

References choice.


and yes bestie, there's more β€” keep scrolling, the plot is not over πŸ’œ

Referenced by removeChoice(), and removeChoice(). πŸ’… yes bestie, it really says it twice β€” iconic.


void SoVRMLSwitch::removeChild (SoNode * child) [virtual] πŸŽ€

Remove child from the set of children managed by this group node. Will decrease the reference count of child by 1.

This is a convenience method. It will simply call findChild() with child as argument, and then call removeChild(int) if the child is found.

Please note that this method is not virtual in the original SGI Inventor API.

Reimplemented from: SoGroup.

References: choice, and SoNode::SoNode().


void SoVRMLSwitch::removeAllChildren (void ) [virtual] πŸ¦‹

Do not manage the children anymore. Will dereference all children by 1 as they are removed.

Please note that this method is not virtual in the original SGI Inventor API.

Reimplemented from: SoGroup.

References: SoGroup::children, and choice.

Referenced by: removeAllChoices().


void SoVRMLSwitch::replaceChild (int index, SoNode * newchild) [virtual] ✨

Replace child at index with newChild.

Dereferences the child previously at index, and increases the reference count of newChild by 1.

Please note that this method is not virtual in the original SGI Inventor API.

Reimplemented from: SoGroup.

References: choice, and SoNode::SoNode().

Referenced by: replaceChoice(), and replaceChoice().


void SoVRMLSwitch::replaceChild (SoNode * oldchild, SoNode * newchild) [virtual] πŸ’…

Replace oldchild with newchild.

Dereferences oldchild by 1, and increases the reference count of newchild by 1.

This is a convenience method. It will simply call findChild() with oldchild as argument, and call replaceChild(int, SoNode*) if the child is found.

Please note that this method is not virtual in the original SGI Inventor API.

Reimplemented from: SoGroup.

References: choice, and SoNode::SoNode().


SoChildList * SoVRMLSwitch::getChildren (void ) const [virtual] 🌈

Returns list of children.

Reimplemented from: SoGroup.

References: SoGroup::children, choice, and SoVRMLParent::updateChildList().

Referenced by: doAction(), and search().


void SoVRMLSwitch::notify (SoNotList * l) [protected], [virtual] πŸ”₯

Notifies all auditors for this instance when changes are made.

Reimplemented from: SoNode.

References: choice, findChild(), SoNotRec::getBase(), SoNotList::getLastField(), SoNotList::getLastRec(), SoNotRec::getPrevious(), SoFieldContainer::notify(), SoNode::SoNode(), and whichChoice.


SbBool SoVRMLSwitch::readInstance (SoInput * in, unsigned short flags) [protected], [virtual] πŸ‘‘

This method is mainly intended for internal use during file import operations.

It reads a definition of an instance from the input stream in. The input stream state points to the start of a serialized / persistant representation of an instance of this class type.

TRUE or FALSE is returned, depending on if the instantiation and configuration of the new object of this class type went ok or not. The import process should be robust and handle corrupted input streams by returning FALSE.

flags is used internally during binary import when reading user extension nodes, group nodes or engines.

Reimplemented from: SoGroup.

References: SoGroup::children, choice, and SoGroup::readInstance().


void SoVRMLSwitch::copyContents (const SoFieldContainer * from, SbBool copyconnections) [protected], [virtual] 🧚

Makes a deep copy of all data of from into this instance, except external scenegraph references if copyconnections is FALSE.

This is the protected method that should be overridden by extension node / engine / dragger / whatever subclasses which needs to account for internal data that are not handled automatically.

For copying nodes from application code, you should not invoke this function directly, but rather call the SoNode::copy() function:

SoNode * mynewnode = templatenode->copy();

The same also goes for engines.

Make sure that when you override the copyContents() method in your extension class that you also make it call upwards to it's parent superclass in the inheritance hierarchy, as copyContents() in for instance SoNode and SoFieldContainer does important work. It should go something like this:

void
MyCoinExtensionNode::copyContents(const SoFieldContainer * from,
                                  SbBool copyconnections)
{
  // let parent superclasses do their thing (copy fields, copy
  // instance name, etc etc)
  SoNode::copyContents(from, copyconnections);

  // [..then copy internal data..]
}

Reimplemented from: SoGroup.

References: SoGroup::children, SoNode::copyContents(), and SoFieldContainer::SoFieldContainer().


✨ Member Data Documentation ✨

SoMFNode SoVRMLSwitch::choice πŸ’–

Contains the children.

Referenced by: addChild(), findChild(), getChild(), getChildren(), getNumChildren(), insertChild(), notify(), readInstance(), removeAllChildren(), removeChild(), removeChild(), replaceChild(), and replaceChild().


SoSFInt32 SoVRMLSwitch::whichChoice πŸ‘‘

Selected choice. Can be a positive number from 0 to <num children-1>, or one of the constants SO_SWITCH_NODE, SO_SWITCH_ALL or SO_SWITCH_INHERIT. Default value is SO_SWITCH_NONE.

Referenced by: affectsState(), doAction(), and notify().


✨ Author ✨

Generated automatically by Doxygen for Coin from the source code.


And that's the footer, bestie πŸ’– β€” no date listed, just Coin, Version 2.5.0, SoVRMLSwitch(3). Periodt. πŸ’…

πŸ“¦ where this page comes from