Page principale   Liste des namespaces   Hiérarchie des classes   Liste par ordre alphabétique   Liste des composants   Liste des fichiers   Composants   Déclarations  

ExManagerCam.cpp

Aller à la documentation de ce fichier.
00001 /*
00002  * ExNihilo 3D Engine
00003  * 
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  *
00018  * Please read AUTHORS file !!!
00019  * 
00020  * $Id: ExManagerCam.cpp,v 1.4 2002/07/10 11:09:46 data Exp $
00021  *
00022  */
00023 #include "ExManagerCam.h"
00024 
00025 ExManagerCam::ExManagerCam(void)
00026 {
00027 Guard(ExManagerCam::ExManagerCam(void))
00028         m_CurrentCam=0;
00029         m_multiview=false;
00030         itcount=0;
00031 UnGuard
00032 }
00033 
00034 
00035 ExManagerCam::~ExManagerCam(void)
00036 {
00037 Guard(ExManagerCam::~ExManagerCam(void))
00038 UnGuard
00039 }
00040 
00041 ExCCamera *  ExManagerCam::GetCurrentCam(void)
00042 {
00043 Guard(ExCCamera *  ExManagerCam::GetCurrentCam(void))
00044         int i=0;
00045         for(m_ItVecCamera=m_VecCamera.begin();m_ItVecCamera!=m_VecCamera.end();m_ItVecCamera++,i++)
00046         {
00047                 if(m_ItVecCamera->GetId()==m_CurrentCam)
00048                 {
00049                         return &m_VecCamera.at(i);
00050                 }
00051         }
00052 UnGuard
00053 return NULL;
00054 }
00055 
00056 void  ExManagerCam::NextCam(void)
00057 {
00058 Guard(void  ExManagerCam::NextCam(void))
00059         int i=0;
00060         for(m_ItVecCamera=m_VecCamera.begin();m_ItVecCamera!=m_VecCamera.end();m_ItVecCamera++,i++)
00061         {
00062                 if(m_ItVecCamera->GetId()==m_CurrentCam)
00063                 {
00064                         m_ItVecCamera++;
00065                         if(m_ItVecCamera==m_VecCamera.end())
00066                         {
00067                                 m_ItVecCamera=m_VecCamera.begin();
00068                         }
00069                         m_CurrentCam=m_ItVecCamera->GetId();
00070                 }
00071         }
00072 UnGuard
00073 }
00074 
00075 void  ExManagerCam::PrevCam(void)
00076 {
00077 Guard(void  ExManagerCam::PrevCam(void))
00078         int i=0;
00079         for(m_ItVecCamera=m_VecCamera.begin();m_ItVecCamera!=m_VecCamera.end();m_ItVecCamera++,i++)
00080         {
00081                 if(m_ItVecCamera->GetId()==m_CurrentCam)
00082                 {
00083                         if(m_ItVecCamera==m_VecCamera.begin())
00084                         {
00085                                 m_ItVecCamera=m_VecCamera.end()-1;
00086                         }else
00087                         {
00088                                 m_ItVecCamera--;
00089                         }
00090                         m_CurrentCam=m_ItVecCamera->GetId();
00091                 }
00092         }
00093 UnGuard
00094 }
00095 
00096 void  ExManagerCam::SetCurrentCam(ExId Id)
00097 {
00098 Guard(void  ExManagerCam::SetCurrentCam(ExId Id))
00099         //checking if id exist before !!!
00100         m_CurrentCam=Id;
00101 UnGuard
00102 }
00103 
00104 
00105 void  ExManagerCam::Reset(void)
00106 {
00107 Guard(void  ExManagerCam::Reset(void))
00108         m_VecCamera.clear();
00109         Init();
00110         //remove all from id
00111 UnGuard
00112 }
00113 
00114 bool  ExManagerCam::Init(char * FileName)
00115 {
00116 Guard(bool  ExManagerCam::Init(char * FileName))
00117         //openf file and load object
00118         return true;
00119 UnGuard
00120 }
00121 
00122 void  ExManagerCam::Init(void)
00123 {
00124 Guard(void  ExManagerCam::Init(void))
00125         m_MultSlot1=NewObject();
00126         m_MultSlot2=NewObject();
00127         m_MultSlot3=NewObject();
00128         m_MultSlot4=NewObject();
00129 UnGuard
00130 }
00131 
00132 ExId  ExManagerCam::NewObject(void)
00133 {
00134 Guard(ExId  ExManagerCam::NewObject(void))
00135         char *Name;     
00136         ExCCamera Camera1;
00137         Name= new char[strlen("CAMERA ")+3];
00138         sprintf(Name,"CAMERA %d",m_VecCamera.size()+1);
00139         Camera1.SetIdName(ManagerId->GetNewIdName(Name));
00140         Camera1.SetPosition(0.0f,2.0f,0.0f);
00141         m_VecCamera.push_back(Camera1);
00142         m_CurrentCam=Camera1.GetId();
00143         return m_CurrentCam;
00144 UnGuard
00145 }
00146 
00147 ExId  ExManagerCam::Add(ExCCamera Object)
00148 {
00149 Guard(ExId ExManagerCam::Add(ExCCamera Object))
00150         return m_CurrentCam;
00151 UnGuard
00152 }
00153 
00154 
00155 
00156 ExCCamera * ExManagerCam::Get(char * Name)
00157 {
00158 Guard(ExCCamera * ExManagerCam::Get(char * Name))
00159         int i=0;
00160         for(m_ItVecCamera=m_VecCamera.begin();m_ItVecCamera!=m_VecCamera.end();m_ItVecCamera++,i++)
00161         {
00162                 if(strcmp(m_ItVecCamera->GetName(),Name)==0)
00163                 {
00164                         return &m_VecCamera.at(i);
00165                 }
00166         }
00167         return NULL;
00168 UnGuard
00169 }
00170 
00171 
00172 ExCCamera * ExManagerCam::Get(ExId Id)
00173 {
00174 Guard(std::vector<ExCCamera>::iterator ExManagerCam::Get(ExId Id))
00175         int i=0;
00176         for(m_ItVecCamera=m_VecCamera.begin();m_ItVecCamera!=m_VecCamera.end();m_ItVecCamera++,i++)
00177         {
00178                 if(m_ItVecCamera->GetId()==Id)
00179                 {
00180                         return &m_VecCamera.at(i);
00181                 }
00182         }
00183         return NULL;    
00184 UnGuard
00185 }
00186 
00187 
00188 
00189 
00190 bool  ExManagerCam::Remove(ExId Id)
00191 {
00192 Guard(bool ExManagerCam::Remove(ExId Id))
00193         for(m_ItVecCamera=m_VecCamera.begin();m_ItVecCamera!=m_VecCamera.end();m_ItVecCamera++)
00194         {
00195                 if(m_ItVecCamera->GetId()==Id)
00196                 {
00197                         m_VecCamera.erase(m_ItVecCamera);
00198                         return true;
00199                 }
00200         }
00201         return false;
00202 UnGuard
00203 }
00204 
00205 
00206 ExId  ExManagerCam::GetIdByName(char *Name)
00207 {
00208 Guard(ExId ExManagerCam::GetIdByName(char *Name))
00209         for(m_ItVecCamera=m_VecCamera.begin();m_ItVecCamera!=m_VecCamera.end();m_ItVecCamera++)
00210         {
00211                 if(strcmp(m_ItVecCamera->GetName(),Name)==0)
00212                 {
00213                         return m_ItVecCamera->GetId();
00214                 }
00215         }
00216         return -1;
00217 UnGuard
00218 }
00219 
00220 
00221 char * ExManagerCam::GetNameById(ExId Id)
00222 {
00223 Guard(char * ExManagerCam::GetNameById(ExId Id))
00224         for(m_ItVecCamera=m_VecCamera.begin();m_ItVecCamera!=m_VecCamera.end();m_ItVecCamera++)
00225         {
00226                 if(m_ItVecCamera->GetId()==Id)
00227                 {
00228                         return m_ItVecCamera->GetName();
00229                 }
00230         }
00231         return NULL;
00232 UnGuard
00233 }
00234 
00235 void ExManagerCam::Draw(int x,int y)
00236 {
00237 Guard(void ExManagerCam::Draw(int x,int y))
00238         if(!m_multiview)
00239         {
00240                 glMatrixMode(GL_PROJECTION);
00241                 glLoadIdentity();
00242                 glViewport(0,0,x,y);
00243                 gluPerspective(GetCurrentCam()->GetZoom(),
00244                         (1.0f *x/y),
00245                         GetCurrentCam()->GetClipNear(),
00246                         GetCurrentCam()->GetClipFar());
00247                 glMatrixMode(GL_MODELVIEW);
00248                 glLoadIdentity();
00249                 GetCurrentCam()->Draw();
00250         }else
00251         {
00252                 int width = glutGet(GLUT_WINDOW_WIDTH);
00253                 int height = glutGet(GLUT_WINDOW_HEIGHT);
00254                 width = (width+1)/2;
00255                 height = (height+1)/2;
00256                 bool perspective=false;
00257                 float ratio = (float)width/height;
00258                 switch(itcount)
00259                 {
00260                 case 0:
00261                         glViewport(0, 0, width, height);
00262                         glMatrixMode(GL_PROJECTION);
00263                         glLoadIdentity();
00264                         gluOrtho2D(0, width, 0, height);
00265                         glMatrixMode(GL_MODELVIEW);
00266                         //glLoadIdentity();
00267                         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
00268                         glViewport(0, 0, width, height);  
00269                         glScissor(0, 0, width, height);
00270 
00271                         glMatrixMode(GL_PROJECTION);
00272                         //glLoadIdentity();
00273                         if (perspective)
00274                         gluPerspective(60, ratio, 1, 256);
00275                         else 
00276                         glOrtho(-ratio, ratio, -ratio, ratio, 1, 256);
00277                         glMatrixMode(GL_MODELVIEW);
00278                         glLoadIdentity();
00279                         Get(m_MultSlot1)->Draw();
00280             break;
00281                 case 1:
00282                         glViewport(width, 0, width, height); 
00283                         glScissor(width, 0, width, height);
00284                         
00285                         glMatrixMode(GL_PROJECTION);
00286                         //glLoadIdentity();
00287                         if (perspective)
00288                         gluPerspective(60, ratio, 1, 256);
00289                         else 
00290                         glOrtho(-ratio, ratio, -ratio, ratio, 1, 256);
00291                         glMatrixMode(GL_MODELVIEW);
00292                         glLoadIdentity();
00293                         Get(m_MultSlot2)->Draw();
00294                         break;
00295                 case 2:
00296                         glViewport(0, height, width, height); 
00297                         glScissor(0, height, width, height);
00298                         
00299                         glMatrixMode(GL_PROJECTION);
00300                         //glLoadIdentity();
00301                         if (perspective)
00302                         gluPerspective(60, ratio, 1, 256);
00303                         else 
00304                         glOrtho(-ratio, ratio, -ratio, ratio, 1, 256);
00305                         glMatrixMode(GL_MODELVIEW);
00306                         glLoadIdentity();
00307                         Get(m_MultSlot3)->Draw();
00308                         break;
00309                 case 3:
00310                         glViewport(width, height, width, height); 
00311                         glScissor(width, height, width, height);
00312                         
00313                         glMatrixMode(GL_PROJECTION);
00314                         //glLoadIdentity();
00315                         if (perspective)
00316                         gluPerspective(60, ratio, 1, 256);
00317                         else 
00318                         glOrtho(-ratio, ratio, -ratio, ratio, 1, 256);
00319                         glMatrixMode(GL_MODELVIEW);
00320                         glLoadIdentity();
00321                         Get(m_MultSlot4)->Draw();
00322                         break;
00323                 }
00324         itcount++;
00325         }
00326 UnGuard
00327 }
00328 

Généré le Tue Aug 6 20:25:27 2002 pour ExNihilo par doxygen1.2.17