Browse Source

Added MeshTools::AbstractIndexTool, operating only on indices.

Doesn't need to be templated and thus leads to smaller generated code
size.
pull/279/head
Vladimír Vondruš 15 years ago
parent
commit
37fa078ead
  1. 2
      src/MeshBuilder.h
  2. 22
      src/MeshTools/AbstractTool.h

2
src/MeshBuilder.h

@ -32,6 +32,7 @@ namespace Magnum {
namespace MeshTools {
template<class Vertex> class AbstractTool;
class AbstractIndexTool;
}
/**
@ -46,6 +47,7 @@ MeshTools namespace.
*/
template<class Vertex> class MeshBuilder {
friend class MeshTools::AbstractTool<Vertex>;
friend class MeshTools::AbstractIndexTool;
public:

22
src/MeshTools/AbstractTool.h

@ -33,7 +33,8 @@ namespace MeshTools {
/**
* @brief Base class for mesh tools
*
* Provides access to internals of MeshBuilder instance for subclasses.
* Provides access to internals of MeshBuilder instance for subclasses. See
* also AbstractIndexTool.
*/
template<class Vertex> class AbstractTool {
public:
@ -49,6 +50,25 @@ template<class Vertex> class AbstractTool {
std::vector<unsigned int>& indices; /**< @brief Builder indices */
};
/**
* @brief Base class for mesh tools operating only on indices
*
* Provides access only to index array and vertex count. See also
* AbstractTool.
*/
class AbstractIndexTool {
public:
/**
* @brief Constructor
* @param builder %Mesh builder to operate on
*/
template<class Vertex> inline AbstractIndexTool(MeshBuilder<Vertex>& builder): indices(builder._indices), vertexCount(builder.vertexCount()) {}
protected:
std::vector<unsigned int>& indices; /**< @brief Builder indices */
const unsigned int vertexCount; /**< @brief Count of builder vertices */
};
}}
#endif

Loading…
Cancel
Save