Simplified/removed multiple versions of functions, as we're now moving to VS2013 which supports default parameters for template functions.
This commit is contained in:
parent
37757da98c
commit
52dd0189d5
@ -147,14 +147,7 @@ namespace PolyVox
|
|||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// This is a bit ugly - it seems that the C++03 syntax is different from the C++11 syntax? See this thread: http://stackoverflow.com/questions/6076015/typename-outside-of-template
|
|
||||||
// Long term we should probably come back to this and if the #ifdef is still needed then maybe it should check for C++11 mode instead of MSVC?
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
CubicSurfaceExtractor(VolumeType* volData, Region region, MeshType* result, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = VolumeType::VoxelType(), bool bMergeQuads = true, IsQuadNeeded isQuadNeeded = IsQuadNeeded());
|
|
||||||
#else
|
|
||||||
CubicSurfaceExtractor(VolumeType* volData, Region region, MeshType* result, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true, IsQuadNeeded isQuadNeeded = IsQuadNeeded());
|
CubicSurfaceExtractor(VolumeType* volData, Region region, MeshType* result, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true, IsQuadNeeded isQuadNeeded = IsQuadNeeded());
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void execute();
|
void execute();
|
||||||
|
|
||||||
@ -195,8 +188,8 @@ namespace PolyVox
|
|||||||
typename VolumeType::VoxelType m_tBorderValue;
|
typename VolumeType::VoxelType m_tBorderValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename VolumeType, typename IsQuadNeeded>
|
template<typename VolumeType, typename IsQuadNeeded = DefaultIsQuadNeeded<typename VolumeType::VoxelType> >
|
||||||
Mesh<CubicVertex<typename VolumeType::VoxelType> > extractCubicMesh(VolumeType* volData, Region region, WrapMode eWrapMode, typename VolumeType::VoxelType tBorderValue, bool bMergeQuads, IsQuadNeeded isQuadNeeded)
|
Mesh<CubicVertex<typename VolumeType::VoxelType> > extractCubicMesh(VolumeType* volData, Region region, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true, IsQuadNeeded isQuadNeeded = IsQuadNeeded())
|
||||||
{
|
{
|
||||||
typedef Mesh<CubicVertex<typename VolumeType::VoxelType> > MeshType;
|
typedef Mesh<CubicVertex<typename VolumeType::VoxelType> > MeshType;
|
||||||
MeshType result;
|
MeshType result;
|
||||||
@ -204,19 +197,6 @@ namespace PolyVox
|
|||||||
extractor.execute();
|
extractor.execute();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename VolumeType>
|
|
||||||
// This is a bit ugly - it seems that the C++03 syntax is different from the C++11 syntax? See this thread: http://stackoverflow.com/questions/6076015/typename-outside-of-template
|
|
||||||
// Long term we should probably come back to this and if the #ifdef is still needed then maybe it should check for C++11 mode instead of MSVC?
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
Mesh<CubicVertex<typename VolumeType::VoxelType> > extractCubicMesh(VolumeType* volData, Region region, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = VolumeType::VoxelType(), bool bMergeQuads = true)
|
|
||||||
#else
|
|
||||||
Mesh<CubicVertex<typename VolumeType::VoxelType> > extractCubicMesh(VolumeType* volData, Region region, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
DefaultIsQuadNeeded<typename VolumeType::VoxelType> isQuadNeeded;
|
|
||||||
return extractCubicMesh<VolumeType, DefaultIsQuadNeeded<typename VolumeType::VoxelType> >(volData, region, eWrapMode, tBorderValue, bMergeQuads, isQuadNeeded);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "PolyVoxCore/CubicSurfaceExtractor.inl"
|
#include "PolyVoxCore/CubicSurfaceExtractor.inl"
|
||||||
|
@ -151,13 +151,7 @@ namespace PolyVox
|
|||||||
class MarchingCubesSurfaceExtractor
|
class MarchingCubesSurfaceExtractor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// This is a bit ugly - it seems that the C++03 syntax is different from the C++11 syntax? See this thread: http://stackoverflow.com/questions/6076015/typename-outside-of-template
|
|
||||||
// Long term we should probably come back to this and if the #ifdef is still needed then maybe it should check for C++11 mode instead of MSVC?
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
MarchingCubesSurfaceExtractor(VolumeType* volData, Region region, Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> >* result, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = VolumeType::VoxelType(), Controller controller = Controller());
|
|
||||||
#else
|
|
||||||
MarchingCubesSurfaceExtractor(VolumeType* volData, Region region, Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> >* result, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), Controller controller = Controller());
|
MarchingCubesSurfaceExtractor(VolumeType* volData, Region region, Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> >* result, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), Controller controller = Controller());
|
||||||
#endif
|
|
||||||
|
|
||||||
void execute();
|
void execute();
|
||||||
|
|
||||||
@ -324,27 +318,14 @@ namespace PolyVox
|
|||||||
typename Controller::DensityType m_tThreshold;
|
typename Controller::DensityType m_tThreshold;
|
||||||
};
|
};
|
||||||
|
|
||||||
template< typename VolumeType, typename Controller>
|
template< typename VolumeType, typename Controller = DefaultMarchingCubesController<typename VolumeType::VoxelType> >
|
||||||
Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> > extractMarchingCubesMesh(VolumeType* volData, Region region, WrapMode eWrapMode, typename VolumeType::VoxelType tBorderValue, Controller controller)
|
Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> > extractMarchingCubesMesh(VolumeType* volData, Region region, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), Controller controller = Controller())
|
||||||
{
|
{
|
||||||
Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> > result;
|
Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> > result;
|
||||||
MarchingCubesSurfaceExtractor<VolumeType, Controller> extractor(volData, region, &result, eWrapMode, tBorderValue, controller);
|
MarchingCubesSurfaceExtractor<VolumeType, Controller> extractor(volData, region, &result, eWrapMode, tBorderValue, controller);
|
||||||
extractor.execute();
|
extractor.execute();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename VolumeType>
|
|
||||||
// This is a bit ugly - it seems that the C++03 syntax is different from the C++11 syntax? See this thread: http://stackoverflow.com/questions/6076015/typename-outside-of-template
|
|
||||||
// Long term we should probably come back to this and if the #ifdef is still needed then maybe it should check for C++11 mode instead of MSVC?
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> > extractMarchingCubesMesh(VolumeType* volData, Region region, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = VolumeType::VoxelType())
|
|
||||||
#else
|
|
||||||
Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> > extractMarchingCubesMesh(VolumeType* volData, Region region, WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType())
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
DefaultMarchingCubesController<typename VolumeType::VoxelType> controller;
|
|
||||||
return extractMarchingCubesMesh(volData, region, eWrapMode, tBorderValue, controller);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "PolyVoxCore/MarchingCubesSurfaceExtractor.inl"
|
#include "PolyVoxCore/MarchingCubesSurfaceExtractor.inl"
|
||||||
|
@ -142,7 +142,8 @@ namespace PolyVox
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Mesh
|
// Mesh
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
template <typename VertexType, typename IndexType = uint32_t> class Mesh;
|
typedef uint32_t DefaultIndexType;
|
||||||
|
template <typename VertexType, typename IndexType = DefaultIndexType> class Mesh;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Pager
|
// Pager
|
||||||
|
Loading…
x
Reference in New Issue
Block a user