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 "ExCModel.h"
00025
00026 ExCModel::ExCModel()
00027 {
00028 Guard(ExCModel::ExCModel())
00029 ExCObject3D::ExCObject3D();
00030 UnGuard
00031 }
00032
00033 ExCModel::~ExCModel()
00034 {
00035 Guard(ExCModel::~ExCModel())
00036 UnGuard
00037 }
00038
00039 void ExCModel::Forward(void)
00040 {
00041 Guard(void ExCModel::Forward(void))
00042 m_Position=m_Position+m_Target;
00043 UnGuard
00044 }
00045
00046 void ExCModel::Draw(void)
00047 {
00048 Guard(void ExCModel::Draw(void))
00049
00050
00051 ExQuaternion qRotationY,qRotationX,qRotationZ,qresult;
00052 float matrix[16];
00053
00054 qRotationX.CreateFromAxisAngle(1, 0, 0, m_Angle.GetX());
00055 qRotationY.CreateFromAxisAngle(0, 1, 0, m_Angle.GetY());
00056 qRotationZ.CreateFromAxisAngle(0, 0, 1, m_Angle.GetZ());
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 if(m_Angle.GetZ()>90&&m_Angle.GetZ()<270)
00068 {
00069 m_Target=ExCVec3D(Cos[(int)m_Angle.GetY()],Sin[(int)m_Angle.GetZ()],Sin[(int)m_Angle.GetY()]);
00070 }else
00071 {
00072 m_Target=ExCVec3D(Cos[(int)m_Angle.GetY()],-Sin[(int)m_Angle.GetZ()],Sin[(int)m_Angle.GetY()]);
00073 }
00074 m_Velocity=m_Velocity+(m_Acceleration*m_Target)-m_Gravity;
00075 m_Position=m_Position+m_Velocity;
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085 glTranslatef(m_Position.GetX(),m_Position.GetY(),m_Position.GetZ());
00086
00087 qRotationY.CreateMatrix(matrix);
00088 glMultMatrixf(matrix);
00089 qRotationZ.CreateMatrix(matrix);
00090 glMultMatrixf(matrix);
00091 qRotationX.CreateMatrix(matrix);
00092 glMultMatrixf(matrix);
00093
00094 UnGuard
00095 }
00096 ExCAction ExCModel::InputAction(ExCAction Action)
00097 {
00098 return NOTHING;
00099 }
00100 void ExCModel::NextFrame(void)
00101 {
00102 Guard(void ExCModel::NextFrame(void))
00103 m_CurrentFrames++;
00104 if(m_CurrentFrames>m_numFrames)m_CurrentFrames=1;
00105 UnGuard
00106 }
00107
00108 void ExCModel::PreviousFrame(void)
00109 {
00110 Guard(void ExCModel::PreviousFrame(void))
00111 m_CurrentFrames--;
00112 if(m_CurrentFrames<1)m_CurrentFrames=m_numFrames;
00113 UnGuard
00114 }
00115
00116 void ExCModel::SetCurrentFrame(int frame)
00117 {
00118 Guard(void ExCModel::SetCurrentFrame(int frame))
00119 if(frame>0&&frame<m_numFrames)
00120 m_CurrentFrames=frame;
00121 UnGuard
00122 }
00123
00124 void ExCModel::StartRun(void)
00125 {
00126 Guard(void ExCModel::StartRun(void))
00127
00128
00129 UnGuard
00130 }
00131
00132 void ExCModel::StopRun(void)
00133 {
00134 Guard(void ExCModel::StopRun(void))
00135
00136
00137 UnGuard
00138 }
00139
00140 void ExCModel::StartAction(std::string Action)
00141 {
00142 Guard(void ExCModel::SStartAction(std::string Action))
00143 UnGuard
00144 }
00145
00146 void ExCModel::StopAction(void)
00147 {
00148 Guard(void ExCModel::StopAction(void))
00149 UnGuard
00150 }