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:
		| @@ -147,14 +147,7 @@ namespace PolyVox | ||||
| 		}; | ||||
|  | ||||
| 	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()); | ||||
| #endif | ||||
|  | ||||
|  | ||||
| 		void execute();		 | ||||
|  | ||||
| @@ -195,8 +188,8 @@ namespace PolyVox | ||||
| 		typename VolumeType::VoxelType m_tBorderValue; | ||||
| 	}; | ||||
|  | ||||
| 	template<typename VolumeType, typename IsQuadNeeded> | ||||
| 	Mesh<CubicVertex<typename VolumeType::VoxelType> > extractCubicMesh(VolumeType* volData, Region region, WrapMode eWrapMode, typename VolumeType::VoxelType tBorderValue, bool bMergeQuads, IsQuadNeeded isQuadNeeded) | ||||
| 	template<typename VolumeType, typename IsQuadNeeded = DefaultIsQuadNeeded<typename VolumeType::VoxelType> > | ||||
| 	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; | ||||
| 		MeshType result; | ||||
| @@ -204,19 +197,6 @@ namespace PolyVox | ||||
| 		extractor.execute(); | ||||
| 		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" | ||||
|   | ||||
| @@ -151,13 +151,7 @@ namespace PolyVox | ||||
| 	class MarchingCubesSurfaceExtractor | ||||
| 	{ | ||||
| 	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()); | ||||
| #endif | ||||
|  | ||||
| 		void execute(); | ||||
|  | ||||
| @@ -324,27 +318,14 @@ namespace PolyVox | ||||
| 		typename Controller::DensityType m_tThreshold; | ||||
| 	}; | ||||
|  | ||||
| 	template< typename VolumeType, typename Controller> | ||||
| 	Mesh<MarchingCubesVertex<typename VolumeType::VoxelType> > extractMarchingCubesMesh(VolumeType* volData, Region region, WrapMode eWrapMode, typename VolumeType::VoxelType tBorderValue, Controller controller) | ||||
| 	template< typename VolumeType, typename Controller = DefaultMarchingCubesController<typename VolumeType::VoxelType> > | ||||
| 	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; | ||||
| 		MarchingCubesSurfaceExtractor<VolumeType, Controller> extractor(volData, region, &result, eWrapMode, tBorderValue, controller); | ||||
| 		extractor.execute(); | ||||
| 		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" | ||||
|   | ||||
| @@ -142,7 +142,8 @@ namespace PolyVox | ||||
| 	//////////////////////////////////////////////////////////////////////////////// | ||||
| 	// Mesh | ||||
| 	//////////////////////////////////////////////////////////////////////////////// | ||||
| 	template <typename VertexType, typename IndexType = uint32_t> class Mesh; | ||||
| 	typedef uint32_t DefaultIndexType; | ||||
| 	template <typename VertexType, typename IndexType = DefaultIndexType> class Mesh; | ||||
|  | ||||
| 	//////////////////////////////////////////////////////////////////////////////// | ||||
| 	// Pager | ||||
|   | ||||
		Reference in New Issue
	
	Block a user