SoCameraKit(3)
π SoCameraKit π
okay bestie, welcome to the SoCameraKit(3) page from the Library Functions Manual β yes we're in the big-kid C++ library docs now, and yes you're gonna be fine, i promise π«Ά
β¨ NAME β¨
SoCameraKit β the class that is a node kit, and that node kit has a transform and a camera in it. that's the whole vibe. transform + camera, together, in one kit π
so like, lowkey the entire personality of this class is "i hold a transform and i hold a camera," and ngl that's already iconic?? a kit that comes pre-loaded with both the thing that moves stuff around and the thing that looks at stuff. it's giving main character energy fr fr π₯β¨
anyway that's the NAME section, we ate, and there's so much more coming β don't go anywhere, the next parts are on the way πΈπ¦
β¨ SYNOPSIS β¨
okay bestie, here's the vibe check: this kit lives in a header file, and to even talk to her you gotta pull her in like this π
#include <Inventor/nodekits/SoCameraKit.h>
and yeah, she Inherits SoBaseKit. β which is lowkey the whole point, because that means she comes pre-loaded with an entire family tree's worth of inherited goodies. not me about to list all of them tho. π buckle up, it's giving inheritance.
π Public Member Functions π
the actual main-character methods that belong to SoCameraKit herself, no cap:
virtual SoType getTypeId (void) constvirtual const SoNodekitCatalog * getNodekitCatalog (void) constSoCameraKit (void)
π¦ Public Member Functions inherited from SoBaseKit π¦
she didn't just appear, she got all of these handed down and honestly? slay:
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) constvoid 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 π
and because she's a node at heart, she's also carrying all of SoNode's greatest hits. iconic behavior fr fr:
void setOverride (const SbBool state)SbBool isOverride (void) constvoid setNodeType (const NodeType type)NodeType getNodeType (void) constvirtual SoNode * copy (SbBool copyconnections=0) constvirtual SbBool affectsState (void) constvirtual 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) constvirtual void writeInstance (SoOutput *out)virtual SoFieldContainer * copyThroughConnection (void) const
π Public Member Functions inherited from SoFieldContainer π
the field-handling queens, all inherited, all hers now:
void setToDefaults (void)SbBool hasDefaultValues (void) constSbBool fieldsAreEqual (const SoFieldContainer *container) constvoid copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=0)SbBool set (const char *const fielddata)void get (SbString &fielddata)virtual int getFields (SoFieldList &l) constvirtual int getAllFields (SoFieldList &l) constvirtual SoField * getField (const SbName &name) constvirtual SoField * getEventIn (const SbName &name) constvirtual SoField * getEventOut (const SbName &name) constSbBool getFieldName (const SoField *const field, SbName &name) constSbBool enableNotify (const SbBool flag)SbBool isNotifyEnabled (void) constSbBool set (const char *fielddata, SoInput *in)void get (SbString &fielddata, SoOutput *out)virtual SbBool validateNewFieldValue (SoField *field, void *newval)SbBool getIsBuiltIn (void) constvoid setUserData (void *userdata) constvoid * getUserData (void) const
π Public Member Functions inherited from SoBase π
and the OGs at the very root, SoBase, pass these down. periodt:
void ref (void) constvoid unref (void) constvoid unrefNoDelete (void) constint32_t getRefCount (void) constvoid touch (void)SbBool isOfType (SoType type) constvirtual SbName getName (void) constvirtual 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) constSbBool shouldWrite (void)void assertAlive (void) const
β Static Public Member Functions β
the "don't need an instance, just call me" girlies π :
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 π
these are the "family only, hands off" methods. she keeps them close to her chest π«Ά:
virtual const SoFieldData * getFieldData (void) constvirtual ~SoCameraKit ()
π¦ Protected Member Functions inherited from SoBaseKit π¦
virtual ~SoBaseKit ()virtual SoNode * addToCopyDict (void) constvirtual 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) constconst SbList< SoSFNode * > & getCatalogInstances (void) constvoid 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) constSbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constvoid writeFooter (SoOutput *out) constvirtual 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 actual parts she's holding, bestie β protected, so don't go grabbing them from outside the fam:
SoSFNode cameraSoSFNode transformSoSFNode transformGroup
π Protected Attributes inherited from SoBaseKit π
SoSFNode callbackListSoChildList * childrenSbBool connectionsSetUp
β Protected Attributes inherited from SoNode β
uint32_t uniqueId
π¦ Protected Attributes inherited from SoFieldContainer π¦
SbBool isBuiltIn
π Additional Inherited Members π
the little extras that come free with the whole inheritance situation. no notes. π
π Public Types inherited from SoNode π
the big enum of node types, kept exactly as-is because every single value matters:
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 }
π Static Protected Attributes inherited from SoNode π
static uint32_t nextUniqueId = 0
static int nextActionMethodIndex = 0
π Detailed Description π
okay bestie so SoCameraKit is a node kit, and what that means is it's like a lil pre-packed bundle π β and this one's whole vibe is a transform and a camera. that's it. that's the kit. simple, iconic, does exactly what it says on the tin β¨
here's the node kit structure, and the arrows (-->) mark the new stuff compared to the parent class, so watch for those π
CLASS SoCameraKit
-->"this"
"callbackList"
--> "transformGroup"
--> "transform"
--> "camera"
(if you wanna know more about how that output is formatted, go peek at SoBaseKit::printDiagram() π«Ά)
and here's the detailed tea on the catalog parts π
CLASS SoCameraKit
PVT "this", SoCameraKit ---
"callbackList", SoNodeKitListPart [ SoCallback, SoEventCallback ]
PVT "transformGroup", SoTransformSeparator ---
"transform", SoTransform ---
"camera", SoCamera --- , (default type = SoPerspectiveCamera)
(want the formatting deets on that one? that's SoBaseKit::printTable() π
)
πΈ Constructor & Destructor Documentation πΈ
β¨ SoCameraKit::SoCameraKit (void ) β¨
Constructor, babes. π
it references SoCameraKit(), and it's referenced by getFieldData() and SoCameraKit().
π SoCameraKit::~SoCameraKit () π [protected], [virtual]
Destructor. it's a protected virtual situation, so it's not out here for just anyone to call, iykyk.
π Member Function Documentation π
β SoType SoCameraKit::getTypeId (void ) const β [virtual]
this one hands you back the type identification of an object that derives from a class inheriting SoBase. what's it for? run-time type checking and doing "downward" casting. fr fr, it's the vibe check for types.
usage example, and yes you're getting the whole thing verbatim, no crumbs left behind π
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
}
}
now listen up, because this next bit is for the application programmers who wanna extend the library with new nodes, engines, nodekits, draggers or whatever else you're dreaming up: you have to override this method in ALL subclasses. all of them. no skipping. π
and how do you do that? typically as part of setting up the full type system for your extension classes, which usually gets accomplished by using the pre-defined macros available through, for instance, Inventor/nodes/SoSubNode.h (that's SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on. β¨
and if you want more info on writing Coin extensions, go read the class documentation of the toplevel superclasses for the various class groups. π
this is reimplemented from SoBaseKit.
π¦ const SoFieldData * SoCameraKit::getFieldData (void ) const π¦ [protected], [virtual]
gives you back a pointer to the class-wide field data storage object for this instance. and heads up β if there are no fields present, it returns NULL. π
reimplemented from SoBaseKit.
it references SoCameraKit().
π const SoNodekitCatalog * SoCameraKit::getNodekitCatalog (void ) const π [virtual]
returns the nodekit catalog, which is the thing that defines the layout of this class' kit. π«Ά
reimplemented from SoBaseKit.
π Author π
Generated automatically by Doxygen for Coin from the source code. (not a human bestie, just a robot doing its lil thing π€β¨)
and that's a wrap, bestie!! π this page was brought to you by Coin, version 2.5.0, and the manual page SoCameraKit(3) β generated way back whenever that date said. go forth and kit your cameras, you absolute icon ππ
π¦ where this page comes from
- fedora 43: Coin2-devel 2.5.0-52.fc43 Β· GPL-2.0-only
- fedora 43: Coin2-devel 2.5.0-52.fc43 Β· GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.fc44 Β· GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.fc44 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms