// Copyright (C) 2004-2009 Christoph Kubisch & Eike Decker
// This file is part of the "Luxinia Engine".
// For conditions of distribution and use, see copyright notice in luxiniapublicsdk.txt

#ifndef __EXMODEL_OPTIMIZE_H__
#define __EXMODEL_OPTIMIZE_H__

#include "exmodel_local.h"

struct PrimitiveGroup
{
	unsigned int numIndices;
	unsigned int* indices;

	////////////////////////////////////////////////////////////////////////////////////////

	PrimitiveGroup() : numIndices(0), indices(NULL) {}
	~PrimitiveGroup()
	{
		if(indices)
			delete[] indices;
		indices = NULL;
	}
};

struct PrimOutSet{
	PrimitiveGroup*	pGrps;
	ushort			numGrps;
};


class EXMeshOptimizer
{
public:
	virtual PrimOutSet		MakePrimOutSet(const uint *indices, uint numIndices, uint numVertices) = 0;
	virtual	EXPrimitiveType	OutType() = 0;
	virtual	booln			SupportsType( EXPrimitiveType type) = 0;
};


#endif

