/*=========================================================================
*
* GeoObj.h.h	- Geometric Object
*
* Version			1.0
* Revision date
*
*=======================================================================*/
#ifndef __MLT_GEOOBJ_H
#define __MLT_GEOOBJ_H


//--- Includes --------------------------------------------------------

#include "MTH.h"

#include "typedef.h"

#include "matrix.h"
#include "element.h"

//--- structures --------------------------------------------------------

// vector for normals 
typedef struct MLT_tdstVector_
{  
	int iIndex[200];
	int *iIndexObj;
	int *iIndexPoint;
	int iIndexElem[200];
} 
MLT_tdstVector;


// geometric object
typedef struct MLT_tdstGeometricObject_
{
	// name
	xString				sName;

	// flag
	BOOL				bNotForSave;

	// associated physical
	xString				sPhysicalSection;
	long				lNumberInTable;
	long				lNbLod;

	// comment 
	xString				sComment;

	// vertices
	xString				sPointsOf;
	long				xNbPoints;
	MTH3D_tdstVector	*d_stListOfPoints;
	MTH3D_tdstVector	*d_stListOfPointsNormals;
	MLT_tdstColor		*d_stListOfPointsReceivedLightIntensity;

	// min&max
	MTH3D_tdstVector	stMinPoint;
	MTH3D_tdstVector	stMaxPoint;

	// elements
	xString				*sElementOf;
	BOOL				bHasElementOf;
	long				*sIndexOf;
	long				xNbElements;
	long				*d_xListOfElementsTypes;
	void				**d_stListOfElements;

	// edges
	xString				sEdgesOf;
	long				xNbEdges;
	MLT_tdstDoubledIndex *d_stListOfEdges;

	// for altimap
	int					iFlags;

	// for symmetry
	char				cGeom;
	double				fGeom;

	// for LookAt
	char				sConstraintAxis[7];

	// normals
	MLT_tdstMatrix		*p_stMatrix;
	MLT_tdstVector		*p_stFaceIndexes;
} 
MLT_tdstGeometricObject;


#endif // __MLT_GEOOBJ_H  

