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

ExCObject3D.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  
00021  *
00022  */
00023 
00024 #include "ExCObject3D.h"
00025 
00026 // Construction/Destruction
00027 
00028 ExCObject3D::ExCObject3D()
00029 {
00030 Guard(ExCObject3D::ExCObject3D())
00031         ExCObject::ExCObject();
00032         m_Size=1.0;
00033         m_RefreshTime=0.01f;
00034         m_Life=0;
00035         m_StartingLife=glutGet(GLUT_ELAPSED_TIME)/1000;
00036         m_Mass=100;
00037         m_ShowInfo=false;
00038         m_CurrentObject=false;
00039         m_Velocity.SetValue(0.0f,0.0f,0.0f);
00040         m_Position.SetValue(0.0f,0.0f,0.0f);
00041         m_Gravity.SetValue(0.0f,0.0f,0.0f);
00042         m_Acceleration=0.0f;
00043         m_Angle.SetValue(0,0,0);
00044         
00045         SetName("ExCObject3D");
00046         SetType(typeid(this).name());
00047 UnGuard
00048 }
00049 
00050 ExCObject3D::~ExCObject3D()
00051 {
00052 
00053 }
00054 
00055 void ExCObject3D::ShowInfo(void)
00056 {
00057 Guard(void ExCObject3D::ShowInfo(void))
00058         
00059         char *CIdName;
00060         char *CPosition;
00061         char *CVelocity;
00062         char *CAcceleration;
00063         char *CGravity;
00064         char *CLife;
00065 
00066         CIdName= new char[strlen("Name : Id:")+strlen(GetName().data())+7];
00067         sprintf(CIdName,"Name :%s Id:%ld",GetName(),GetId());
00068 
00069         CPosition= new char[strlen("Position X: Y: Z:")+30];
00070         sprintf(CPosition,"Position X:%f Y:%f Z:%f",m_Position.GetX(),m_Position.GetY(),m_Position.GetZ());
00071 
00072         CVelocity= new char[strlen("Velocity X: Y: Z:")+30];
00073         sprintf(CVelocity,"Velocity X:%f Y:%f Z:%f",m_Velocity.GetX(),m_Velocity.GetY(),m_Velocity.GetZ());
00074 
00075         CGravity= new char[strlen("Gravity X: Y: Z:")+30];
00076         sprintf(CGravity,"Gravity X:%f Y:%f Z:%f",m_Gravity.GetX(),m_Gravity.GetY(),m_Gravity.GetZ());
00077 
00078         CAcceleration= new char[strlen("Acceleration X: Y: Z:")+30];
00079         sprintf(CAcceleration,"Acceleration X:%f Y:%f Z:%f",m_Acceleration.GetX(),m_Acceleration.GetY(),m_Acceleration.GetZ());
00080 
00081         CLife= new char[strlen("Life :")+10];
00082         sprintf(CLife,"Life :%f",m_Life);
00083 
00084                 ExNihilo::WriteToScreen(500,500,CIdName);       
00085                 ExNihilo::WriteToScreen(500,515,CPosition);
00086                 ExNihilo::WriteToScreen(500,530,CVelocity);     
00087                 ExNihilo::WriteToScreen(500,545,CAcceleration); 
00088                 ExNihilo::WriteToScreen(500,560,CGravity);      
00089                 ExNihilo::WriteToScreen(500,575,CLife); 
00090                 std::cout<<CIdName<<std::endl;  
00091                 std::cout<<CPosition<<std::endl;        
00092                 std::cout<<CVelocity<<std::endl;                
00093                 std::cout<<CAcceleration<<std::endl;            
00094                 std::cout<<CGravity<<std::endl;         
00095                 std::cout<<CLife<<std::endl;            
00096 
00097         delete CIdName;
00098         delete CPosition;
00099         delete CVelocity;
00100         delete CAcceleration;
00101         delete CGravity;
00102         delete CLife;   
00103 UnGuard
00104 }  
00105 
00106 void ExCObject3D::SetAngleX(float Angle)
00107 {
00108         if(m_Angle.GetX()<0)m_Angle.SetX(359);
00109         if(m_Angle.GetX()>359)m_Angle.SetX(0);
00110 }
00111 
00112 void ExCObject3D::SetAngleY(float Angle)
00113 {
00114         if(m_Angle.GetY()<0)m_Angle.SetY(359);
00115         if(m_Angle.GetY()>359)m_Angle.SetY(0);
00116 }
00117 
00118 void ExCObject3D::SetAngleZ(float Angle)
00119 {
00120         /*if(m_AngleZ<0)m_AngleZ=359;
00121         if(m_AngleZ>359)m_AngleZ=0;*/
00122         m_Angle.SetZ(Angle);
00123 }
00124 
00125 
00126 void ExCObject3D::Rotate(float angleX,float angleY,float angleZ)
00127 {
00128         SetAngleX(angleX);
00129         SetAngleY(angleY);
00130         SetAngleZ(angleZ);
00131         Rotate();       
00132 }
00133 
00134 void ExCObject3D::Rotate(void)
00135 {
00136         if(m_Angle.GetX()<0)m_Angle.SetX(359);
00137         if(m_Angle.GetX()>359)m_Angle.SetX(0);
00138         if(m_Angle.GetY()<0)m_Angle.SetY(359);
00139         if(m_Angle.GetY()>359)m_Angle.SetY(0);
00140         if(m_Angle.GetZ()<0)m_Angle.SetZ(359);
00141         if(m_Angle.GetZ()>359)m_Angle.SetZ(0);
00142         
00143         ExQuaternion quat;
00144         ExCMatrix4x4 Matr;
00145         ExCVec3D VecX,VecY,VecZ,VecDir;
00146         
00147         quat=GetQuaternionFromEuler(m_Angle.GetX(),m_Angle.GetY(),m_Angle.GetZ());
00148         //Matr=GetMatrixFromQuaternion(quat);
00149         //Matr=GetMatrixFromEuler(m_AngleX,m_AngleY,m_AngleZ);
00150         
00151         /*VecX.m_Vector[0]=(float)Matr.m_Matrix[0];
00152         VecX.m_Vector[1]=(float)Matr.m_Matrix[1];
00153         VecX.m_Vector[2]=(float)Matr.m_Matrix[2];
00154         VecY.m_Vector[0]=(float)Matr.m_Matrix[4];
00155         VecY.m_Vector[1]=(float)Matr.m_Matrix[5];
00156         VecY.m_Vector[2]=(float)Matr.m_Matrix[6];
00157         VecZ.m_Vector[0]=(float)Matr.m_Matrix[8];
00158         VecZ.m_Vector[1]=(float)Matr.m_Matrix[9];
00159         VecZ.m_Vector[2]=(float)Matr.m_Matrix[10];
00160 
00161         VecDir.m_Vector[0]=VecX.GetVectorLenght();
00162         VecDir.m_Vector[1]=VecY.GetVectorLenght();
00163         VecDir.m_Vector[2]=VecZ.GetVectorLenght();
00164         VecDir=VecX+VecY+VecZ;
00165         std::cout<<"Angle X:"<<m_AngleX<<" Y:"<<m_AngleY<<" Z:"<<m_AngleZ<<std::endl;
00166         std::cout<<"Quater :"<<quat<<std::endl;
00167         std::cout<<"Matrice:"<<Matr<<std::endl;
00168         std::cout<<"vec   X:"<<VecX<<std::endl;
00169         std::cout<<"vec   Y:"<<VecY<<std::endl;
00170         std::cout<<"vec   Z:"<<VecZ<<std::endl;
00171         std::cout<<"vec dir:"<<VecDir<<std::endl;
00172         std::cout<<"vel bef:"<<m_Velocity<<std::endl;
00173         //std::cout<<"vec aft:"<<m_Velocity<<std::endl;
00174         
00175 
00176         m_Target.SetX((Cos[(int)m_AngleY]));
00177         m_Target.SetZ((Sin[(int)m_AngleY]));
00178         m_Target.SetY((Sin[(int)m_AngleX]));
00179         std::cout<<"vec target:"<<m_Target<<std::endl;*/
00180         //VecDir=GetAxisFromQuaternion(quat);
00181         //m_Velocity=m_Velocity*VecDir;
00182         //std::cout<<"vec dir:"<<VecDir<<std::endl;
00183         //std::cout<<"vec vel:"<<m_Velocity<<std::endl;
00184         
00185 }
00186 

Généré le Tue Oct 28 12:43:32 2003 pour ExNihilo par doxygen 1.3.4