00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "jed_defs.h"
00024 #include "entidad.h"
00025 #include "vector.h"
00026 #include "toolkits/entorno/jed_evnt.h"
00027 #include "toolkits/geom/geometria.h"
00028 #include "framework/gui/jed_gui.h"
00029
00030 enum ENUM_MODOS_CONTROL_3D {
00031 EMC3D_DESACTIVADO = 0,
00032 EMC3D_SELECCIONAR_RECUADRO,
00033 EMC3D_SELECCIONAR_ELIPSOIDE,
00034 EMC3D_SELECCIONAR_LIBRE,
00035 EMC3D_SELECCIONAR_Y_TRANSLADAR,
00036 EMC3D_SELECCIONAR_Y_ROTAR,
00037 EMC3D_SELECCIONAR_Y_ESCALAR,
00038 EMC3D_FIN
00039 };
00040
00041 class CONTROL_3D : public CONTROLADOR_DE_ENTIDAD {
00042 protected:
00043 JED_INTERFACE **_Padre;
00044 public:
00045 CONTROL_3D(JED_INTERFACE **p);
00046 virtual ~CONTROL_3D();
00047 virtual void actualizar(ENTIDAD *Entidad) = 0;
00048 #ifdef GL_ENABLED
00049 virtual void pintar_gl(CALIDAD_VISUAL *Calidad, MATERIAL* Material, CAMARA *Camara) = 0;
00050 #endif
00051 virtual BOOLEAN procesar_mouse(EVENTO_GUI *e) = 0;
00052 virtual void crear(REPOSITORIO_DE_ENTIDADES *Repositorio, char *nombre) = 0;
00053 };
00054
00055 class CONTROL_3D_VECTOR;
00056
00063 class GIZMO_3D_IMPLEMENTADOR {
00064 protected:
00065 CONTROL_3D_VECTOR *_Padre;
00066 public:
00067
00068
00069
00070 GIZMO_3D_IMPLEMENTADOR(CONTROL_3D_VECTOR *in_Padre);
00071 virtual ~GIZMO_3D_IMPLEMENTADOR();
00072 #ifdef GL_ENABLED
00073 virtual void pintar_gl(CALIDAD_VISUAL *Calidad,
00074 MATERIAL* Material, CAMARA *Camara) = 0;
00075 #endif
00076 virtual BOOLEAN procesar_mouse(EVENTO_GUI *e) = 0;
00077 };
00078
00102 class GIZMO_3D_TRANSLACION_3DSMAX : public GIZMO_3D_IMPLEMENTADOR {
00103 private:
00108 int _zona_seleccionada_temporal;
00109
00114 int _zona_seleccionada_permanente;
00115
00116 public:
00117
00118
00119
00120 GIZMO_3D_TRANSLACION_3DSMAX(CONTROL_3D_VECTOR *in_Padre);
00121 ~GIZMO_3D_TRANSLACION_3DSMAX();
00122 #ifdef GL_ENABLED
00123 void
00124 pintar_gl(CALIDAD_VISUAL *Calidad, MATERIAL* Material, CAMARA *Camara);
00125 #endif
00126 BOOLEAN procesar_mouse(EVENTO_GUI *e);
00127 };
00128
00135 class CONTROL_3D_VECTOR : public CONTROL_3D {
00136 private:
00137 int funcion;
00138 VECTOR _valor;
00139 ENTIDAD *Entidad_controlada;
00140 char *_nombre_subvariable;
00141 FLECHA *_Eje;
00142 FLECHA *_Eje_gravedad;
00143 BOOLEAN _boton1_mouse_abajo;
00144 CAMARA *_Ultima_camara;
00145 GIZMO_3D_IMPLEMENTADOR *_Implementador;
00146
00147 public:
00148 CONTROL_3D_VECTOR(JED_INTERFACE **p);
00149 virtual ~CONTROL_3D_VECTOR();
00150
00151 void actualizar(ENTIDAD *Entidad);
00152 #ifdef GL_ENABLED
00153 void
00154 pintar_gl(CALIDAD_VISUAL *Calidad, MATERIAL* Material, CAMARA *Camara);
00155 #endif
00156 BOOLEAN procesar_mouse(EVENTO_GUI *e);
00157 void crear(REPOSITORIO_DE_ENTIDADES *Repositorio, char *nombre);
00158 void set_valor(VECTOR val);
00159
00160 friend class GIZMO_3D_IMPLEMENTADOR;
00161 friend class GIZMO_3D_TRANSLACION_3DSMAX;
00162 };
00163
00164
00165
00166
00167