SoNodeEngine(3)

πŸ“¦
version 4.0.10 Β· 4 versions
, in fedora 43, fedora 44

πŸ’– NAME πŸ’–

okay bestie, welcome to SoNodeEngine(3) β€” the Coin manpage for SoNodeEngine, which is literally the base class for Coin node engines. that's the whole vibe. πŸ¦‹


✨ SYNOPSIS ✨

so to even get in the door, you gotta pull in the header like this:

#include <Inventor/engines/SoNodeEngine.h>

Inherits SoNode. yep, that's the parent.

Inherited by SoVRMLInterpolator, and SoVRMLTimeSensor. those two are the nepo babies carrying the family name. πŸ’…

🌸 Public Member Functions 🌸

  • void evaluateWrapper (void) β€” the wrapper that kicks off evaluation. it's doing the behind-the-scenes work so you don't have to.
  • virtual int getOutputs (SoEngineOutputList &l) const β€” fills l up with all the outputs this engine has. list girlie behavior.
  • SoEngineOutput * getOutput (const SbName &outputname) const β€” hand it a name, it hands you back the matching output. no name match, you get nothing back.
  • SbBool getOutputName (const SoEngineOutput *output, SbName &outputname) const β€” the reverse: give it an output, it fills in the name for you. a real reverse-uno moment.
  • virtual const SoEngineOutputData * getOutputData (void) const =0 β€” pure virtual, so subclasses must implement it. no skipping, bestie.
  • SbBool isNotifying (void) const β€” tells you whether it's currently in the middle of notifying. yes or no, that's it.
  • virtual void notify (SoNotList *nl) β€” the notification handler.
  • virtual void writeInstance (SoOutput *out) β€” handles writing this instance out.

πŸ’œ Public Member Functions inherited from SoNode

  • void setOverride (const SbBool state) β€” flip the override state.
  • SbBool isOverride (void) const β€” are we overriding rn? asking for a friend.
  • void setNodeType (const NodeType type) β€” set the node type.
  • NodeType getNodeType (void) const β€” get the node type back.
  • virtual SoNode * copy (SbBool copyconnections=FALSE) const β€” makes a copy. default is FALSE for copying connections.
  • virtual SbBool affectsState (void) const β€” does this node touch the state? vibes check.
  • virtual void doAction (SoAction *action) β€” dispatch an action.
  • virtual void GLRender (SoGLRenderAction *action) β€” the GL render entry point.
  • virtual void GLRenderBelowPath (SoGLRenderAction *action) β€” GL render, below-path flavor.
  • virtual void GLRenderInPath (SoGLRenderAction *action) β€” GL render, in-path flavor.
  • virtual void GLRenderOffPath (SoGLRenderAction *action) β€” GL render, off-path flavor.
  • virtual void callback (SoCallbackAction *action) β€” callback action handler.
  • virtual void getBoundingBox (SoGetBoundingBoxAction *action) β€” bounding box time.
  • virtual void getMatrix (SoGetMatrixAction *action) β€” matrix time.
  • virtual void handleEvent (SoHandleEventAction *action) β€” event handling, the whole point.
  • virtual void pick (SoPickAction *action) β€” picking.
  • virtual void rayPick (SoRayPickAction *action) β€” ray picking, the cooler cousin.
  • virtual void search (SoSearchAction *action) β€” searching.
  • virtual void write (SoWriteAction *action) β€” writing.
  • virtual void audioRender (SoAudioRenderAction *action) β€” audio rendering.
  • virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action) β€” counts primitives.
  • virtual void grabEventsSetup (void) β€” set up the event grabbing.
  • virtual void grabEventsCleanup (void) β€” clean up after grabbing those events.
  • virtual void startNotify (void) β€” start notifying.
  • SbUniqueId getNodeId (void) const β€” get the node's unique id.
  • virtual SoChildList * getChildren (void) const β€” grab the children.
  • virtual SoNode * addToCopyDict (void) const β€” add yourself to the copy dictionary.
  • virtual void copyContents (const SoFieldContainer *from, SbBool copyconnections) β€” copy the contents over.
  • virtual SoFieldContainer * copyThroughConnection (void) const β€” copy through a connection.

πŸ’™ Public Member Functions inherited from SoFieldContainer

  • void setToDefaults (void) β€” reset everything to defaults.
  • SbBool hasDefaultValues (void) const β€” are all the values still default? yes/no.
  • SbBool fieldsAreEqual (const SoFieldContainer *container) const β€” do our fields match that other container's fields?
  • void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE) β€” copy field values from another container. connections copying defaults to FALSE.
  • SbBool set (const char *const fielddata) β€” set from field data string. returns whether it worked.
  • void get (SbString &fielddata) β€” read the field data out into a string.
  • virtual int getFields (SoFieldList &l) const β€” get the fields into l.
  • virtual int getAllFields (SoFieldList &l) const β€” get all the fields into l.
  • virtual SoField * getField (const SbName &name) const β€” look up a field by name.
  • virtual SoField * getEventIn (const SbName &name) const β€” look up an event in by name.
  • virtual SoField * getEventOut (const SbName &name) const β€” look up an event out by name.
  • SbBool getFieldName (const SoField *const field, SbName &name) const β€” give it a field, get the name.
  • SbBool enableNotify (const SbBool flag) β€” turn notification on or off.
  • SbBool isNotifyEnabled (void) const β€” is notification on rn?
  • SbBool set (const char *fielddata, SoInput *input) β€” the other set, with an SoInput in the mix.
  • void get (SbString &fielddata, SoOutput *out) β€” the other get, with an SoOutput in the mix.
  • virtual SbBool validateNewFieldValue (SoField *field, void *newval) β€” validate a new field value.
  • virtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE) β€” add a write reference.
  • SbBool getIsBuiltIn (void) const β€” is this thing built in?
  • virtual const SoFieldData * getFieldData (void) const β€” grab the field data.
  • virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) const β€” report memory size of fields, split into managed and unmanaged.
  • void setUserData (void *userdata) const β€” stash some user data. bestie, store your secrets.
  • void * getUserData (void) const β€” get that user data back.

🀍 Public Member Functions inherited from SoBase

  • void ref (void) const β€” bump the reference count.
  • void unref (void) const β€” drop the reference count.
  • void unrefNoDelete (void) const β€” drop it but don't delete. spicy.
  • int32_t getRefCount (void) const β€” what's the count rn?
  • void touch (void) β€” touch it, aka poke it so it notices.
  • virtual SoType getTypeId (void) const =0 β€” Returns the type identification of an object derived from a class inheriting SoBase. This is used for runtime type checking and downward"casting. (pure virtual, so you have to bring it, no cap)
  • SbBool isOfType (SoType type) const β€” Returns TRUE if the type of this object is either of the same type or inherited from type.
  • virtual SbName getName (void) const β€” get the name.
  • virtual void setName (const SbName &newname) β€” set the name.
  • void addAuditor (void *const auditor, const SoNotRec::Type type) β€” add an auditor.
  • void removeAuditor (void *const auditor, const SoNotRec::Type type) β€” remove an auditor.
  • const SoAuditorList & getAuditors (void) const β€” get the auditor list.
  • SbBool shouldWrite (void) β€” should this be written out?
  • void assertAlive (void) const β€” assert that it's still alive. πŸ’€

⭐ Static Public Member Functions ⭐

  • static void initClass (void) β€” Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
  • static SoType getClassTypeId (void) β€” grab the class type id.

πŸ’œ Static Public Member Functions inherited from SoNode

  • static uint32_t getCompatibilityTypes (const SoType &nodetype) β€” get the compatibility type bitmask for a node type.
  • static SoType getClassTypeId (void) β€” the class type id.
  • static SoNode * getByName (const SbName &name) β€” find a node by name.
  • static int getByName (const SbName &name, SoNodeList &l) β€” find by name and stuff results into l.
  • static void initClass (void) β€” Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
  • static void initClasses (void) β€” plural version, initializes all the classes.
  • static SbUniqueId getNextNodeId (void) β€” what's the next node id gonna be?
  • static int getActionMethodIndex (const SoType type) β€” the action method index for that type.
  • static void getBoundingBoxS (SoAction *action, SoNode *node) β€” static bounding box dispatch.
  • static void GLRenderS (SoAction *action, SoNode *node) β€” static GL render dispatch.
  • static void callbackS (SoAction *action, SoNode *node) β€” static callback dispatch.
  • static void getMatrixS (SoAction *action, SoNode *node) β€” static matrix dispatch.
  • static void handleEventS (SoAction *action, SoNode *node) β€” static event handling dispatch.
  • static void pickS (SoAction *action, SoNode *node) β€” static pick dispatch.
  • static void rayPickS (SoAction *action, SoNode *node) β€” static ray pick dispatch.
  • static void searchS (SoAction *action, SoNode *node) β€” static search dispatch.
  • static void writeS (SoAction *action, SoNode *node) β€” static write dispatch.
  • static void audioRenderS (SoAction *action, SoNode *node) β€” static audio render dispatch.
  • static void getPrimitiveCountS (SoAction *action, SoNode *node) β€” static primitive count dispatch.

πŸ’™ Static Public Member Functions inherited from SoFieldContainer

  • static void initClass (void) β€” Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
  • static SoType getClassTypeId (void) β€” This static method returns the SoType object associated with objects of this class.
  • static void cleanupClass (void) β€” clean up the class.
  • static void initCopyDict (void) β€” set up the copy dictionary.
  • static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy) β€” register a copy in the dictionary.
  • static SoFieldContainer * checkCopy (const SoFieldContainer *orig) β€” check whether there's a copy for this original.
  • static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections) β€” find the copy, with a say in whether connections are copied.
  • static void copyDone (void) β€” we're done copying, wrap it up.

🀍 Static Public Member Functions inherited from SoBase

  • static void initClass (void) β€” Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
  • static SoType getClassTypeId (void) β€” This static method returns the SoType object associated with objects of this class.
  • static void addName (SoBase *const base, const char *const name) β€” register a name for a base.
  • static void removeName (SoBase *const base, const char *const name) β€” un-register that name.
  • static void incrementCurrentWriteCounter (void) β€” bump the current write counter.
  • static void decrementCurrentWriteCounter (void) β€” drop the current write counter.
  • static SoBase * getNamedBase (const SbName &name, SoType type) β€” get a named base of that type.
  • static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type) β€” get all the named bases of that type into baselist.
  • static SbBool read (SoInput *input, SoBase *&base, SoType expectedtype) β€” read one in.
  • static void setInstancePrefix (const SbString &c) β€” set the instance prefix string.
  • static void setTraceRefs (SbBool trace) β€” turn reference tracing on or off.
  • static SbBool getTraceRefs (void) β€” is reference tracing on?
  • static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname) β€” wire up a route between fields.
  • static SbBool readRoute (SoInput *input) β€” read a route in.

🌷 Protected Member Functions 🌷

  • SoNodeEngine (void) β€” constructor, protected so you don't just new it up casually.
  • virtual ~SoNodeEngine (void) β€” destructor.
  • virtual void evaluate (void)=0 β€” pure virtual. subclasses have to implement this one, no exceptions bestie.
  • virtual SbBool readInstance (SoInput *in, unsigned short flags) β€” read an instance in.
  • virtual void inputChanged (SoField *which) β€” called when an input field changes.
  • void writeOutputTypes (SoOutput *out) β€” write out the output types.

πŸ’œ Protected Member Functions inherited from SoNode

  • SoNode (void) β€” constructor.
  • virtual ~SoNode () β€” destructor.

πŸ’™ Protected Member Functions inherited from SoFieldContainer

  • SoFieldContainer (void) β€” constructor.
  • virtual ~SoFieldContainer () β€” destructor.

🀍 Protected Member Functions inherited from SoBase

  • SoBase (void) β€” constructor.
  • virtual ~SoBase () β€” destructor.
  • SbBool hasMultipleWriteRefs (void) const β€” got more than one write reference?
  • SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const β€” write the header out.
  • void writeFooter (SoOutput *out) const β€” write the footer out.
  • virtual const char * getFileFormatName (void) const β€” the file format name.
  • virtual SoNotRec createNotRec (void) β€” build a notification record.

🫢 Static Protected Member Functions 🫢

  • static const SoFieldData ** getFieldDataPtr (void) β€” pointer to the field data pointer.
  • static const SoEngineOutputData ** getOutputDataPtr (void) β€” pointer to the engine output data pointer.

πŸ’œ Static Protected Member Functions inherited from SoNode

  • static const SoFieldData ** getFieldDataPtr (void) β€” pointer to the field data pointer.
  • static void setNextActionMethodIndex (int index) β€” set the next action method index.
  • static int getNextActionMethodIndex (void) β€” get the next action method index.
  • static void incNextActionMethodIndex (void) β€” increment that index.
  • static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask) β€” set the compatibility type bitmask for a node type.

🀍 Static Protected Member Functions inherited from SoBase

  • static uint32_t getCurrentWriteCounter (void) β€” get the current write counter.
  • static void staticDataLock (void) β€” lock the static data.
  • static void staticDataUnlock (void) β€” unlock it again.

πŸ¦‹ Additional Inherited Members πŸ¦‹

Public Types inherited from SoNode

the NodeType enum, and it is long, so here it is in all its glory:

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,
    COIN_3_0 = 0x8000, INVENTOR_6_0 = 0x10000, COIN_4_0 = 0x20000 }

Protected Types inherited from SoBase

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

Protected Attributes inherited from SoNode

  • SbUniqueId uniqueId β€” the node's unique id.

Protected Attributes inherited from SoFieldContainer

  • SbBool isBuiltIn β€” whether it's built in.

Static Protected Attributes inherited from SoNode

  • static SbUniqueId nextUniqueId = 1
  • static int nextActionMethodIndex = 0

🌈 DETAILED DESCRIPTION 🌈

okay so, for real this time: SoNodeEngine is the base class for Coin node engines. that's the headline, that's the whole thing. πŸŽ€

Node engines have the same functionality as normal engines, except that they inherit SoNode, which makes it possible to insert node engines in the scene graph. the way that they just slide right into the graph like they own the place. πŸ‘‘

The main rationale for this class is to simplify the implementation of VRML interpolator nodes, which are in a sense engines embedded in the shape of ordinary nodes. it's giving engine wearing a node costume. πŸ™ˆ

bestie listen β€” this abstract superclass will likely be of no interest to the Coin application programmer, and you can safely ignore it. not every icon is meant for you. it's fine. it's fine. 😭
⚠️ also be aware that this class is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API. no cap, don't go looking for it there.

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

okay so before we get into the fun stuff, the boring-but-necessary lifecycle vibes πŸ’…

  • SoNodeEngine::SoNodeEngine (void ) [protected] β€” bestie this is the Default constructor. it's protected, so it's giving "not for you, this is family only" energy πŸ™ˆ
  • SoNodeEngine::~SoNodeEngine (void ) [protected], [virtual] β€” and this is the Destructor. it cleans up after itself like a queen leaving a party πŸ’– virtual, protected, iconic.

✨ Member Function Documentation ✨

  • SoType SoNodeEngine::getClassTypeId (void ) [static] β€” the class-type-id getter, no further tea provided in the original, and we do not invent tea 🌸
  • void SoNodeEngine::evaluateWrapper (void ) β€” this one Triggers an engine evaluation. literally the lil "go do your thing" button, no cap πŸ”₯
  • int SoNodeEngine::getOutputs (SoEngineOutputList & l) const [virtual] β€” Adds all outputs to list. and it Returns the number of outputs added to the list, so you know exactly how many lil outputs showed up to the function 🫢
  • SoEngineOutput * SoNodeEngine::getOutput (const SbName & outputname) const β€” Returns the output with name outputname, or NULL if no such output exists. so like, if it's not there, it's not there, NULL, move on πŸ’€
  • SbBool SoNodeEngine::getOutputName (const SoEngineOutput * output, SbName & outputname) const β€” Sets outputname to the name of output. Returns FALSE if no such output is contained within the engine instance. true or false bestie, it's a whole vibe check πŸ‘‘
  • virtual const SoEngineOutputData * SoNodeEngine::getOutputData (void ) const [pure virtual] β€” okay so heads up: This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. basically "don't worry abt it, it's for the library girlies" 🧚

Implemented in SoVRMLColorInterpolator, SoVRMLCoordinateInterpolator, SoVRMLInterpolator, SoVRMLNormalInterpolator, SoVRMLOrientationInterpolator, SoVRMLPositionInterpolator, SoVRMLScalarInterpolator, and SoVRMLTimeSensor. look at that roster, it's giving main character energy 🌟

  • SbBool SoNodeEngine::isNotifying (void ) const β€” Returns whether we're in a notification process. and the reason it exists? This is needed to avoid double notification when an engine enables outputs during inputChanged(). so it's a lil anti-double-notification shield, lowkey essential πŸ›‘οΈ
  • void SoNodeEngine::notify (SoNotList * l) [virtual] β€” Notifies all auditors for this instance when changes are made. it's the "hey everyone, something changed" announcement πŸ“£

Reimplemented from SoNode.

Reimplemented in SoVRMLTimeSensor.

  • void SoNodeEngine::writeInstance (SoOutput * out) [virtual] β€” Writes all the fields contained in this instance to the output stream within out.

This method is solely called from the write methods of fields.

Either from SoField if the write is done because of a field-to-field connection, or from one of the fields which may actually write SoFieldContainer instances, i.e. SoSFNode, SoMFNode, SoSFEngine, SoMFEngine, SoSFPath and SoMFPath.

This method, in addition to the ordinary write() method of SoNode, needs to be present since the fields don't have a write action instance in their writeValue() method, and writeInstance() will create a new SoWriteAction and call continueToApply() on it. ok so it's the special-case write path and it spins up its own action, periodt πŸ’…

Reimplemented from SoNode.

  • virtual void SoNodeEngine::evaluate (void ) [protected], [pure virtual] β€” same disclaimer bestie: This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. internal business only, we don't ask questions πŸ™ˆ
  • SbBool SoNodeEngine::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 / persistent 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. so like, corrupted input? FALSE, no drama, no crashing πŸ’€

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

Reimplemented from SoNode.

  • void SoNodeEngine::inputChanged (SoField * which) [protected], [virtual] β€” Called when an input is changed. The default method does nothing, but subclasses may override this method to do the The Right Thing when a specific field is changed. yes the original literally says "the The Right Thing", we keep it exactly, character for character, that's the rule πŸŽ€

Reimplemented in SoVRMLTimeSensor.

  • const SoFieldData ** SoNodeEngine::getFieldDataPtr (void ) [static], [protected] β€” Returns the SoFieldData class which holds information about inputs in this engine. input intel, gathered ✨
  • const SoEngineOutputData ** SoNodeEngine::getOutputDataPtr (void ) [static], [protected] β€” Returns the SoEngineOutputData class which holds information about the outputs in this engine. now the output side of the story, we love symmetry πŸ¦‹
  • void SoNodeEngine::writeOutputTypes (SoOutput * out) [protected] β€” Writes the types of engine outputs for extension engines (i.e. engines not built in to Coin). so if your engine is a custom lil indie darling and not one of Coin's built-ins, this is the one handling your output types πŸ”₯

πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for Coin from the source code. so technically the author is a robot, and honestly? it ate, no notes πŸ€–πŸ’–


and that's a wrap on SoNodeEngine(3) bestie!! this page came straight from Coin version 4.0.10, dated Thu Jun 25 2026 00:00:00 β€” go forth and engine responsibly, mwah πŸ«ΆπŸŒΈπŸ’…

πŸ“¦ where this page comes from