Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 99 additions & 35 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,56 +1,120 @@
cmake_minimum_required(VERSION 3.12)
project(CollisionAlgorithm VERSION 0.1 LANGUAGES CXX)

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
find_package(Sofa.Simulation.Core REQUIRED)
find_package(Sofa.Component.StateContainer REQUIRED)
find_package(Sofa.Component.Constraint.Lagrangian.Solver REQUIRED)
find_package(Sofa.GL REQUIRED)

file(GLOB_RECURSE HEADER_FILES
"src/*.h"
"src/*.inl"
)
set(COLLISIONALGORITHM_SRC "src/${PROJECT_NAME}")

file(GLOB_RECURSE SOURCE_FILES
"src/*.cpp"
)
set(HEADER_FILES
${COLLISIONALGORITHM_SRC}/config.h.in
${COLLISIONALGORITHM_SRC}/initCollisionAlgorithm.h

file(GLOB_RECURSE SCENES_FILES
"scenes/*.scn"
"*.xml"
)
${COLLISIONALGORITHM_SRC}/BaseAABBBroadPhase.h
${COLLISIONALGORITHM_SRC}/BaseAlgorithm.h
${COLLISIONALGORITHM_SRC}/BaseElement.h
${COLLISIONALGORITHM_SRC}/BaseGeometry.h
${COLLISIONALGORITHM_SRC}/BaseOperation.h
${COLLISIONALGORITHM_SRC}/BaseProximity.h
${COLLISIONALGORITHM_SRC}/CollisionPipeline.h
${COLLISIONALGORITHM_SRC}/DataDetectionOutput.h
${COLLISIONALGORITHM_SRC}/ElementIterator.h
${COLLISIONALGORITHM_SRC}/InternalData.h

file(GLOB_RECURSE IGNORED_FILES
"ignored/*.h"
"ignored/*.inl"
"ignored/*.cpp"
)
${COLLISIONALGORITHM_SRC}/algorithm/Find2DClosestProximityAlgorithm.h
${COLLISIONALGORITHM_SRC}/algorithm/FindClosestProximityAlgorithm.h
${COLLISIONALGORITHM_SRC}/algorithm/InsertionAlgorithm.h

${COLLISIONALGORITHM_SRC}/broadphase/AABBBroadPhase.h
${COLLISIONALGORITHM_SRC}/broadphase/FullAABBBroadPhase.h

${COLLISIONALGORITHM_SRC}/elements/EdgeElement.h
${COLLISIONALGORITHM_SRC}/elements/PointElement.h
${COLLISIONALGORITHM_SRC}/elements/TetrahedronElement.h
${COLLISIONALGORITHM_SRC}/elements/TriangleElement.h

${COLLISIONALGORITHM_SRC}/filters/DistanceFilter.h

${COLLISIONALGORITHM_SRC}/geometry/EdgeGeometry.h
${COLLISIONALGORITHM_SRC}/geometry/PointGeometry.h
${COLLISIONALGORITHM_SRC}/geometry/SubsetGeometry.h
${COLLISIONALGORITHM_SRC}/geometry/TetrahedronGeometry.h
${COLLISIONALGORITHM_SRC}/geometry/TriangleGeometry.h

${COLLISIONALGORITHM_SRC}/operations/CreateCenterProximity.h
${COLLISIONALGORITHM_SRC}/operations/FindClosestProximity.h
${COLLISIONALGORITHM_SRC}/operations/Project.h
${COLLISIONALGORITHM_SRC}/operations/ContainsPoint.h
${COLLISIONALGORITHM_SRC}/operations/NeedleOperations.h

file(GLOB_RECURSE DEPRECATED_FILES
"deprecated/*.h"
"deprecated/*.inl"
"deprecated/*.cpp"
${COLLISIONALGORITHM_SRC}/proximity/EdgeProximity.h
${COLLISIONALGORITHM_SRC}/proximity/FixedProximity.h
${COLLISIONALGORITHM_SRC}/proximity/MechanicalProximity.h
${COLLISIONALGORITHM_SRC}/proximity/MultiProximity.h
${COLLISIONALGORITHM_SRC}/proximity/PointProximity.h
${COLLISIONALGORITHM_SRC}/proximity/TetrahedronProximity.h
${COLLISIONALGORITHM_SRC}/proximity/TriangleProximity.h

${COLLISIONALGORITHM_SRC}/toolbox/EdgeToolBox.h
${COLLISIONALGORITHM_SRC}/toolbox/PointToolBox.h
${COLLISIONALGORITHM_SRC}/toolbox/TetrahedronToolBox.h
${COLLISIONALGORITHM_SRC}/toolbox/TriangleToolBox.h
)

find_package(Sofa.Simulation.Core REQUIRED)
find_package(Sofa.Component.StateContainer REQUIRED)
find_package(Sofa.Component.Constraint.Lagrangian.Solver REQUIRED)
find_package(Sofa.GL REQUIRED)
set(SOURCE_FILES
${COLLISIONALGORITHM_SRC}/initCollisionAlgorithm.cpp

${COLLISIONALGORITHM_SRC}/CollisionPipeline.cpp

${COLLISIONALGORITHM_SRC}/algorithm/Find2DClosestProximityAlgorithm.cpp
${COLLISIONALGORITHM_SRC}/algorithm/FindClosestProximityAlgorithm.cpp
${COLLISIONALGORITHM_SRC}/algorithm/InsertionAlgorithm.cpp

${COLLISIONALGORITHM_SRC}/broadphase/AABBBroadPhase.cpp
${COLLISIONALGORITHM_SRC}/broadphase/FullAABBBroadPhase.cpp

include_directories("${CMAKE_CURRENT_SOURCE_DIR}/ignored")
#include_directories("${CMAKE_CURRENT_SOURCE_DIR}/deprecated")
${COLLISIONALGORITHM_SRC}/elements/EdgeElement.cpp
${COLLISIONALGORITHM_SRC}/elements/PointElement.cpp
${COLLISIONALGORITHM_SRC}/elements/TetrahedronElement.cpp
${COLLISIONALGORITHM_SRC}/elements/TriangleElement.cpp

${COLLISIONALGORITHM_SRC}/filters/DistanceFilter.cpp

${COLLISIONALGORITHM_SRC}/geometry/EdgeGeometry.cpp
${COLLISIONALGORITHM_SRC}/geometry/PointGeometry.cpp
${COLLISIONALGORITHM_SRC}/geometry/SubsetGeometry.cpp
${COLLISIONALGORITHM_SRC}/geometry/TetrahedronGeometry.cpp
${COLLISIONALGORITHM_SRC}/geometry/TriangleGeometry.cpp

${COLLISIONALGORITHM_SRC}/operations/CreateCenterProximity.cpp
${COLLISIONALGORITHM_SRC}/operations/FindClosestProximity.cpp
${COLLISIONALGORITHM_SRC}/operations/Project.cpp
${COLLISIONALGORITHM_SRC}/operations/ContainsPoint.cpp
${COLLISIONALGORITHM_SRC}/operations/NeedleOperations.cpp

${COLLISIONALGORITHM_SRC}/toolbox/EdgeToolBox.cpp
${COLLISIONALGORITHM_SRC}/toolbox/PointToolBox.cpp
${COLLISIONALGORITHM_SRC}/toolbox/TetrahedronToolBox.cpp
${COLLISIONALGORITHM_SRC}/toolbox/TriangleToolBox.cpp
)

set_source_files_properties(${IGNORED_FILES} PROPERTIES HEADER_FILE_ONLY TRUE)
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${HEADER_FILES} ${README_FILES})

add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${HEADER_FILES} ${SCENES_FILES} ${IGNORED_FILES} ${DEPRECATED_FILES} ${README_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-DPLUGIN_DATA_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/\"")
target_link_libraries(${PROJECT_NAME}
Sofa.Simulation.Core
Sofa.Component.StateContainer
Sofa.Component.Constraint.Lagrangian.Solver
Sofa.GL
)

## Install rules for the library and headers; CMake package configurations files
set(${PROJECT_NAME}_INCLUDE_DIRS "include/${PROJECT_NAME}")
target_include_directories(${PROJECT_NAME} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>")
target_include_directories(${PROJECT_NAME} PUBLIC "$<INSTALL_INTERFACE:${${PROJECT_NAME}_INCLUDE_DIRS}>")
sofa_create_package_with_targets(PACKAGE_NAME ${PROJECT_NAME} PACKAGE_VERSION 0.1 TARGETS ${PROJECT_NAME} INCLUDE_INSTALL_DIR ${${PROJECT_NAME}_INCLUDE_DIRS})
sofa_create_package_with_targets(
PACKAGE_NAME ${PROJECT_NAME}
PACKAGE_VERSION ${PROJECT_VERSION}
TARGETS ${PROJECT_NAME} AUTO_SET_TARGET_PROPERTIES
INCLUDE_SOURCE_DIR "src"
INCLUDE_INSTALL_DIR ${PROJECT_NAME}
EXAMPLE_INSTALL_DIR "scenes"
RELOCATABLE "plugins"
)
2 changes: 2 additions & 0 deletions CollisionAlgorithmConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
@PACKAGE_INIT@

find_package(Sofa.Simulation.Core QUIET REQUIRED)
find_package(Sofa.Component.StateContainer QUIET REQUIRED)
find_package(Sofa.Component.Constraint.Lagrangian.Solver QUIET REQUIRED)
find_package(Sofa.GL QUIET REQUIRED)

if(NOT TARGET @PROJECT_NAME@)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
#pragma once

#include <sofa/helper/AdvancedTimer.h>
#include <sofa/collisionAlgorithm/BaseGeometry.h>
#include <sofa/collisionAlgorithm/BaseAlgorithm.h>
#include <sofa/collisionAlgorithm/operations/Project.h>
#include <sofa/collisionAlgorithm/BaseElement.h>
#include <CollisionAlgorithm/BaseGeometry.h>
#include <CollisionAlgorithm/BaseAlgorithm.h>
#include <CollisionAlgorithm/operations/Project.h>
#include <CollisionAlgorithm/BaseElement.h>
#include <thread>

namespace sofa::collisionAlgorithm {
namespace sofa::collisionalgorithm {

class BaseAABBBroadPhase : public BaseGeometry::BroadPhase {
public:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#pragma once

#include <sofa/collisionAlgorithm/BaseGeometry.h>
#include <CollisionAlgorithm/BaseGeometry.h>
#include <sofa/core/collision/Pipeline.h>
#include <sofa/collisionAlgorithm/DataDetectionOutput.h>
#include <sofa/collisionAlgorithm/CollisionPipeline.h>
#include <CollisionAlgorithm/DataDetectionOutput.h>
#include <CollisionAlgorithm/CollisionPipeline.h>

namespace sofa::collisionAlgorithm {
namespace sofa::collisionalgorithm {

/*!
* \class BaseAlgorithm
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#pragma once

#include <sofa/collisionAlgorithm/BaseProximity.h>
#include <CollisionAlgorithm/BaseProximity.h>
#include <sofa/core/visual/VisualParams.h>

namespace sofa::collisionAlgorithm {
namespace sofa::collisionalgorithm {

class PointElement;
class EdgeElement;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
#pragma once

#include <sofa/collisionAlgorithm/CollisionPipeline.h>
#include <sofa/collisionAlgorithm/BaseElement.h>
#include <sofa/collisionAlgorithm/BaseProximity.h>
#include <sofa/collisionAlgorithm/ElementIterator.h>
#include <CollisionAlgorithm/CollisionPipeline.h>
#include <CollisionAlgorithm/BaseElement.h>
#include <CollisionAlgorithm/BaseProximity.h>
#include <CollisionAlgorithm/ElementIterator.h>
#include <sofa/gl/gl.h>
#include <sofa/helper/AdvancedTimer.h>
#include <sofa/collisionAlgorithm/elements/PointElement.h>
#include <sofa/collisionAlgorithm/elements/EdgeElement.h>
#include <sofa/collisionAlgorithm/elements/TriangleElement.h>
#include <sofa/collisionAlgorithm/elements/TetrahedronElement.h>
#include <sofa/collisionAlgorithm/InternalData.h>
#include <CollisionAlgorithm/elements/PointElement.h>
#include <CollisionAlgorithm/elements/EdgeElement.h>
#include <CollisionAlgorithm/elements/TriangleElement.h>
#include <CollisionAlgorithm/elements/TetrahedronElement.h>
#include <CollisionAlgorithm/InternalData.h>


namespace sofa ::collisionAlgorithm {
namespace sofa ::collisionalgorithm {


/*!
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#pragma once

#include <sofa/collisionAlgorithm/BaseGeometry.h>
#include <CollisionAlgorithm/BaseGeometry.h>
#include <sofa/helper/NameDecoder.h>
#include <memory>

namespace sofa::collisionAlgorithm::Operations {
namespace sofa::collisionalgorithm::Operations {

template<class A,class B>
class REAL_TYPE_CHECK {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include <sofa/core/topology/Topology.h>
#include <sofa/type/Vec.h>

namespace sofa::collisionAlgorithm {
namespace sofa::collisionalgorithm {

/*!
* \brief The BaseProximity class is the basic abstract proximity class
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include <sofa/collisionAlgorithm/CollisionPipeline.h>
#include <CollisionAlgorithm/CollisionPipeline.h>
#include <sofa/core/ObjectFactory.h>

namespace sofa::collisionAlgorithm
namespace sofa::collisionalgorithm
{
void registerCollisionLoop(sofa::core::ObjectFactory* factory)
{
Expand All @@ -10,4 +10,4 @@ void registerCollisionLoop(sofa::core::ObjectFactory* factory)
"A collision pipeline customized for proximity detection during needle insertion")
.add<CollisionLoop>());
}
} // namespace sofa::collisionAlgorithm
} // namespace sofa::collisionalgorithm
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
#pragma once

//#include <sofa/collisionAlgorithm/BaseOperation.h>
//#include <CollisionAlgorithm/BaseOperation.h>
#include <sofa/simulation/CollisionBeginEvent.h>
#include <sofa/collisionAlgorithm/BaseElement.h>
#include <sofa/collisionAlgorithm/BaseProximity.h>
#include <CollisionAlgorithm/BaseElement.h>
#include <CollisionAlgorithm/BaseProximity.h>
#include <sofa/core/BehaviorModel.h>
#include <sofa/core/visual/VisualParams.h>
#include <sofa/core/objectmodel/DataCallback.h>
#include <sofa/simulation/Visitor.h>
#include <sofa/gl/gl.h>
#include <sofa/simulation/AnimateBeginEvent.h>
#include <sofa/core/topology/BaseMeshTopology.h>
#include <sofa/collisionAlgorithm/BaseElement.h>
#include <CollisionAlgorithm/BaseElement.h>
#include <sofa/simulation/Node.h>
#include <sofa/helper/AdvancedTimer.h>

namespace sofa ::collisionAlgorithm {
namespace sofa ::collisionalgorithm {

class CollisionComponent : public core::objectmodel::BaseObject {
public:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#pragma once

#include <sofa/collisionAlgorithm/BaseGeometry.h>
#include <CollisionAlgorithm/BaseGeometry.h>

namespace sofa
{

namespace collisionAlgorithm
namespace collisionalgorithm
{

template<class FIRST = BaseProximity,class SECOND = BaseProximity>
Expand Down Expand Up @@ -130,7 +130,7 @@ struct DetectionOutputTypeInfo
};

template<>
struct DataTypeInfo< collisionAlgorithm::DetectionOutput<collisionAlgorithm::BaseProximity::SPtr, collisionAlgorithm::BaseProximity::SPtr> > : public DetectionOutputTypeInfo< collisionAlgorithm::DetectionOutput<collisionAlgorithm::BaseProximity::SPtr, collisionAlgorithm::BaseProximity::SPtr> >
struct DataTypeInfo< collisionalgorithm::DetectionOutput<collisionalgorithm::BaseProximity::SPtr, collisionalgorithm::BaseProximity::SPtr> > : public DetectionOutputTypeInfo< collisionalgorithm::DetectionOutput<collisionalgorithm::BaseProximity::SPtr, collisionalgorithm::BaseProximity::SPtr> >
{
static std::string name() { std::ostringstream o; o << "DetectionOutput"; return o.str(); }
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#pragma once

#include <sofa/collisionAlgorithm/BaseProximity.h>
#include <sofa/collisionAlgorithm/BaseElement.h>
#include <CollisionAlgorithm/BaseProximity.h>
#include <CollisionAlgorithm/BaseElement.h>

namespace sofa::collisionAlgorithm {
namespace sofa::collisionalgorithm {

class BaseGeometry;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
#pragma once

#include <sofa/collisionAlgorithm/CollisionPipeline.h>
#include <sofa/collisionAlgorithm/BaseElement.h>
#include <sofa/collisionAlgorithm/BaseProximity.h>
#include <sofa/collisionAlgorithm/ElementIterator.h>
#include <CollisionAlgorithm/CollisionPipeline.h>
#include <CollisionAlgorithm/BaseElement.h>
#include <CollisionAlgorithm/BaseProximity.h>
#include <CollisionAlgorithm/ElementIterator.h>
#include <sofa/gl/gl.h>
#include <sofa/helper/AdvancedTimer.h>
#include <sofa/collisionAlgorithm/elements/PointElement.h>
#include <sofa/collisionAlgorithm/elements/EdgeElement.h>
#include <sofa/collisionAlgorithm/elements/TriangleElement.h>
#include <sofa/collisionAlgorithm/elements/TetrahedronElement.h>
#include <CollisionAlgorithm/elements/PointElement.h>
#include <CollisionAlgorithm/elements/EdgeElement.h>
#include <CollisionAlgorithm/elements/TriangleElement.h>
#include <CollisionAlgorithm/elements/TetrahedronElement.h>

namespace sofa ::collisionAlgorithm {
namespace sofa ::collisionalgorithm {


class InternalDataContainer {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include <sofa/collisionAlgorithm/algorithm/Find2DClosestProximityAlgorithm.h>
#include <CollisionAlgorithm/algorithm/Find2DClosestProximityAlgorithm.h>
#include <sofa/core/ObjectFactory.h>

namespace sofa::collisionAlgorithm
namespace sofa::collisionalgorithm
{
void registerFind2DClosestProximityAlgorithm(sofa::core::ObjectFactory* factory)
{
Expand All @@ -10,4 +10,4 @@ void registerFind2DClosestProximityAlgorithm(sofa::core::ObjectFactory* factory)
"An algorithm to find the closest proximity between two BaseGeometry types in 2D")
.add<Find2DClosestProximityAlgorithm>());
}
} // namespace sofa::collisionAlgorithm
} // namespace sofa::collisionalgorithm
Loading
Loading