SONODEKITCATALOG(3iv)

πŸ’– SoNodekitCatalog πŸ’–

okay so bestie, you found the manual page for SoNodekitCatalog, from the 3IV manual. This is the nodekit catalog class and she is iconic, let me tell you everything ✨


🌸 NAME 🌸

SoNodekitCatalog β€” nodekit catalog class πŸŽ€


πŸ¦‹ INHERITS FROM πŸ¦‹

SoNodekitCatalog

(yes bestie, she inherits from herself, it's giving main character energy, that's just what the page says πŸ’…)


✨ SYNOPSIS ✨

#include <Inventor/nodekits/SoNodekitCatalog.h>

#define SO_CATALOG_NAME_NOT_FOUND -1
#define SO_CATALOG_THIS_PART_NUM   0

Methods from class SoNodekitCatalog:

static void         initClass()
int                 getNumEntries() const
int                 getPartNumber(const SbName &theName) const
const SbName &      getName(int thePartNumber) const
SoType              getType(int thePartNumber) const
SoType              getType(const SbName &theName) const
SoType              getDefaultType(int thePartNumber) const
SoType              getDefaultType(const SbName &theName) const
SbBool              isNullByDefault(int thePartNumber) const
SbBool              isNullByDefault(const SbName &theName) const
SbBool              isLeaf(int thePartNumber) const
SbBool              isLeaf(const SbName &theName) const
const SbName &      getParentName(int thePartNumber) const
const SbName &      getParentName(const SbName &theName) const
int                 getParentPartNumber(int thePartNumber) const
int                 getParentPartNumber(const SbName &theName) const
const SbName &      getRightSiblingName(int thePartNumber) const
const SbName &      getRightSiblingName(const SbName &theName) const
int                 getRightSiblingPartNumber(int thePartNumber) const
int                 getRightSiblingPartNumber(const SbName &theName) const
SbBool              isList(int thePartNumber) const
SbBool              isList(const SbName &theName) const
SoType              getListContainerType(int thePartNumber) const
SoType              getListContainerType(const SbName &theName) const
const SoTypeList &  getListItemTypes(int thePartNumber) const
const SoTypeList &  getListItemTypes(const SbName &theName) const
SbBool              isPublic(int thePartNumber) const
SbBool              isPublic(const SbName &theName) const

πŸŽ€ DESCRIPTION πŸŽ€

okay so this class describes the parts and structure of a nodekit. Every single class of nodekit has one SoNodekitCatalog β€” and it's a static variable for the class, periodt. πŸ’…

Internally, the catalog contains one entry for each "part" in the nodekit's structure. Users can query the catalog for info about each entry in the catalog. And you can get that info either by part name (an SbName unique for the part within the catalog) or by part number (an index into an array of parts). Both routes, bestie, pick your vibe 🌈

⚠️ note this, it matters: even though the catalog for a nodekit class may contain many entries, each instance of that class is not initially created with all of these parts intact. Nope. πŸ™ˆ Rather, each instance of the class has its own parts list which keeps track of which parts the user has created. The nodekit uses the catalog as a guide in creating new nodes as its descendants.

And the standard addChild(), removeChild() and other SoGroup methods are protected, so users must create descendants indirectly by asking the nodekit to get and/or set the different "parts" in the catalog. No shortcuts, babe 🫢

The first entry in any SoNodekitCatalog corresponds to the nodekit itself. Its partName is "this" and its partNumber is 0. All other parts in the catalog are described relative to "this." iconic ⭐


πŸ’… METHODS πŸ’…

  • static void initClass() β€” Initializes this object. ✨
  • int getNumEntries() const β€” Returns number of entries in the catalog. Count 'em up bestie πŸ”’
  • int getPartNumber(const SbName &theName) const β€” Given the name of a part, returns its part number in the catalog. Name β†’ number, slay πŸŽ€
  • const SbName & getName(int thePartNumber) const β€” Given the part number of a part, returns its name in the catalog. Number β†’ name, the other direction, obsessed πŸ’–

Then there's the big squad, a full set of methods for finding out all parameters in the catalog, given either the part name or the part number β€” every single one of them, no skips:

SoType              getType(int thePartNumber) const
SoType              getType(const SbName &theName) const
SoType              getDefaultType(int thePartNumber) const
SoType              getDefaultType(const SbName &theName) const
SbBool              isNullByDefault(int thePartNumber) const
SbBool              isNullByDefault(const SbName &theName) const
SbBool              isLeaf(int thePartNumber) const
SbBool              isLeaf(const SbName &theName) const
const SbName &      getParentName(int thePartNumber) const
const SbName &      getParentName(const SbName &theName) const
int                 getParentPartNumber(int thePartNumber) const
int                 getParentPartNumber(const SbName &theName) const
const SbName &      getRightSiblingName(int thePartNumber) const
const SbName &      getRightSiblingName(const SbName &theName) const
int                 getRightSiblingPartNumber(int thePartNumber) const
int                 getRightSiblingPartNumber(const SbName &theName) const
SbBool              isList(int thePartNumber) const
SbBool              isList(const SbName &theName) const
SoType              getListContainerType(int thePartNumber) const
SoType              getListContainerType(const SbName &theName) const
const SoTypeList &  getListItemTypes(int thePartNumber) const
const SoTypeList &  getListItemTypes(const SbName &theName) const
SbBool              isPublic(int thePartNumber) const
SbBool              isPublic(const SbName &theName) const
πŸ’‘ every single one of these takes either an int thePartNumber or a const SbName &theName. Two flavors, same tea. iykyk πŸ“

🌈 SEE ALSO 🌈

SoAppearanceKit, SoBaseKit, SoCameraKit, SoLightKit, SoNodeKit, SoNodeKitDetail, SoNodeKitListPart, SoNodeKitPath, SoSceneKit, SoSeparatorKit, SoShapeKit, SoWrapperKit

(go read those next bestie, the whole friend group is linked up 🫢)


and that's the whole page!! this was the SoNodekitCatalog(3IV) manual page, from the 3IV manual β€” the footer on the original just says SoNodekitCatalog(3IV)() with no extra version or date info, so that's all the receipts we have. no cap πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’