00001 //=========================================================================== 00002 //= luz.h Marzo de 1999 = 00003 //=-------------------------------------------------------------------------= 00004 //= Definiciones de la clase LUZ. = 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 #ifndef __LUZ__ 00023 #define __LUZ__ 00024 00025 #include "jed_defs.h" // Incluir antes que nada, en ese modulo se definen 00026 // aspectos importantes para la portabilidad del sistema 00027 #include "entidad.h" 00028 #include "color.h" 00029 #include "quaternion.h" 00030 #include "toolkits/util/parsero.h" 00031 00032 enum ENUM_TIPOS_DE_LUCES { 00033 TDL_DESCONOCIDO = 0, 00034 TDL_OMNIDIRECCIONAL, 00035 TDL_DIRECCIONAL 00036 }; 00037 00038 class LUZ : public ENTIDAD { 00039 private: 00040 // Elementos del modelo 00041 int _tipo; // Uno de los TIPOS_DE_LUCES 00042 COLOR _color; 00043 COLOR _color_sombras; 00044 VECTOR _posicion; 00045 QUATERNION _orientacion; // Solo para luces TDL_DIRECCIONAL 00046 double _angulo; // Dentro del rango (0, 180], para luces TDL_DIRECCIONAL 00047 double _exponente_foco; // En el rango [0, 180], para luces TDL_DIRECCIONAL 00048 00049 ENTIDAD *Padre; // Una luz puede asociarse a una ENTIDAD! 00050 char *_nombre_padre; 00051 00052 int id; 00053 00054 // Elementos de estado de la instancia 00055 BOOLEAN necesito_actualizarme; 00056 public: 00057 //- Operaciones basicas ------------------------------------------------ 00058 LUZ(); 00059 virtual ~LUZ(); 00060 00061 void set_id(int i); 00062 inline VECTOR posicion(void); 00063 inline void set_posicion(VECTOR p); 00064 void set_color_sombras(COLOR c); 00065 char *nombre_padre(void); 00066 void asociar_padre(ENTIDAD *p); 00067 00068 //- Operaciones de visualizacion --------------------------------------- 00069 #ifdef GL_ENABLED 00070 void activar_gl(void); 00071 #endif 00072 void activar_povray(FILE *fd); 00073 00074 //- Operaciones de persistencia ---------------------------------------- 00075 BOOLEAN leer(TOKENIZADOR *Sabiondo); 00076 }; 00077 00078 inline VECTOR 00079 LUZ::posicion(void) 00080 { 00081 return _posicion; 00082 } 00083 00084 inline void 00085 LUZ::set_posicion(VECTOR p) 00086 { 00087 _posicion = p; 00088 } 00089 00090 #endif //__LUZ__ 00091 00092 //=========================================================================== 00093 //= EOF = 00094 //=========================================================================== 00095