SOINTERACTIONKIT(3iv)

✨ NAME ✨

hey bestie, welcome to the SoInteractionKit(3IV) manual page! SoInteractionKit β€” base class for all interaction nodekit classes. πŸ’–

πŸ¦‹ INHERITS FROM πŸ¦‹

SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit

πŸ’… SYNOPSIS πŸ’…

okay bestie, here's the whole code situation, and yes you need every line: don't skip a single one πŸ’…

#include <Inventor/nodekits/SoInteractionKit.h>

enum CacheEnabled {
     SoInteractionKit::OFF   Never build or use a cache
     SoInteractionKit::ON    Always try to build a cache
     SoInteractionKit::AUTO  Automatic caching
}

          Fields from class SoInteractionKit:

     SoSFEnum            renderCaching
     SoSFEnum            boundingBoxCaching
     SoSFEnum            renderCulling
     SoSFEnum            pickCulling

          Parts from class SoBaseKit:

     (SoNodeKitListPart)  callbackList

          Methods from class SoInteractionKit:

                         SoInteractionKit()
     virtual SbBool      setPartAsPath(const SbName &partName, SoPath
                              *surrogatePath )
     static const SoNodekitCatalog *
                         getClassNodekitCatalog() const
     static SoType       getClassTypeId()

          Methods from class SoBaseKit:

     virtual const SoNodekitCatalog *
                              getNodekitCatalog() const
     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 *newPart)
     SbBool                   set(char *partName, char *parameters)
     SbBool                   set(char *nameValuePairs)
     static SbBool            isSearchingChildren()
     static void              setSearchingChildren(SbBool newVal)

          Methods from class SoNode:

     void                setOverride(SbBool state)
     SbBool              isOverride() const
     SoNode *            copy(SbBool copyConnections = FALSE) const
     virtual SbBool      affectsState() const
     static SoNode *     getByName(const SbName &name)
     static int          getByName(const SbName &name, SoNodeList &list)

          Methods from class SoFieldContainer:

     void                setToDefaults()
     SbBool              hasDefaultValues() const
     SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
     void                copyFieldValues(const SoFieldContainer *fc, SbBool
                              copyConnections = FALSE)
     void                get(SbString &fieldDataString)
     virtual int         getFields(SoFieldList &resultList) const
     virtual SoField *   getField(const SbName &fieldName) const
     SbBool              getFieldName(const SoField *field, SbName &fieldName)
                              const
     SbBool              isNotifyEnabled() const
     SbBool              enableNotify(SbBool flag)

          Methods from class SoBase:

     void                ref()
     void                unref() const
     void                unrefNoDelete() const
     void                touch()
     virtual SoType      getTypeId() const
     SbBool              isOfType(SoType type) const
     virtual void        setName(const SbName &name)
     virtual SbName      getName() const

          Macros from class SoBaseKit:

     SO_GET_PART(kit, partName, partClass)
     SO_CHECK_PART(kit, partName, partClass)

🌸 DESCRIPTION 🌸

This is the base class for all classes of interaction nodekits. Currently, the only subclass is SoDragger, which reacts to click-drag-release events from the mouse. πŸ–±οΈβœ¨

This node has four fields corresponding to those of an SoSeparator: They are renderCaching, boundingBoxCaching, renderCulling, and pickCulling. They behave the same here as they do for an SoSeparator.

The setPartAsPath() method provides support for creating "stand-in" objects for parts in the interaction kit. The "stand-in", or "surrogate" part, is a path to an object that lies somewhere else in the scene graph. πŸͺ„

πŸ”₯ FIELDS πŸ”₯

  • SoSFEnum renderCaching β€” Set render caching mode. Default is AUTO. πŸ‘‘
  • SoSFEnum boundingBoxCaching β€” Set bounding box caching mode. Default is ON. Setting this value to AUTO is equivalent to ON β€” automatic culling is not implemented. πŸ’…
  • SoSFEnum renderCulling β€” Set render culling mode. Default is OFF. Setting this value to AUTO is equivalent to ON β€” automatic culling is not implemented. πŸ¦‹
  • SoSFEnum pickCulling β€” Set pick caching mode. Default is AUTO. ✨

πŸ’œ METHODS πŸ’œ

  • SoInteractionKit() β€” Constructor. literally just builds the thing, no cap. πŸŽ€
  • virtual SbBool setPartAsPath(const SbName &partName, SoPath *surrogatePath ) β€” Sets any public part in the interaction kit as a "surrogate" path instead. The object at the end of the path serves as a stand-in when a pick occurs, and can thus initiate interaction. πŸ‘‘

Instead of the usual setPart(), which replaces partName with a new node, this will remove the node being used for partName from the scene and remember the surrogatePath you give it. Later, any pick on surrogatePath will be regarded as a pick on partName. πŸ”„

For example, set the XRotator part of an SoTrackballDragger to be the path to an object in the scene. The rest of the trackball will look the same, but the XRotator stripe will disappear. However, click the mouse on the object at the end of surrogatePath and the ball will start to drag in rotation around its X axis. πŸŒ€

Note that this is different from setting the part to be the node at the end of the path. When you set the part as a node, a second instance will be drawn in the local space of the interaction kit. When you set it as a path, the object itself is used, not a copy. 🫢

The partName may be any part name that follows the nodekit syntax for parts, such as childList[0].shape or rotator.rotatorActive. (See the getPart() method in the SoBaseKit reference page for a complete description.) πŸ“š

  • static const SoNodekitCatalog * getClassNodekitCatalog() const β€” Returns an SoNodekitCatalog for the class SoInteractionKit. πŸ—‚οΈ
  • static SoType getClassTypeId() β€” Returns type identifier for this class. πŸ†”

πŸŽ€ CATALOG PARTS πŸŽ€

All parts

  • Part Name: callbackList
    • Part Type: NodeKitListPart
    • Default Type: --
    • NULL by Default: yes

Extra information for list parts from above table

  • Part Name: callbackList
    • Container Type: Separator
    • Permissible Types: Callback, EventCallback

🌈 FILE FORMAT/DEFAULTS 🌈

InteractionKit {
   renderCaching       AUTO
   boundingBoxCaching  AUTO
   renderCulling       AUTO
   pickCulling         AUTO
   callbackList        NULL
}

⭐ SEE ALSO ⭐

SoBaseKit, SoInteraction, SoNodeKitDetail, SoNodeKitPath, SoNodekitCatalog, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTranslate1Dragger, SoTranslate2Dragger


xoxo bestie, that's the whole SoInteractionKit(3IV)() footer vibe β€” no extra source/version/date, just the manual name and empty parens, periodt. πŸ’–βœ¨