From 0edd90c4777bbf6897a2683e317129102c033927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Sat, 9 Nov 2013 19:13:28 +0100 Subject: [PATCH] WIP on fluid medium traversal --- src/render/software/FluidMediumInterface.cpp | 1 + src/render/software/FluidMediumInterface.h | 27 +++++++++++++++++++ .../{global => }/FluidMediumTraversal.cpp | 0 .../{global => }/FluidMediumTraversal.h | 3 ++- src/render/software/SoftwareRenderer.cpp | 2 +- src/render/software/software.pro | 6 +++-- 6 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 src/render/software/FluidMediumInterface.cpp create mode 100644 src/render/software/FluidMediumInterface.h rename src/render/software/{global => }/FluidMediumTraversal.cpp (100%) rename src/render/software/{global => }/FluidMediumTraversal.h (90%) diff --git a/src/render/software/FluidMediumInterface.cpp b/src/render/software/FluidMediumInterface.cpp new file mode 100644 index 0000000..aa68a53 --- /dev/null +++ b/src/render/software/FluidMediumInterface.cpp @@ -0,0 +1 @@ +#include "FluidMediumInterface.h" diff --git a/src/render/software/FluidMediumInterface.h b/src/render/software/FluidMediumInterface.h new file mode 100644 index 0000000..7dc297e --- /dev/null +++ b/src/render/software/FluidMediumInterface.h @@ -0,0 +1,27 @@ +#ifndef FLUIDMEDIUMINTERFACE_H +#define FLUIDMEDIUMINTERFACE_H + +#include "software_global.h" + +namespace paysages { +namespace basics { + class SpaceCoordinate; +} +namespace software { + +/*! + * \brief Interface to a fluid medium compatible class. + */ +class SOFTWARESHARED_EXPORT FluidMediumInterface +{ +public: + /*! + * Return true if the object may interfere with the fluid medium on the given segment. + */ + virtual bool mayInfluence(const SpaceCoordinate& start, const SpaceCoordinate& end) const = 0; +}; + +} +} + +#endif // FLUIDMEDIUMINTERFACE_H diff --git a/src/render/software/global/FluidMediumTraversal.cpp b/src/render/software/FluidMediumTraversal.cpp similarity index 100% rename from src/render/software/global/FluidMediumTraversal.cpp rename to src/render/software/FluidMediumTraversal.cpp diff --git a/src/render/software/global/FluidMediumTraversal.h b/src/render/software/FluidMediumTraversal.h similarity index 90% rename from src/render/software/global/FluidMediumTraversal.h rename to src/render/software/FluidMediumTraversal.h index 6ef2ca9..7341f57 100644 --- a/src/render/software/global/FluidMediumTraversal.h +++ b/src/render/software/FluidMediumTraversal.h @@ -24,10 +24,11 @@ class SOFTWARESHARED_EXPORT FluidMediumTraversal { public: FluidMediumTraversal(SoftwareRenderer *renderer); + virtual ~FluidMediumTraversal(); void setCollector(FluidMediumCollector *collector); - virtual void getTraversedMedia(std::vector &media); + virtual void getTraversedMedia(std::vector &media, const SpaceCoordinates &start, const SpaceCoordinates &end); void collectHalfLine(const SpaceCoordinates &start, const Vector3 &direction); void collectSegment(const SpaceCoordinates &start, const SpaceCoordinates &end); diff --git a/src/render/software/SoftwareRenderer.cpp b/src/render/software/SoftwareRenderer.cpp index b246a4c..991240a 100644 --- a/src/render/software/SoftwareRenderer.cpp +++ b/src/render/software/SoftwareRenderer.cpp @@ -1,6 +1,6 @@ #include "SoftwareRenderer.h" -#include "global/FluidMediumTraversal.h" +#include "FluidMediumTraversal.h" SoftwareRenderer::SoftwareRenderer(Scenery* scenery): scenery(scenery) diff --git a/src/render/software/software.pro b/src/render/software/software.pro index 9305e18..1356e79 100644 --- a/src/render/software/software.pro +++ b/src/render/software/software.pro @@ -14,11 +14,13 @@ DEFINES += SOFTWARE_LIBRARY include(../../common.pri) SOURCES += SoftwareRenderer.cpp \ - global/FluidMediumTraversal.cpp + FluidMediumTraversal.cpp \ + FluidMediumInterface.cpp HEADERS += SoftwareRenderer.h\ software_global.h \ - global/FluidMediumTraversal.h + FluidMediumTraversal.h \ + FluidMediumInterface.h unix:!symbian { maemo5 {