00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "ExCCameraFirst.h"
00025
00026
00027 ExCCameraFirst::ExCCameraFirst()
00028 {
00029 Guard(ExCCameraFirst::ExCCameraFirst())
00030 SetName("ExCCameraFirst");
00031 SetType(typeid(this).name());
00032 WalkFalg=true;
00033 UnGuard
00034 }
00035
00036 ExCCameraFirst::~ExCCameraFirst()
00037 {
00038 Guard(ExCCameraFirst::~ExCCameraFirst())
00039 UnGuard
00040 }
00041
00042 void ExCCameraFirst::Draw(void)
00043 {
00044 Guard(void ExCCameraFirst::Draw(void))
00045
00046 if(ManagerModel->GetCurrentObject()>0)
00047 {
00048 m_Position=ManagerModel->GetCurrentObject()->GetPosition();
00049 m_Target=ManagerModel->GetCurrentObject()->GetTarget();
00050 }else
00051 {
00052 ExCCamera::Draw();
00053 return;
00054 }
00055 Process();
00056
00057 if(m_Angle.GetX()<0)m_Angle.SetX(359);
00058 if(m_Angle.GetX()>359)m_Angle.SetX(0);
00059 if(m_Angle.GetY()<0)m_Angle.SetY(359);
00060 if(m_Angle.GetY()>359)m_Angle.SetY(0);
00061 if(m_Angle.GetZ()<0)m_Angle.SetZ(359);
00062 if(m_Angle.GetZ()>359)m_Angle.SetZ(0);
00063
00064 float cosY,cosP,cosR;
00065 float sinY,sinP,sinR;
00066
00067 cosY=cosf(DegreesToRadians(GetAngleY()));
00068 cosP=cosf(DegreesToRadians(GetAngleX()));
00069 cosR=cosf(DegreesToRadians(GetAngleZ()));
00070
00071 sinY=sinf(DegreesToRadians(GetAngleY()));
00072 sinP=sinf(DegreesToRadians(GetAngleX()));
00073 sinR=sinf(DegreesToRadians(GetAngleZ()));
00074
00075 m_Position.SetY(m_Position.GetY()+12.0f);
00076 m_Target.SetY(m_Target.GetY()+12.0f);
00077
00078 gluLookAt(m_Position.GetX(),m_Position.GetY(),m_Position.GetZ()
00079 ,m_Target.GetX(),m_Target.GetY(),m_Target.GetZ()
00080 ,(-cosY*sinR)-(sinY*sinP*cosR),(cosP*cosR),(-sinY*sinR)-(sinP*cosR*-cosY));
00081 UnGuard
00082 }
00083
00084 void ExCCameraFirst::Process(void)
00085 {
00086 Guard(void ExCCameraFirst::Process(void))
00087 for(unsigned i=0;i<m_VecAction.size();i++)
00088 {
00089
00090
00091
00092
00093 ExCCamera::Process();
00094 }
00095 UnGuard
00096 }