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) by Kongsberg Oil & Gas Technologies.
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 Kongsberg Oil & Gas Technologies
18 * about acquiring a Coin Professional Edition License.
19 *
20 * See http://www.coin3d.org/ for more information.
21 *
22 * Kongsberg Oil & Gas Technologies, Bygdoy Alle 5, 0257 Oslo, NORWAY.
23 * http://www.sim.no/ sales@sim.no coin-support@coin3d.org
24 *
25\**************************************************************************/
26
27#include <Inventor/tools/SbPimplPtr.h>
28#include <Inventor/actions/SoSubAction.h>
29#include <Inventor/actions/SoAction.h>
30#include <Inventor/actions/SoCallbackAction.h>
31
33 SoPath * path;
34 enum PrimitiveType {
35 SEGMENT = 2,
36 LINE_SEGMENT = 2,
37 TRIANGLE = 3
38 } type;
39 SbVec3f vertex[3];
40 SbVec3f xf_vertex[3];
41};
42
43class COIN_DLL_API SoIntersectionDetectionAction : public SoAction {
44 typedef SoAction hinherited;
45 SO_ACTION_HEADER(SoIntersectionDetectionAction);
46public:
47 static void initClass(void);
50
51 enum Resp {
52 NEXT_PRIMITIVE,
53 NEXT_SHAPE,
54 ABORT
55 };
56
57 typedef SoCallbackAction::Response SoIntersectionVisitationCB(void * closure, const SoPath * where);
58 typedef SbBool SoIntersectionFilterCB(void * closure, const SoPath * p1, const SoPath * p2);
59 typedef Resp SoIntersectionCB(void * closure, const SoIntersectingPrimitive * p1, const SoIntersectingPrimitive * p2);
60
61 void setIntersectionDetectionEpsilon(float epsilon);
62 float getIntersectionDetectionEpsilon(void) const;
63
64 static void setIntersectionEpsilon(float epsilon);
65 static float getIntersectionEpsilon(void);
66
67 void setTypeEnabled(SoType type, SbBool enable);
68 SbBool isTypeEnabled(SoType type, SbBool checkgroups = FALSE) const;
69
70 void setManipsEnabled(SbBool enable);
71 SbBool isManipsEnabled(void) const;
72
73 void setDraggersEnabled(SbBool enable);
74 SbBool isDraggersEnabled(void) const;
75
76 void setShapeInternalsEnabled(SbBool enable);
77 SbBool isShapeInternalsEnabled(void) const;
78
79 void addVisitationCallback(SoType type, SoIntersectionVisitationCB * cb, void * closure);
80 void removeVisitationCallback(SoType type, SoIntersectionVisitationCB * cb, void * closure);
81
82 virtual void apply(SoNode * node);
83 virtual void apply(SoPath * path);
84 virtual void apply(const SoPathList & paths, SbBool obeysRules = FALSE);
85
86 virtual void setFilterCallback(SoIntersectionFilterCB * cb, void * closure = NULL);
87 virtual void addIntersectionCallback(SoIntersectionCB * cb, void * closure = NULL);
88 virtual void removeIntersectionCallback(SoIntersectionCB * cb, void * closure = NULL);
89
90private:
91 class PImpl;
92 SbPimplPtr<PImpl> pimpl;
93
95 SoIntersectionDetectionAction & operator = (const SoIntersectionDetectionAction & rhs); // N/A
96
97};
98
99#endif // !COIN_SOINTERSECTIONDETECTIONACTION_H
The SbVec3f class is a 3 dimensional vector with floating point coordinates.
Definition SbVec3f.h:40
The SoAction class is the base class for all traversal actions.
Definition SoAction.h:68
static void initClass(void)
Definition SoAction.cpp:366
virtual void apply(SoNode *root)
Definition SoAction.cpp:459
Response
Definition SoCallbackAction.h:85
The SoIntersectionDetectionAction class is for detecting intersecting primitives in a scene.
Definition SoIntersectionDetectionAction.h:43
The SoNode class is the base class for nodes used in scene graphs.
Definition SoNode.h:47
The SoPathList class is a container for pointers to SoPath objects.
Definition SoPathList.h:31
The SoPath class is a container class for traversal path descriptions.
Definition SoPath.h:43
The SoType class is the basis for the run-time type system in Coin.
Definition SoType.h:50
Struct with collision information.
Definition SoIntersectionDetectionAction.h:32

Copyright © 1998-2010 by Kongsberg Oil & Gas Technologies. All rights reserved.

Generated on Wed Jul 17 2024 for Coin by Doxygen 1.12.0.