00001 //=========================================================================== 00002 //= md2load.h Noviembre de 1999 = 00003 //=-------------------------------------------------------------------------= 00004 //= Modulo de importacion de datos de avatares QUAKE2 en formato MD2 = 00005 //=-------------------------------------------------------------------------= 00006 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO = 00007 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN = 00008 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES, = 00009 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO, = 00010 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO, = 00011 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA = 00012 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES = 00013 //= ("ACTIVIDADES DE ALGO RIESGO"). = 00014 //=-------------------------------------------------------------------------= 00015 //= Autor original: Oscar J. Chavarro G. A.K.A. JEDILINK. Copyright (c), = 00016 //= 1997 - 2003, oscarchavarro@hotmail.com = 00017 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia = 00018 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la = 00019 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. = 00020 //=========================================================================== 00021 00022 #include <stdio.h> 00023 #include <math.h> 00024 00025 #include "toolkits/media/jed_img.h" 00026 #include "toolkits/geom/mesh.h" 00027 #include "jed_gl.h" 00028 #include "lista.h" 00029 00037 class CONFIGURACION_MESH 00038 { 00039 public: 00040 VERTICE_GL *arr_vertices; 00041 }; 00042 00043 class TRIANGULO_QUAKE 00044 { 00045 public: 00046 int p0, p1, p2; // Indices a los 3 vertices que conforman este triangulo 00047 int a_s, a_t; // Mapeo de textura para el primer punto 00048 int b_s, b_t; // Mapeo de textura para el segundo punto 00049 int c_s, c_t; // Mapeo de textura para el tercer punto 00050 }; 00051 00052 class LECTOR_QUAKE_MD2 { 00053 private: 00054 IMAGEN_RGB *Piel; 00055 TRIANGULO_QUAKE *triangulos_arr; 00056 CONFIGURACION_MESH *frames_arr; 00057 DWORD _num_frames; 00058 DWORD _num_vertices; 00059 DWORD _num_triangulos; 00060 char *_nombre_piel; 00061 //void pintar_gl(DWORD frame); 00062 LISTA <VERTICE_GL *> geometrias_preprocesadas; 00063 00064 public: 00065 LECTOR_QUAKE_MD2(); 00066 ~LECTOR_QUAKE_MD2(); 00067 00068 void init(BOOLEAN suavizar_normales); 00069 void elim (void); 00070 DWORD num_frames(void); 00071 DWORD num_vertices(void); 00072 DWORD num_triangulos(void); 00073 00074 BOOLEAN leer(char *archivo_md2, char *archivo_piel, double factor_gamma); 00075 MESH * exportar_MESH(int cuadro); 00076 void actualizar_vertices(VERTICE_GL *V, long int t, int cuadro); 00077 void actualizar_vertices_rapido(VERTICE_GL *V, long int t, int cuadro); 00078 void 00079 actualizar_vertices_rapido_i(VERTICE_GL *V, long int t, int cuadro, 00080 int cuadroi, int cuadrof, int frame, int tam); 00081 }; 00082 00083 //=========================================================================== 00084 //= EOF = 00085 //=========================================================================== 00086