#include <maya/MPxGeometryOverride.h>
#include <maya/MIntArray.h>
#include <maya/MStateManager.h>
#include <maya/MTextureManager.h>
#include <set>
class apiMesh;
class apiMeshGeom;
{
class MIndexBuffer;
class MVertexBuffer;
class MVertexBufferDescriptor;
}
{
public:
static MPxGeometryOverride* Creator(
const MObject& obj)
{
return new apiMeshGeometryOverride(obj);
}
virtual ~apiMeshGeometryOverride();
static MStatus registerComponentConverters();
static MStatus deregisterComponentConverters();
protected:
bool enableActiveComponentDisplay(
const MDagPath &path)
const;
unsigned int activeVertexCount,
unsigned int totalVerts,
bool debugPopulateGeometry);
void cloneVertexBuffer(
unsigned int bufferSize,
bool debugPopulateGeometry);
unsigned int totalVerts);
unsigned int numTriangles,
unsigned int activeVertexCount,
bool debugPopulateGeometry);
unsigned int totalVerts,
bool fromSelection);
unsigned int numTriangles,
bool fromSelection);
unsigned int numTriangles);
apiMeshGeometryOverride(
const MObject& obj);
apiMesh* fMesh;
apiMeshGeom* fMeshGeom;
std::set<int> fActiveVerticesSet;
std::set<int> fActiveEdgesSet;
std::set<int> fActiveFacesSet;
bool fCastsShadows;
bool fReceivesShadows;
static const MString sWireframeItemName;
static const MString sShadedTemplateItemName;
static const MString sSelectedWireframeItemName;
static const MString sVertexItemName;
static const MString sActiveVertexItemName;
static const MString sVertexIdItemName;
static const MString sVertexPositionItemName;
static const MString sShadedModeFaceCenterItemName;
static const MString sWireframeModeFaceCenterItemName;
static const MString sShadedProxyItemName;
static const MString sAffectedEdgeItemName;
static const MString sAffectedFaceItemName;
static const MString sEdgeSelectionItemName;
static const MString sFaceSelectionItemName;
static const MString sActiveVertexStreamName;
bool fDrawSharedActiveVertices;
bool fDrawActiveVerticesWithRamp;
static const MString sFaceCenterStreamName;
bool fDrawFaceCenters;
bool fUseCustomColors;
int fProxyShader;
bool fInternalItems_NoShadowCast;
bool fInternalItems_NoShadowReceive;
bool fInternalItems_NoPostEffects;
bool fExternalItems_NoShadowCast;
bool fExternalItems_NoShadowReceive;
bool fExternalItems_NoPostEffects;
bool fExternalItemsNonTri_NoShadowCast;
bool fExternalItemsNonTri_NoShadowReceive;
bool fExternalItemsNonTri_NoPostEffects;
};