Coin Logo http://www.sim.no
http://www.coin3d.org

SoIntersectionDetectionAction.h
1 #ifndef COIN_SOINTERSECTIONDETECTIONACTION_H
2 #define COIN_SOINTERSECTIONDETECTIONACTION_H
3 
4 /**************************************************************************\
5  *
6  * This file is part of the Coin 3D visualization library.
7  * Copyright (C) 1998-2007 by Systems in Motion. All rights reserved.
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License
11  * ("GPL") version 2 as published by the Free Software Foundation.
12  * See the file LICENSE.GPL at the root directory of this source
13  * distribution for additional information about the GNU GPL.
14  *
15  * For using Coin with software that can not be combined with the GNU
16  * GPL, and for taking advantage of the additional benefits of our
17  * support services, please contact Systems in Motion about acquiring
18  * a Coin Professional Edition License.
19  *
20  * See http://www.coin3d.org/ for more information.
21  *
22  * Systems in Motion, Postboks 1283, Pirsenteret, 7462 Trondheim, NORWAY.
23  * http://www.sim.no/ sales@sim.no coin-support@coin3d.org
24  *
25 \**************************************************************************/
26 
27 #include <Inventor/actions/SoSubAction.h>
28 #include <Inventor/actions/SoAction.h>
29 #include <Inventor/actions/SoCallbackAction.h>
30 
32  SoPath * path;
33  enum PrimitiveType {
34  SEGMENT = 2,
35  LINE_SEGMENT = 2,
36  TRIANGLE = 3
37  } type;
38  SbVec3f vertex[3];
39  SbVec3f xf_vertex[3];
40 };
41 
42 class SoIntersectionDetectionActionP;
43 
44 class COIN_DLL_API SoIntersectionDetectionAction : public SoAction {
45  typedef SoAction hinherited;
46  SO_ACTION_HEADER(SoIntersectionDetectionAction);
47 public:
48  static void initClass(void);
50  virtual ~SoIntersectionDetectionAction(void);
51 
52  enum Resp {
53  NEXT_PRIMITIVE,
54  NEXT_SHAPE,
55  ABORT
56  };
57 
58  typedef SoCallbackAction::Response SoIntersectionVisitationCB(void * closure, const SoPath * where);
59  typedef SbBool SoIntersectionFilterCB(void * closure, const SoPath * p1, const SoPath * p2);
60  typedef Resp SoIntersectionCB(void * closure, const SoIntersectingPrimitive * p1, const SoIntersectingPrimitive * p2);
61 
62  void setIntersectionDetectionEpsilon(float epsilon);
63  float getIntersectionDetectionEpsilon(void) const;
64 
65  static void setIntersectionEpsilon(float epsilon);
66  static float getIntersectionEpsilon(void);
67 
68  void setTypeEnabled(SoType type, SbBool enable);
69  SbBool isTypeEnabled(SoType type, SbBool checkgroups = FALSE) const;
70 
71  void setManipsEnabled(SbBool enable);
72  SbBool isManipsEnabled(void) const;
73 
74  void setDraggersEnabled(SbBool enable);
75  SbBool isDraggersEnabled(void) const;
76 
77  void setShapeInternalsEnabled(SbBool enable);
78  SbBool isShapeInternalsEnabled(void) const;
79 
80  void addVisitationCallback(SoType type, SoIntersectionVisitationCB * cb, void * closure);
81  void removeVisitationCallback(SoType type, SoIntersectionVisitationCB * cb, void * closure);
82 
83  virtual void apply(SoNode * node);
84  virtual void apply(SoPath * path);
85  virtual void apply(const SoPathList & paths, SbBool obeysRules = FALSE);
86 
87  virtual void setFilterCallback(SoIntersectionFilterCB * cb, void * closure = NULL);
88  virtual void addIntersectionCallback(SoIntersectionCB * cb, void * closure = NULL);
89  virtual void removeIntersectionCallback(SoIntersectionCB * cb, void * closure = NULL);
90 
91 private:
92  SoIntersectionDetectionActionP * pimpl;
93 };
94 
95 #endif // !COIN_SOINTERSECTIONDETECTIONACTION_H
SoIndexedLineSet
The SoIndexedLineSet class is used to render and otherwise represent indexed lines.
Definition: SoIndexedLineSet.h:34
SoCallbackAction::Response
Response
Definition: SoCallbackAction.h:85
SoCallbackAction::getModelMatrix
const SbMatrix & getModelMatrix(void) const
Definition: SoCallbackAction.cpp:953
SoShape::computeBBox
virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center)=0
SoIntersectionDetectionAction::setManipsEnabled
void setManipsEnabled(SbBool enable)
Definition: SoIntersectionDetectionAction.cpp:431
SoIntersectionDetectionAction::addIntersectionCallback
virtual void addIntersectionCallback(SoIntersectionCB *cb, void *closure=NULL)
Definition: SoIntersectionDetectionAction.cpp:597
SoAction::apply
virtual void apply(SoNode *root)
Definition: SoAction.cpp:476
SbRotation::identity
static SbRotation identity(void)
Definition: SbRotation.cpp:674
SoPath::getTail
SoNode * getTail(void) const
Definition: SoPath.cpp:373
SoShape
The SoShape class is the superclass for geometry shapes.
Definition: SoShape.h:43
SoPrimitiveVertex::getPoint
const SbVec3f & getPoint(void) const
Definition: SoPrimitiveVertex.cpp:91
SbMatrix
The SbMatrix class is a 4x4 dimensional representation of a matrix.
Definition: SbMatrix.h:37
SoShape::getBoundingBoxCache
const SoBoundingBoxCache * getBoundingBoxCache(void) const
Definition: SoShape.cpp:1537
SbBox3f::getCenter
SbVec3f getCenter(void) const
Definition: SbBox3f.cpp:161
SoWriteAction
The SoWriteAction class writes a scene graph to file.
Definition: SoWriteAction.h:31
SoOutput::closeFile
virtual void closeFile(void)
Definition: SoOutput.cpp:426
SoOutput
The SoOutput class is an abstraction of an output stream.
Definition: SoOutput.h:42
SoGetPrimitiveCountAction::getTriangleCount
int getTriangleCount(void) const
Definition: SoGetPrimitiveCountAction.cpp:89
SbMatrix::setTransform
void setTransform(const SbVec3f &t, const SbRotation &r, const SbVec3f &s)
Definition: SbMatrix.cpp:812
SoIndexedShape::coordIndex
SoMFInt32 coordIndex
Definition: SoIndexedShape.h:42
SoIntersectionDetectionAction
The SoIntersectionDetectionAction class is for detecting intersecting primitives in a scene.
Definition: SoIntersectionDetectionAction.h:44
SbPList
The SbPList class is a container class for void pointers.
Definition: SbPList.h:31
SbBox3f::getMin
const SbVec3f & getMin(void) const
Definition: SbBox3f.cpp:122
SoMatrixTransform::matrix
SoSFMatrix matrix
Definition: SoMatrixTransform.h:40
SoGetBoundingBoxAction::getXfBoundingBox
SbXfBox3f & getXfBoundingBox(void)
Definition: SoGetBoundingBoxAction.cpp:317
SoBaseColor::rgb
SoMFColor rgb
Definition: SoBaseColor.h:41
SbBox3f
The SbBox3f class is an abstraction for an axis aligned 3 dimensional box.
Definition: SbBox3f.h:37
SoAction::getCurPath
const SoPath * getCurPath(void)
Definition: SoAction.cpp:1044
SoDebugError::postWarning
static void postWarning(const char *const source, const char *const format,...)
Definition: SoDebugError.cpp:324
SoAction
The SoAction class is the base class for all traversal actions.
Definition: SoAction.h:67
SbXfBox3f::project
SbBox3f project(void) const
Definition: SbXfBox3f.cpp:649
SoCoordinate3::point
SoMFVec3f point
Definition: SoCoordinate3.h:39
SbMatrix::setScale
void setScale(const float s)
Definition: SbMatrix.cpp:760
SoText2
The SoText2 class is a node type for visualizing 2D text aligned with the camera plane.
Definition: SoText2.h:33
SoOutput::openFile
virtual SbBool openFile(const char *const fileName)
Definition: SoOutput.cpp:400
SoIntersectionDetectionAction::setFilterCallback
virtual void setFilterCallback(SoIntersectionFilterCB *cb, void *closure=NULL)
Definition: SoIntersectionDetectionAction.cpp:577
SbXfBox3f
The SbXfBox3f class is a 3 dimensional box with floating point coordinates and an attached transforma...
Definition: SbXfBox3f.h:31
SoGroup::addChild
virtual void addChild(SoNode *node)
Definition: SoGroup.cpp:393
SoIntersectionDetectionAction::setDraggersEnabled
void setDraggersEnabled(SbBool enable)
Definition: SoIntersectionDetectionAction.cpp:466
SoCallbackAction::addTriangleCallback
void addTriangleCallback(const SoType type, SoTriangleCB *cb, void *userdata)
Definition: SoCallbackAction.cpp:515
SoPathList
The SoPathList class is a container for pointers to SoPath objects.
Definition: SoPathList.h:31
SoIntersectionDetectionAction::setShapeInternalsEnabled
void setShapeInternalsEnabled(SbBool enable)
Definition: SoIntersectionDetectionAction.cpp:497
SbString
The SbString class is a string class with convenience functions for string operations.
Definition: SbString.h:42
SbVec3f::length
float length(void) const
Definition: SbVec3f.cpp:356
SoType::isDerivedFrom
SbBool isDerivedFrom(const SoType type) const
Definition: SoType.cpp:687
SoIntersectionDetectionAction::getIntersectionDetectionEpsilon
float getIntersectionDetectionEpsilon(void) const
Definition: SoIntersectionDetectionAction.cpp:363
SoIntersectionDetectionAction::setTypeEnabled
void setTypeEnabled(SoType type, SbBool enable)
Definition: SoIntersectionDetectionAction.cpp:376
SoBase::unref
void unref(void) const
Definition: SoBase.cpp:627
SoPath
The SoPath class is a container class for traversal path descriptions.
Definition: SoPath.h:43
SoType
The SoType class is the basis for the run-time type system in Coin.
Definition: SoType.h:50
SbList< ShapeData * >
SoDebugError::postInfo
static void postInfo(const char *const source, const char *const format,...)
Definition: SoDebugError.cpp:334
SbBox3f::getMax
const SbVec3f & getMax(void) const
Definition: SbBox3f.cpp:134
SoIntersectionDetectionAction::isTypeEnabled
SbBool isTypeEnabled(SoType type, SbBool checkgroups=0) const
Definition: SoIntersectionDetectionAction.cpp:401
SbList::getLength
int getLength(void) const
Definition: SbList.h:145
SoIntersectingPrimitive
Struct with collision information.
Definition: SoIntersectionDetectionAction.h:31
SoIntersectionDetectionAction::isManipsEnabled
SbBool isManipsEnabled(void) const
Definition: SoIntersectionDetectionAction.cpp:450
SoPrimitiveVertex
The SoPrimitiveVertex class represents a single vertex of a generated primitive.
Definition: SoPrimitiveVertex.h:33
SoTypeList
The SoTypeList class is a container class for arrays of SoType objects.
Definition: SoTypeList.h:30
SbColor
The SbColor class contains the red, green and blue components which make up a color value.
Definition: SbColor.h:30
SoAction::getState
SoState * getState(void) const
Definition: SoAction.cpp:1028
SoIntersectionDetectionAction::getIntersectionEpsilon
static float getIntersectionEpsilon(void)
Definition: SoIntersectionDetectionAction.cpp:338
SbMatrix::multDirMatrix
void multDirMatrix(const SbVec3f &src, SbVec3f &dst) const
Definition: SbMatrix.cpp:1411
SoTranslation::translation
SoSFVec3f translation
Definition: SoTranslation.h:40
SoIntersectionDetectionAction::removeIntersectionCallback
virtual void removeIntersectionCallback(SoIntersectionCB *cb, void *closure=NULL)
Definition: SoIntersectionDetectionAction.cpp:610
SoBase::ref
void ref(void) const
Definition: SoBase.cpp:574
SbVec3f
The SbVec3f class is a 3 dimensional vector with floating point coordinates.
Definition: SbVec3f.h:37
SoGetBoundingBoxAction
The SoGetBoundingBoxAction class calculates bounding boxes for nodes and subgraphs.
Definition: SoGetBoundingBoxAction.h:34
SoIntersectionDetectionAction::apply
virtual void apply(SoNode *node)
Definition: SoIntersectionDetectionAction.cpp:625
SoCallbackAction::CONTINUE
@ CONTINUE
Definition: SoCallbackAction.h:85
SbString::sprintf
SbString & sprintf(const char *formatstr,...)
Definition: SbString.h:105
SoIntersectionDetectionAction::removeVisitationCallback
void removeVisitationCallback(SoType type, SoIntersectionVisitationCB *cb, void *closure)
Definition: SoIntersectionDetectionAction.cpp:542
SoCallbackAction
The SoCallbackAction class invokes callbacks at specific nodes.
Definition: SoCallbackAction.h:70
SoIntersectionDetectionAction::setIntersectionDetectionEpsilon
void setIntersectionDetectionEpsilon(float epsilon)
Definition: SoIntersectionDetectionAction.cpp:351
SbViewportRegion
The SbViewportRegion class is a viewport within a full window.
Definition: SbViewportRegion.h:31
SoBase::getTypeId
virtual SoType getTypeId(void) const =0
SbXfBox3f::getTransform
const SbMatrix & getTransform(void) const
Definition: SbXfBox3f.cpp:135
SoIntersectionDetectionAction::addVisitationCallback
void addVisitationCallback(SoType type, SoIntersectionVisitationCB *cb, void *closure)
Definition: SoIntersectionDetectionAction.cpp:526
SoIntersectionDetectionAction::isDraggersEnabled
SbBool isDraggersEnabled(void) const
Definition: SoIntersectionDetectionAction.cpp:482
SoAction::initClass
static void initClass(void)
Definition: SoAction.cpp:392
SoSeparator
The SoSeparator class is a state-preserving group node.
Definition: SoSeparator.h:34
SoBaseColor
The SoBaseColor class provides a node type for convenient setting of the base material color.
Definition: SoBaseColor.h:32
SbTime
The SbTime class instances represents time values.
Definition: SbTime.h:41
SbBox3f::transform
void transform(const SbMatrix &matrix)
Definition: SbBox3f.cpp:524
SoBase::isOfType
SbBool isOfType(SoType type) const
Definition: SoBase.cpp:710
SoIntersectionDetectionAction::isShapeInternalsEnabled
SbBool isShapeInternalsEnabled(void) const
Definition: SoIntersectionDetectionAction.cpp:512
SoNode
The SoNode class is the base class for nodes used in scene graphs.
Definition: SoNode.h:47
SoTranslation
The SoTranslation class is a node type for specifying geometry translations.
Definition: SoTranslation.h:31
SoCallbackAction::PRUNE
@ PRUNE
Definition: SoCallbackAction.h:85
SbTime::getTimeOfDay
static SbTime getTimeOfDay(void)
Definition: SbTime.cpp:139
SbBox3f::intersect
SbBool intersect(const SbVec3f &point) const
Definition: SbBox3f.cpp:224
SbXfBox3f::intersect
SbBool intersect(const SbVec3f &pt) const
Definition: SbXfBox3f.cpp:435
SbString::getString
const char * getString(void) const
Definition: SbString.h:71
SoIntersectionDetectionAction::setIntersectionEpsilon
static void setIntersectionEpsilon(float epsilon)
Definition: SoIntersectionDetectionAction.cpp:327
SoGetPrimitiveCountAction
The SoGetPrimitiveCountAction class counts the primitives in a scene.
Definition: SoGetPrimitiveCountAction.h:32
SoCoordinate3
The SoCoordinate3 class is a node for providing coordinates to shape nodes.
Definition: SoCoordinate3.h:30
SoCallbackAction::addPreCallback
void addPreCallback(const SoType type, SoCallbackActionCB *cb, void *userdata)
Definition: SoCallbackAction.cpp:466
SoMatrixTransform
The SoMatrixTransform class is a transformation node.
Definition: SoMatrixTransform.h:31
SoBase::setName
virtual void setName(const SbName &newname)
Definition: SoBase.cpp:763
SoText2::string
SoMFString string
Definition: SoText2.h:48

Copyright © 1998-2007 by Systems in Motion AS. All rights reserved.

Generated on Wed Jul 24 2019 for Coin by Doxygen. 1.8.17