00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "controler-gmap.hh"
00026 #include "view-precompile.hh"
00027 #include "parameter-creation.hh"
00028 #include "parameter-object-position.hh"
00029 #include "parameter-polyline-position.hh"
00030 #include "transformation-matrix.hh"
00031 #include "g-map-vertex.hh"
00032 #include "vertex.hh"
00033 #include "transformation-matrix.hh"
00034 using namespace GMap3d;
00035
00036 void CControlerGMap::modeCreationBegin()
00037 {
00038 setMessage("Mode création");
00039
00040 for (unsigned int i=0; i<FViews.size(); ++i)
00041 viewEnablePreviewPrecompile(i);
00042 }
00043
00044 void CControlerGMap::modeCreationEnd()
00045 {
00046 for (unsigned int i=0; i<FViews.size(); ++i)
00047 viewDisablePreviewPrecompile(i);
00048 }
00049
00050 void CControlerGMap::modeCreationPolylineOperationStart()
00051 {
00052 float last3D[3];
00053 FViews[FCurrentViewId]->unproject(FLastX, FLastY, last3D);
00054 FParameterPolylinePosition->addVertex(CVertex(last3D[0],
00055 last3D[1],
00056 last3D[2]));
00057 }
00058
00059 void CControlerGMap::modeCreationOperationStart()
00060 {
00061 FViews[FCurrentViewId]->unproject(FFirstX, FFirstY, FFirst3D);
00062
00063 float x = FFirst3D[0];
00064 float y = FFirst3D[1];
00065 float z = FFirst3D[2];
00066
00067 CParameterObjectPosition * param = FParameterObjectPosition[FCreationType];
00068
00069 param->setScale(0.0);
00070 param->setCenter(x,y,z);
00071 param->setNormalVector(FViews[FCurrentViewId]->getEyeDirection());
00072 param->setFirstVertex(x,y,z, true);
00073 }
00074
00075 void CControlerGMap::modeCreationPolylineOperationMove()
00076 {
00077 float last3D[3];
00078 FViews[FCurrentViewId]->unproject(FLastX, FLastY, last3D);
00079 FParameterPolylinePosition->setLastVertex(CVertex(last3D[0],
00080 last3D[1],
00081 last3D[2]));
00082 }
00083
00084 void CControlerGMap::modeCreationOperationMove()
00085 {
00086 float last3D[3];
00087
00088 FViews[FCurrentViewId]->unproject(FLastX, FLastY, last3D);
00089
00090 float x = last3D[0];
00091 float y = last3D[1];
00092 float z = last3D[2];
00093
00094 FParameterObjectPosition[FCreationType]->setFirstVertex(x,y,z, true);
00095 }
00096
00097 void CControlerGMap::modeCreationPolylineOperationStop()
00098 {
00099 }
00100
00101 void CControlerGMap::modeCreationOperationStop()
00102 {
00103 }
00104
00105 void CControlerGMap::modeCreationReinitPosition()
00106 {
00107 switch (getMode())
00108 {
00109 case MODE_CREATION_POLYLINE:
00110 FParameterPolylinePosition->reinit(); break;
00111 case MODE_CREATION_POLYGON:
00112 case MODE_CREATION_MESH:
00113 case MODE_CREATION_SPHERE:
00114 case MODE_CREATION_CYLINDER:
00115 case MODE_CREATION_PYRAMID:
00116 case MODE_CREATION_TORUS:
00117 FParameterObjectPosition[FCreationType]->reinit(); break;
00118 }
00119 }
00120