Add a EXTRACTORS macro to automate the generation of the extractors
Like with VOLUMETYPES it is centralising the definitions of the volume and voxel types.
This commit is contained in:
		| @@ -8,4 +8,4 @@ | |||||||
| %include "SimpleVolume.h" | %include "SimpleVolume.h" | ||||||
| %include "MarchingCubesSurfaceExtractor.h" | %include "MarchingCubesSurfaceExtractor.h" | ||||||
|  |  | ||||||
| %template(SurfaceExtractorSimpleVolumeDensity8) PolyVox::MarchingCubesSurfaceExtractor<PolyVox::SimpleVolume<PolyVox::Density8> >; | EXTRACTORS(MarchingCubesSurfaceExtractor) | ||||||
|   | |||||||
| @@ -34,6 +34,22 @@ const char* __str__() { | |||||||
| %template(class ## MaterialDensityPair88) PolyVox::class<PolyVox::MaterialDensityPair88>; | %template(class ## MaterialDensityPair88) PolyVox::class<PolyVox::MaterialDensityPair88>; | ||||||
| %enddef | %enddef | ||||||
|  |  | ||||||
|  | //Template based on voxel type | ||||||
|  | %define EXTRACTOR(class, volumetype) | ||||||
|  | %template(class ## volumetype ## Density8) PolyVox::class<PolyVox::volumetype<PolyVox::Density8> >; | ||||||
|  | //%template(class ## volumetype ## Material8) PolyVox::class<PolyVox::volumetype<PolyVox::Material8> >; | ||||||
|  | //%template(class ## volumetype ## Material16) PolyVox::class<PolyVox::volumetype<PolyVox::Material16> >; | ||||||
|  | %template(class ## volumetype ## MaterialDensityPair44) PolyVox::class<PolyVox::volumetype<PolyVox::MaterialDensityPair44> >; | ||||||
|  | %template(class ## volumetype ## MaterialDensityPair88) PolyVox::class<PolyVox::volumetype<PolyVox::MaterialDensityPair88> >; | ||||||
|  | %enddef | ||||||
|  |  | ||||||
|  | //Template based on volume type | ||||||
|  | %define EXTRACTORS(shortname) | ||||||
|  | EXTRACTOR(shortname, SimpleVolume) | ||||||
|  | EXTRACTOR(shortname, RawVolume) | ||||||
|  | EXTRACTOR(shortname, LargeVolume) | ||||||
|  | %enddef | ||||||
|  |  | ||||||
| %feature("autodoc", "1"); | %feature("autodoc", "1"); | ||||||
|  |  | ||||||
| //This will rename "operator=" to "assign" since Python doesn't have assignment | //This will rename "operator=" to "assign" since Python doesn't have assignment | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ class TestSurfaceExtractor(unittest.TestCase): | |||||||
| 		#Set one single voxel to have a reasonably high density | 		#Set one single voxel to have a reasonably high density | ||||||
| 		vol.setVoxelAt(PolyVoxCore.Vector3DInt32(5, 5, 5), PolyVoxCore.Density8(200)) | 		vol.setVoxelAt(PolyVoxCore.Vector3DInt32(5, 5, 5), PolyVoxCore.Density8(200)) | ||||||
| 		self.mesh = PolyVoxCore.SurfaceMeshPositionMaterialNormal() | 		self.mesh = PolyVoxCore.SurfaceMeshPositionMaterialNormal() | ||||||
| 		extractor = PolyVoxCore.SurfaceExtractorSimpleVolumeDensity8(vol, r, self.mesh) | 		extractor = PolyVoxCore.MarchingCubesSurfaceExtractorSimpleVolumeDensity8(vol, r, self.mesh) | ||||||
| 		extractor.execute() | 		extractor.execute() | ||||||
| 	 | 	 | ||||||
| 	def test_num_vertices(self): | 	def test_num_vertices(self): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user