logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

SoSpotLightDragger — spotlight shaped dragger that allows you to change position, direction, and width of

Catalog Parts

       ┌─────────────────────────────────────────────────────────────────┐
       │                            Allparts                            │
       │                                                         NULLby │
       │ PartNamePartTypeDefaultTypeDefault │
       │                                                                 │
       │ callbackList    NodeKitListPart          --               yes   │
       │ material        Material                 --               yes   │
       │ translator      DragPointDragger         --               yes   │
       │ rotator         RotateSphericalDragger   --               yes   │
       │ beamPlacement   Translation              --               yes   │
       │ beamScale       Scale                    --               yes   │
       │ beam            Separator                --               yes   │
       │ beamActive      Separator                --               yes   │
       │                                                                 │
       └─────────────────────────────────────────────────────────────────┘
       ┌────────────────────────────────────────────────────────────────┐
       │       Extrainformationforlistpartsfromabovetable        │
       │                                                                │
       │ PartNameContainerTypePermissibleTypes              │
       │                                                                │
       │ callbackList   Separator        Callback, EventCallback        │
       │                                                                │
       └────────────────────────────────────────────────────────────────┘

Description

SoSpotLightDragger is a composite dragger. It is shaped like a beam of light emanating  from  a  sun-like
       ball. An arrow runs along the axis of the beam and extends past the end of the beam.

       When you click and drag the beam, it opens and closes with an umbrella-like motion. The angle between the
       center  and edge of the beam is stored in the angle field of this dragger; setting the angle field causes
       the beam to widen or narrow in response.  The spotlight dragger does not use a standard dragger class  to
       execute this motion. More details are given later in this section.

       Dragging  the  arrow  rotates  it  arount  the  sun,  and  the  beam  moves  with  it.  The  arrow  is an
       SoRotateSphericalDragger   that   controls   the   rotation   field.   See   the   reference   page   for
       SoDirectionalLightDragger, which works the same way, for details.

       The  sun-shape  can  be  dragged  to  translate  all three pieces together through 3-space.  Its movement
       controls  the  translation  field  and  works  exactly  as  described  in   the   reference   pages   for
       SoDirectionalLightDragger and SoPointLightDragger (which goes into more detail).

       Remember:  This  is  not  a  light  source! It just looks like one. If you want to move a light with this
       dragger, you can do the following:

       [a] Use an SoSpotLightManip, which is subclassed from SoLight. It creates an SoSpotLightDragger and  uses
       it  as  the  interface  to  change  the location, direction, and cutOffAngle of its light source (see the
       SoSpotLightManip man page).  The manip also edits the material part of this dragger to match the color of
       light the manip is producing.

       [b] Connect the angle field of this dragger to the cutOffAngle field of an SoSpotLight with  a  field-to-
       field connection.

       See  the  SoPointLightDragger  and  SoDirectionalLightDragger  man  pages for other ways to control light
       parameters with the rotation and translation fields.

       This class creates its own projector and handles mouse events to do it's own dragging of the beam  angle.
       When  the  mouse  picks  a  point  on  the  beam,  that  point  is  dragged  in  a circle just like in an
       SoRotateDiscDragger, but the plane of the disc is re-defined every time  a  drag  is  initiated.  Imagine
       placing the metal tip of a compass at the apex of the cone and the pencil tip at the picked point. If you
       swing an arc through the central axis of the cone, you will be drawing the arc used to drag the beam open
       and closed.

       The  beam  is opened and closed not by rotating, but by scaling. The dragger scales the beam-cone so that
       the height and radius change to move the  picked  point  along  the  circle.  Then  the  angle  field  is
       calculated from the height and radius.

       You  can  change  the geometry of parts in any instance of this dragger using setPart(). The default part
       geometries are defined as resources for this SoSpotLightDragger class. They are  detailed  below  in  the
       DRAGGERRESOURCE  section.  You  can  make your program use different default resources for the parts by
       copying the file /usr/share/data/draggerDefaults/spotLightDragger.iv into your own directory, editing the
       file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory.

Dragger Resources

       .in 0n+.5i
     Resource:         spotLightBeam
       .in 0n+.5i
     Part:             beam
     Appearance:       wire-frame cone with no SoMaterial node
     Description:      picking this initiates dragging of the beam angle. The  beam  inherits  colors  from  the
                         material part, just like the stationary version of the sun shape.

                         .in 0n+.5i
     Resource:         spotLightBeamActive
                         .in 0n+.5i
     Part:             beamActive
     Appearance:       yellow wire-frame cone
     Description:      displayed during dragging of the beam angle.

                         .in 0n+.5i
     Resource:         spotLightBeamPlacement
                         .in 0n+.5i
     Part:             beamPlacement
     Appearance:       translation of (0,0,-1)
     Description:      This  translation  node moves the beam parts relative to the rest of the dragger. In this
                         case, moving by (0,0,-1) slides the cone outward along rotator part toward  its  arrow-
                         head. The distance chosen places the apex of the cone on the surface of the sun shape.

                         .in 0n+.5i
     Resource:         spotLightRotatorRotator
                         .in 0n+.5i
     Part:             rotator.rotator
     Appearance:       white arrow that goes through the sun
     Description:      picking this begins rotation of the arrow about the sun-shape

                         .in 0n+.5i
     Resource:         spotLightRotatorRotatorActive
                         .in 0n+.5i
     Part:             rotator.rotatorActive
     Appearance:       yellow arrow that goes through the sun
     Description:      displayed while the arrow is being rotated

                         .in 0n+.5i
     Resource:         spotLightRotatorFeedback
                         .in 0n+.5i
     Part:             rotator.feedback
     Appearance:       empty Separator
     Description:      this disables display of the axes that a rotateSpherical dragger uses by default

                         .in 0n+.5i
     Resource:         spotLightRotatorFeedbackActive
                         .in 0n+.5i
     Part:             rotator.feedbackActive
     Appearance:       empty Separator
     Description:      this disables display of the axes that a rotateSpherical dragger uses by default

                         .in 0n+.5i
     Resource:         spotLightOverallMaterial
                         .in 0n+.5i
     Part:             material
     Appearance:       white. half strength emissive, half strength diffuse
     Description:      sets  material  for  the  sun  shape  when  stationary.  Resource  for  the  moving  sun,
                         spotLightTranslatorPlaneTranslatorActive, contains a yellow material for highlighting.

                         .in 0n+.5i
     Resource:         spotLightTranslatorPlaneTranslator
                         .in 0n+.5i
     Parts:            translator.yzTranslator.translator
                                           translator.xzTranslator.translator
                                           translator.xyTranslator.translator
     Appearance:       sun shape with no material
     Description:      picking  these  parts  initiates  dragging  by  the  yz,  xz,  and  xy  planar   draggers
                         respectively.

                         .in 0n+.5i
     Resource:         spotLightTranslatorPlaneTranslatorActive
                         .in 0n+.5i
     Parts:            translator.yzTranslator.translatorActive
                                           translator.xzTranslator.translatorActive
                                           translator.xyTranslator.translatorActive
     Appearance:       yellow sun shape
     Description:      shown during planar dragging in the yz, xz, and xy planes respectively.

                         .in 0n+.5i
     Resource:         spotLightTranslatorLineTranslator
                         .in 0n+.5i
     Parts:            translator.xTranslator.translator
                                           translator.yTranslator.translator
                                           translator.zTranslator.translator
     Appearance:       white cylinder
     Description:      picking these parts initiates dragging in the x, y, and z linear draggers respectively.

                         .in 0n+.5i
     Resource:         spotLightTranslatorLineTranslatorActive
                         .in 0n+.5i
     Parts:            translator.xTranslator.translatorActive
                                           translator.yTranslator.translatorActive
                                           translator.zTranslator.translatorActive
     Appearance:       yellow cylinder
     Description:      shown during linear dragging in the x, y, and z directions respectively.

Fields

SoSFRotationrotation
          Orientation of the rotating part (an arrow by default).

     SoSFVec3ftranslation
          Position of the dragger.

     SoSFFloatangle
          Angle between center and edge of beam.

File Format/Defaults

SpotLightDragger{renderCachingAUTOboundingBoxCachingAUTOrenderCullingAUTOpickCullingAUTOisActiveFALSErotation0010translation000angle1callbackListNULLmaterial<spotLightOverallMaterialresource>translatorDragPointDragger{}rotatorRotateSphericalDragger{}beamPlacement<spotLightBeamPlacementresource>beamScaleScale{scaleFactor0.8414710.8414710.540302}beam<spotLightBeamresource>beamActive<spotLightBeamActiveresource>rotator.rotator<spotLightRotatorRotatorresource>rotator.rotatorActive<spotLightRotatorRotatorActiveresource>rotator.feedback<spotLightRotatorFeedbackresource>rotator.feedbackActive<spotLightRotatorFeedbackActiveresource>translator.yzTranslator.translator<spotLightTranslatorPlaneTranslatorresource>translator.xzTranslator.translator<spotLightTranslatorPlaneTranslatorresource>translator.xyTranslator.translator<spotLightTranslatorPlaneTranslatorresource>translator.yzTranslator.translatorActive<spotLightTranslatorPlaneTranslatorActiveresource>translator.xzTranslator.translatorActive<spotLightTranslatorPlaneTranslatorActiveresource>translator.xyTranslator.translatorActive<spotLightTranslatorPlaneTranslatorActiveresource>translator.xTranslator.translator<spotLightTranslatorLineTranslatorresource>translator.yTranslator.translator<spotLightTranslatorLineTranslatorresource>translator.zTranslator.translator<spotLightTranslatorLineTranslatorresource>translator.xTranslator.translatorActive<spotLightTranslatorLineTranslatorActiveresource>translator.yTranslator.translatorActive<spotLightTranslatorLineTranslatorActiveresource>translator.zTranslator.translatorActive<spotLightTranslatorLineTranslatorActiveresource>}

Inherits From

       SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoSpotLightDragger

Methods

SoSpotLightDragger()
          Constructor.

     staticconstSoNodekitCatalog*getClassNodekitCatalog()const
          Returns an SoNodekitCatalog for this class

     staticSoTypegetClassTypeId()
          Returns type identifier for this class.

Name

       SoSpotLightDragger — spotlight shaped dragger that allows you to change position, direction, and width of
       the beam

See Also

SoInteractionKit,SoDragger,SoCenterballDragger,SoDirectionalLightDragger,SoDragPointDragger,SoHandleBoxDragger,SoJackDragger,SoPointLightDragger,SoRotateCylindricalDragger,SoRotateDiscDragger,SoRotateSphericalDragger,SoScale1Dragger,SoScale2Dragger,SoScale2UniformDragger,SoScaleUniformDragger,SoTabBoxDragger,SoTabPlaneDragger,SoTrackballDragger,SoTransformBoxDragger,SoTransformerDragger,SoTranslate1Dragger,SoTranslate2DraggerSoSpotLightDragger(3IV)()

Synopsis

#include<Inventor/draggers/SoSpotLightDragger.h>

          Fields from class SoSpotLightDragger:

     SoSFRotationrotationSoSFVec3ftranslationSoSFFloatangle

          Fields from class SoDragger:

     SoSFBoolisActive

          Fields from class SoInteractionKit:

     SoSFEnumrenderCachingSoSFEnumboundingBoxCachingSoSFEnumrenderCullingSoSFEnumpickCulling

          Parts from class SoBaseKit:

     (SoNodeKitListPart)callbackList

          Methods from class SoSpotLightDragger:

                         SoSpotLightDragger()staticconstSoNodekitCatalog*getClassNodekitCatalog()conststaticSoTypegetClassTypeId()

          Methods from class SoDragger:

     voidaddStartCallback(SoDraggerCB*f,void*userData=NULL)voidremoveStartCallback(SoDraggerCB*f,void*userData=NULL)voidaddMotionCallback(SoDraggerCB*f,void*userData=NULL)voidremoveMotionCallback(SoDraggerCB*f,void*userData=NULL)voidaddFinishCallback(SoDraggerCB*f,void*userData=NULL)voidremoveFinishCallback(SoDraggerCB*f,void*userData=NULL)voidaddValueChangedCallback(SoDraggerCB*f,void*userData=NULL)voidremoveValueChangedCallback(SoDraggerCB*f,void*userData=NULL)SbBoolenableValueChangedCallbacks()voidsetMinGesture(intpixels)intgetMinGesture()conststaticvoidsetMinScale(floatnewMinScale)staticfloatgetMinScale()

          Methods from class SoInteractionKit:

     virtualSbBoolsetPartAsPath(constSbName&partName,SoPath*surrogatePath)

          Methods from class SoBaseKit:

     virtualconstSoNodekitCatalog*getNodekitCatalog()constvirtualSoNode*getPart(constSbName&partName,SbBoolmakeIfNeeded)SbStringgetPartString(constSoBase*part)virtualSoNodeKitPath*createPathToPart(constSbName&partName,SbBoolmakeIfNeeded,constSoPath*pathToExtend=NULL)virtualSbBoolsetPart(constSbName&partName,SoNode*newPart)SbBoolset(char*partName,char*parameters)SbBoolset(char*nameValuePairs)staticSbBoolisSearchingChildren()staticvoidsetSearchingChildren(SbBoolnewVal)

          Methods from class SoNode:

     voidsetOverride(SbBoolstate)SbBoolisOverride()constSoNode*copy(SbBoolcopyConnections=FALSE)constvirtualSbBoolaffectsState()conststaticSoNode*getByName(constSbName&name)staticintgetByName(constSbName&name,SoNodeList&list)

          Methods from class SoFieldContainer:

     voidsetToDefaults()SbBoolhasDefaultValues()constSbBoolfieldsAreEqual(constSoFieldContainer*fc)constvoidcopyFieldValues(constSoFieldContainer*fc,SbBoolcopyConnections=FALSE)voidget(SbString&fieldDataString)virtualintgetFields(SoFieldList&resultList)constvirtualSoField*getField(constSbName&fieldName)constSbBoolgetFieldName(constSoField*field,SbName&fieldName)constSbBoolisNotifyEnabled()constSbBoolenableNotify(SbBoolflag)

          Methods from class SoBase:

     voidref()voidunref()constvoidunrefNoDelete()constvoidtouch()virtualSoTypegetTypeId()constSbBoolisOfType(SoTypetype)constvirtualvoidsetName(constSbName&name)virtualSbNamegetName()const

          Macros from class SoBaseKit:

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

See Also