GCC Code Coverage Report


Directory: ./
File: include/coal/broadphase/broadphase_callbacks.h
Date: 2025-04-01 09:23:31
Exec Total Coverage
Lines: 6 6 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 /*
2 * Software License Agreement (BSD License)
3 *
4 * Copyright (c) 2022, INRIA
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 * * Neither the name of the copyright holder nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 */
34
35 /** @author Justin Carpentier (justin.carpentier@inria.fr) */
36
37 #ifndef COAL_BROADPHASE_BROAD_PHASE_CALLBACKS_H
38 #define COAL_BROADPHASE_BROAD_PHASE_CALLBACKS_H
39
40 #include "coal/fwd.hh"
41 #include "coal/data_types.h"
42
43 namespace coal {
44
45 /// @brief Base callback class for collision queries.
46 /// This class can be supersed by child classes to provide desired behaviors
47 /// according to the application (e.g, only listing the potential
48 /// CollisionObjects in collision).
49 struct COAL_DLLAPI CollisionCallBackBase {
50 /// @brief Initialization of the callback before running the collision
51 /// broadphase manager.
52 8 virtual void init() {};
53
54 /// @brief Collision evaluation between two objects in collision.
55 /// This callback will cause the broadphase evaluation to stop if it
56 /// returns true.
57 ///
58 /// @param[in] o1 Collision object #1.
59 /// @param[in] o2 Collision object #2.
60 virtual bool collide(CollisionObject* o1, CollisionObject* o2) = 0;
61
62 /// @brief Functor call associated to the collide operation.
63 1222323 virtual bool operator()(CollisionObject* o1, CollisionObject* o2) {
64 1222323 return collide(o1, o2);
65 }
66 };
67
68 /// @brief Base callback class for distance queries.
69 /// This class can be supersed by child classes to provide desired behaviors
70 /// according to the application (e.g, only listing the potential
71 /// CollisionObjects in collision).
72 struct COAL_DLLAPI DistanceCallBackBase {
73 /// @brief Initialization of the callback before running the collision
74 /// broadphase manager.
75 8 virtual void init() {};
76
77 /// @brief Distance evaluation between two objects in collision.
78 /// This callback will cause the broadphase evaluation to stop if it
79 /// returns true.
80 ///
81 /// @param[in] o1 Collision object #1.
82 /// @param[in] o2 Collision object #2.
83 /// @param[out] dist Distance between the two collision geometries.
84 virtual bool distance(CollisionObject* o1, CollisionObject* o2,
85 Scalar& dist) = 0;
86
87 /// @brief Functor call associated to the distance operation.
88 33020 virtual bool operator()(CollisionObject* o1, CollisionObject* o2,
89 Scalar& dist) {
90 33020 return distance(o1, o2, dist);
91 }
92 };
93
94 } // namespace coal
95
96 #endif // COAL_BROADPHASE_BROAD_PHASE_CALLBACKS_H
97