SoNodeEngine(3)
π 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β fillslup 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 isFALSEfor 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 toFALSE.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 intol.virtual int getAllFields (SoFieldList &l) constβ get all the fields intol.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 otherset, with anSoInputin the mix.void get (SbString &fielddata, SoOutput *out)β the otherget, with anSoOutputin 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 intol.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 intobaselist.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 = 1static 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, orNULLif 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. ReturnsFALSEif 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 duringinputChanged(). 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 theSoFieldDataclass which holds information about inputs in this engine. input intel, gathered β¨const SoEngineOutputData ** SoNodeEngine::getOutputDataPtr(void )[static], [protected] β Returns theSoEngineOutputDataclass 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
- fedora 43: Coin4-devel 4.0.10-1.fc43 Β· BSD-3-Clause AND GPL-3.0-or-later
- fedora 43: Coin4-devel 4.0.10-1.fc43 Β· BSD-3-Clause AND GPL-3.0-or-later
- fedora 44: Coin4-devel 4.0.10-1.fc44 Β· BSD-3-Clause AND GPL-3.0-or-later
- fedora 44: Coin4-devel 4.0.10-1.fc44 Β· BSD-3-Clause AND GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms