www.pudn.com > 3DmaxSLoader.rar > TriObject.h


// TriObject.h: interface for the CTriObject class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_TRIOBJECT_H__922F85A8_F87E_4F9B_B49D_5B1175163166__INCLUDED_) 
#define AFX_TRIOBJECT_H__922F85A8_F87E_4F9B_B49D_5B1175163166__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "glStructures.h" 
 
class CTriObject   
{ 
public: 
	CTriObject(); 
	virtual ~CTriObject(); 
 
	void setId(int _id); 
	void drawGL(); 
	void applyNormals(); 
 
	//基本操作 
	void setX( float* _x, int num )		{x = _x; numvertices = num;} 
	void setY( float* _y, int num )		{y = _y; numvertices = num;} 
	void setZ( float* _z, int num )		{z = _z; numvertices = num;} 
	void getX( float*& _x, int& num )	{_x = x; num = numvertices;} 
	void getY( float*& _y, int& num )	{_y = y; num = numvertices;} 
	void getZ( float*& _z, int& num )	{_z = z; num = numvertices;} 
 
	void setXN( float* _nx, int num )	{nx = _nx; numnormals = num;} 
	void setYN( float* _ny, int num )	{ny = _ny; numnormals = num;} 
	void setZN( float* _nz, int num )	{nz = _nz; numnormals = num;} 
	void getXN( float*& _nx, int& num ) {_nx = nx; num = numnormals;} 
	void getYN( float*& _ny, int& num ) {_ny = ny; num = numnormals;} 
	void getZN( float*& _nz, int& num ) {_nz = nz; num = numnormals;} 
	 
	void setFaces( int* _faces, int num){ 
		faces = _faces;  
		numfaces = num;  
		matfaces = new int[num/3]; 
	} 
 
	void getFaces( int*& _faces, int& num)	{_faces = faces; num = numfaces;} 
 
	int	 addMaterial( tMaterial* _material); 
 
	void addMaterialFace(int entry, int index){ 
		matfaces[entry] = index;  
		nummatfacesapplied++;  
		if(nummatfacesapplied < numfaces/3)  
			materialsapplied = FALSE;  
		else  
			materialsapplied = TRUE;  
	} 
	 
	void setName(char * _name){ 
		name = new char[strlen(_name)];  
		strcpy(name,_name); 
	} 
 
	void getName(char *& _name) {_name = name;} 
 
	void setPivotPoint(tVector* _pivot){ 
		pivot[0] = _pivot->x; 
		pivot[1] = _pivot->y;  
		pivot[2] = _pivot->z; 
	} 
	void getPivotPoint(tVector* _pivot){ 
		_pivot->x = pivot[0];  
		_pivot->y = pivot[1];  
		_pivot->z = pivot[2]; 
	} 
 
private: 
	void CalcNormal(int entry , float out[3]); 
	void ReduceToUnit(float vector[3]); 
	BOOL isDataAlive(); 
	BOOL normalapplied; 
	BOOL materialsapplied; 
 
	int			id; 
	int			i; 
	float		value, valuepos; 
	//基本的材质成员变量 
	float*		x; 
	float*		y; 
	float*		z; 
	int			numvertices; 
	float*		nx; 
	float*		ny; 
	float*		nz; 
	int			numnormals; 
	int*		faces; 
	int			numfaces; 
	tMaterial*	materials; 
	int			nummaterials; 
	int*		matfaces; 
	int			nummatfacesapplied; 
	char*		name; 
	float		pivot[3]; 
	float		pivotrot[4]; 
 
}; 
 
#endif // !defined(AFX_TRIOBJECT_H__922F85A8_F87E_4F9B_B49D_5B1175163166__INCLUDED_)