Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SoSpotLightDragger(3IV)()			     SoSpotLightDragger(3IV)()

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

       SoBase >	SoFieldContainer > SoNode > SoBaseKit >	SoInteractionKit > So-
       Dragger > SoSpotLightDragger

       #include	<Inventor/draggers/SoSpotLightDragger.h>

	  Fields from class SoSpotLightDragger:

     SoSFRotation	 rotation
     SoSFVec3f		 translation
     SoSFFloat		 angle

	  Fields from class SoDragger:

     SoSFBool		 isActive

	  Fields from class SoInteractionKit:

     SoSFEnum		 renderCaching
     SoSFEnum		 boundingBoxCaching
     SoSFEnum		 renderCulling
     SoSFEnum		 pickCulling

	  Parts	from class SoBaseKit:

     (SoNodeKitListPart)  callbackList

	  Methods from class SoSpotLightDragger:

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

	  Methods from class SoDragger:

     void		 addStartCallback(SoDraggerCB  *f,  void  *userData  =
     void		 removeStartCallback(SoDraggerCB *f, void *userData  =
     void		 addMotionCallback(SoDraggerCB	*f,  void  *userData =
     void		 removeMotionCallback(SoDraggerCB *f, void *userData =
     void		 addFinishCallback(SoDraggerCB	*f,  void  *userData =
     void		 removeFinishCallback(SoDraggerCB *f, void *userData =
     void		 addValueChangedCallback(SoDraggerCB  *f,  void	*user-
			      Data = NULL)
     void		 removeValueChangedCallback(SoDraggerCB	   *f,	  void
			      *userData	= NULL)
     SbBool		 enableValueChangedCallbacks()
     void		 setMinGesture(int pixels)
     int		 getMinGesture() const
     static void	 setMinScale(float newMinScale)
     static float	 getMinScale()

	  Methods from class SoInteractionKit:

     virtual  SbBool	  setPartAsPath(const SbName &partName,	SoPath *surro-
			      gatePath )

	  Methods from class SoBaseKit:

     virtual const SoNodekitCatalog *
			      getNodekitCatalog() const
     virtual   SoNode	*	  getPart(const	  SbName   &partName,	SbBool
     SbString		      getPartString(const SoBase *part)
     virtual  SoNodeKitPath *  createPathToPart(const SbName &partName,	SbBool
				   makeIfNeeded, const SoPath *pathToExtend  =
     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)
     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)

       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 de-
       tails 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 SoDirectionalLightDrag-
       ger 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 cre-
       ates 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 transla-
       tion 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  SoRotate-
       DiscDragger,  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	calcu-
       lated 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 DRAG-
       GER  RESOURCE  section. You can make your program use different default
       resources for the parts by copying the file  /usr/share/data/draggerDe-
       faults/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.

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

     SoSFVec3f		 translation
	  Position of the dragger.

     SoSFFloat		 angle
	  Angle	between	center and edge	of beam.


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

     static SoType	 getClassTypeId()
	  Returns type identifier for this class.

       |			   All parts				|
       |							NULL by	|
       |Part Name	Part Type		 Default Type	Default	|
       |								|
       |callbackList	NodeKitListPart		 --		  yes	|
       |material	Material		 --		  yes	|
       |translator	DragPointDragger	 --		  yes	|
       |rotator		RotateSphericalDragger	 --		  yes	|
       |beamPlacement	Translation		 --		  yes	|
       |beamScale	Scale			 --		  yes	|
       |beam		Separator		 --		  yes	|
       |beamActive	Separator		 --		  yes	|
       |								|
       |      Extra information	for list parts from above table	       |
       |							       |
       |Part Name      Container Type	Permissible Types	       |
       |							       |
       |callbackList   Separator	Callback, EventCallback	       |
       |							       |
       .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

			 .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
     Appearance:       empty Separator
     Description:      this disables display of	the axes that a	 rotateSpheri-
			 cal 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 rotateSpheri-
			 cal 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.  Re-
			 source	 for the moving	sun, spotLightTranslatorPlane-
			 TranslatorActive,  contains  a	 yellow	 material  for

			 .in 0n+.5i
     Resource:	       spotLightTranslatorPlaneTranslator
			 .in 0n+.5i
     Parts:	       translator.yzTranslator.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
     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
     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
     Appearance:       yellow cylinder
     Description:      shown during linear dragging in the x, y, and z	direc-
			 tions respectively.

       SpotLightDragger	{
	  renderCaching				    AUTO
	  boundingBoxCaching			    AUTO
	  renderCulling				    AUTO
	  pickCulling				    AUTO
	  isActive				    FALSE
	  rotation				    0 0	1  0
	  translation				    0 0	0
	  angle					    1
	  callbackList				    NULL
	  material				    <spotLightOverallMaterial resource>
	  translator				    DragPointDragger {

	  rotator				    RotateSphericalDragger {

	  beamPlacement				    <spotLightBeamPlacement resource>
	  beamScale				    Scale {
	      scaleFactor 0.841471 0.841471 0.540302 }

	  beam					    <spotLightBeam resource>
	  beamActive				    <spotLightBeamActive resource>
	  rotator.rotator			    <spotLightRotatorRotator resource>
	  rotator.rotatorActive			    <spotLightRotatorRotatorActive resource>			    <spotLightRotatorFeedback resource>
	  rotator.feedbackActive		    <spotLightRotatorFeedbackActive resource>
	  translator.yzTranslator.translator	    <spotLightTranslatorPlaneTranslator	resource>
	  translator.xzTranslator.translator	    <spotLightTranslatorPlaneTranslator	resource>
	  translator.xyTranslator.translator	    <spotLightTranslatorPlaneTranslator	resource>
	  translator.yzTranslator.translatorActive  <spotLightTranslatorPlaneTranslatorActive resource>
	  translator.xzTranslator.translatorActive  <spotLightTranslatorPlaneTranslatorActive resource>
	  translator.xyTranslator.translatorActive  <spotLightTranslatorPlaneTranslatorActive resource>
	  translator.xTranslator.translator	    <spotLightTranslatorLineTranslator resource>
	  translator.yTranslator.translator	    <spotLightTranslatorLineTranslator resource>
	  translator.zTranslator.translator	    <spotLightTranslatorLineTranslator resource>
	  translator.xTranslator.translatorActive   <spotLightTranslatorLineTranslatorActive resource>
	  translator.yTranslator.translatorActive   <spotLightTranslatorLineTranslatorActive resource>
	  translator.zTranslator.translatorActive   <spotLightTranslatorLineTranslatorActive resource>

       SoInteractionKit,  SoDragger,  SoCenterballDragger, SoDirectionalLight-
       Dragger,	 SoDragPointDragger,  SoHandleBoxDragger,  SoJackDragger,  So-
       PointLightDragger,   SoRotateCylindricalDragger,	  SoRotateDiscDragger,
       SoRotateSphericalDragger,       SoScale1Dragger,	      SoScale2Dragger,
       SoScale2UniformDragger,	SoScaleUniformDragger, SoTabBoxDragger,	SoTab-
       PlaneDragger, SoTrackballDragger, SoTransformBoxDragger,	SoTransformer-
       Dragger,	SoTranslate1Dragger, SoTranslate2Dragger



Want to link to this manual page? Use this URL:

home | help