SoSceneKit(3)

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

πŸ’– SoSceneKit(3) πŸ’–

Library Functions Manual Β· SoSceneKit(3)


✨ NAME ✨

SoSceneKit β€” okay so this is the class that collects all the node kits you need to set up a whole entire scene: camera, light, and shapes. it's giving "one stop shop" and honestly? iconic. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <Inventor/nodekits/SoSceneKit.h>

Inherits SoBaseKit. bestie's got a whole family tree, we'll get to that πŸ’…

🌸 Public Member Functions 🌸

these are the ones that are, like, actually SoSceneKit's own:

virtual SoType getTypeId (void) const
virtual const SoNodekitCatalog * getNodekitCatalog (void) const
SoSceneKit (void)
int getCameraNumber (void)
void setCameraNumber (int camNum)
virtual SbBool affectsState (void) const

πŸ’œ Public Member Functions inherited from SoBaseKit πŸ’œ

everything SoSceneKit got handed down from its parent, no gatekeeping:

SoBaseKit (void)
virtual SoNode * getPart (const SbName &partname, SbBool makeifneeded)
SbString getPartString (const SoBase *part)
virtual SoNodeKitPath * createPathToPart (const SbName &partname, SbBool makeifneeded, const SoPath *pathtoextend=NULL)
virtual SbBool setPart (const SbName &partname, SoNode *from)
SbBool set (const char *namevaluepairliststring)
SbBool set (const char *partnamestring, const char *parameterstring)
virtual void doAction (SoAction *action)
virtual void callback (SoCallbackAction *action)
virtual void GLRender (SoGLRenderAction *action)
virtual void getBoundingBox (SoGetBoundingBoxAction *action)
virtual void getMatrix (SoGetMatrixAction *action)
virtual void handleEvent (SoHandleEventAction *action)
virtual void rayPick (SoRayPickAction *action)
virtual void search (SoSearchAction *action)
virtual void write (SoWriteAction *action)
virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)
virtual SoChildList * getChildren (void) const
void printDiagram (void)
void printSubDiagram (const SbName &rootname, int level)
void printTable (void)
virtual void addWriteReference (SoOutput *out, SbBool isfromfield=0)
SbBool forceChildDrivenWriteRefs (SoOutput *out)

πŸŽ€ Public Member Functions inherited from SoNode πŸŽ€

the whole SoNode roster, fr fr:

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 pick (SoPickAction *action)
virtual void audioRender (SoAudioRenderAction *action)
virtual void grabEventsSetup (void)
virtual void grabEventsCleanup (void)
virtual void startNotify (void)
virtual void notify (SoNotList *l)
uint32_t getNodeId (void) const
virtual void writeInstance (SoOutput *out)
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)
SbBool getIsBuiltIn (void) const
void setUserData (void *userdata) const
void * getUserData (void) const

✨ Public Member Functions inherited from SoBase ✨

the great-great-grandparent energy:

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 πŸ’…

the ones you can call without even having an instance, main character energy:

static SoType getClassTypeId (void)
static const SoNodekitCatalog * getClassNodekitCatalog (void)
static void initClass (void)

πŸ“ Static Public Member Functions inherited from SoBaseKit πŸ“

static SoType getClassTypeId (void)
static void initClass (void)
static const SoNodekitCatalog * getClassNodekitCatalog (void)
static SbBool isSearchingChildren (void)
static void setSearchingChildren (const SbBool newval)
static SoNode * typeCheck (const SbName &partname, const SoType &parttype, SoNode *node)

🧚 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)

πŸ”₯ Protected Member Functions πŸ”₯

the "for subclasses only, bestie, not for you personally" section:

virtual const SoFieldData * getFieldData (void) const
virtual ~SoSceneKit ()

🫢 Protected Member Functions inherited from SoBaseKit 🫢

virtual ~SoBaseKit ()
virtual SoNode * addToCopyDict (void) const
virtual void copyContents (const SoFieldContainer *fromfc, SbBool copyconnections)
SoGroup * getContainerNode (const SbName &listname, SbBool makeifneeded=1)
virtual SoNode * getAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0)
virtual SoNodeKitPath * createPathToAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0, const SoPath *pathtoextend=NULL)
virtual SbBool setAnyPart (const SbName &partname, SoNode *from, SbBool anypart=1)
void createNodekitPartsList (void)
void createFieldList (void)
virtual void createDefaultParts (void)
const SoNodekitParts * getNodekitPartsList (void) const
const SbList< SoSFNode * > & getCatalogInstances (void) const
void catalogError (void)
virtual SbBool setUpConnections (SbBool onoff, SbBool doitalways=0)
virtual SbBool readInstance (SoInput *in, unsigned short flags)
virtual void setDefaultOnNonWritingFields (void)
void countMyFields (SoOutput *out)
virtual SbBool setPart (const int partNum, SoNode *node)

⭐ 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 const SoNodekitCatalog ** getClassNodekitCatalogPtr (void)

πŸ¦‹ Static Protected Member Functions inherited from SoBaseKit πŸ¦‹

static const SoFieldData ** getFieldDataPtr (void)
static const SoNodekitCatalog ** getClassNodekitCatalogPtr (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)

🌸 Protected Attributes 🌸

the lil fields living inside every SoSceneKit, lowkey important:

SoSFNode cameraList
SoSFNode childList
SoSFNode lightList
SoSFNode topSeparator

🧚 Protected Attributes inherited from SoBaseKit 🧚

SoSFNode callbackList
SoChildList * children
SbBool connectionsSetUp

✨ Protected Attributes inherited from SoNode ✨

uint32_t uniqueId

πŸ’œ Protected Attributes inherited from SoFieldContainer πŸ’œ

SbBool isBuiltIn

πŸ‘‘ Additional Inherited Members πŸ‘‘

πŸŽ€ Public Types inherited from SoNode πŸŽ€

the big enum of vibes (a.k.a. node types), copy it exactly bestie:

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
    }

to be continued… part 2 incoming, don't go anywhere πŸ’–

🌸 Protected Types inherited from SoBase

Bestie, these flags are handed down from SoBase and you get them for free:

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

✨ Static Protected Attributes inherited from SoNode

Inherited static vibes from SoNode, both lowkey doing their own thing:

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

πŸŽ€ DETAILED DESCRIPTION πŸŽ€

Okay so the whole point of the SoSceneKit class? It collects the node kits you need to set up a scene: camera, light and shapes. That's it, that's the job. πŸ’…

Node kit structure β€” and the new entries versus the parent class are marked with an arrow prefix, so watch for the -->:

CLASS SoSceneKit
-->"this"
      "callbackList"
-->   "topSeparator"
-->      "cameraList"
-->      "lightList"
-->      "childList"
(See SoBaseKit::printDiagram() for information about the output formatting.) ✨

Detailed information on catalog parts, since we're being thorough (and we ARE being thorough):

CLASS SoSceneKit
PVT   "this",  SoSceneKit  ---
      "callbackList",  SoNodeKitListPart [ SoCallback, SoEventCallback ]
PVT   "topSeparator",  SoSeparator  ---
      "cameraList",  SoNodeKitListPart [ SoCameraKit ]
      "lightList",  SoNodeKitListPart [ SoLightKit ]
      "childList",  SoNodeKitListPart [ SoShapeKit, SoSeparatorKit ]
(See SoBaseKit::printTable() for information about the output formatting.) 🫢

🌈 CONSTRUCTOR & DESTRUCTOR DOCUMENTATION 🌈

πŸ¦‹ SoSceneKit::SoSceneKit (void )

Constructor. Yep, that's the whole sentence, she's a woman of few words. 😌

References SoSceneKit().

Referenced by getFieldData(), and SoSceneKit().

πŸ¦‹ SoSceneKit::~SoSceneKit () [protected], [virtual]

Destructor. Protected and virtual, so she's doing her own thing on the way out. πŸ’€


πŸ‘‘ MEMBER FUNCTION DOCUMENTATION πŸ‘‘

⭐ SoType SoSceneKit::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. Fr fr it's the "who even are you" check for nodes. πŸ•΅οΈβ€β™€οΈ

Usage example, and bestie this one is verbatim so don't touch it:

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. Basically the macros do the heavy lifting, you just show up. πŸ’–

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

Reimplemented from SoBaseKit.

⭐ const SoFieldData * SoSceneKit::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. So like, if there's nothing there, you get NULL, no cap. πŸ™ˆ

Reimplemented from SoBaseKit.

References SoSceneKit().

⭐ const SoNodekitCatalog * SoSceneKit::getNodekitCatalog (void ) const [virtual]

Returns the nodekit catalog which defines the layout of this class' kit. It's the blueprint of the whole fit, iconic honestly. πŸŽ€

Reimplemented from SoBaseKit.

⭐ int SoSceneKit::getCameraNumber (void )

Returns the index of the current active camera in cameraList. Which one is the main character right now? ✨

References SoBaseKit::getContainerNode(), and SoSwitch::whichChild.

⭐ void SoSceneKit::setCameraNumber (int camnum)

Sets the current active camera in cameraList. Plot twist, you get to choose. 🎬

References SoBaseKit::getContainerNode(), SoGroup::getNumChildren(), SoDebugError::postInfo(), and SoSwitch::whichChild.

⭐ SbBool SoSceneKit::affectsState (void ) const [virtual]

Returns TRUE if the node could have any effect on the state during traversal. Vibe check for the traversal state, essentially. πŸ”₯

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, honestly? Valid. 😭

Reimplemented from SoNode.


πŸ’œ AUTHOR πŸ’œ

Generated automatically by Doxygen for Coin from the source code. Not a human, just a robot doing its little thing, and honestly? Ate. πŸ€–βœ¨


okay that's the whole page bestie, ily, go build a scene πŸ’–

And before you go β€” the footer said Coin, Version 2.5.0, with the page being SoSceneKit(3). That's the source, the version and the page, all wrapped up in one little sign-off. Slay, periodt. πŸ‘‘πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from