The Socrates Gameboy Advance Development Engine
The SGADE is a development library for the Nintendo Gameboy
Advance. It's free for all uses and is distributed without guarantees.
For more information visit
the SGADE page.
00001 // ---------------------------------------------------------------------------- 00013 // ---------------------------------------------------------------------------- 00014 00015 #ifndef SO_CAMERA_H 00016 #define SO_CAMERA_H 00017 00018 #ifdef __cplusplus 00019 extern "C" { 00020 #endif 00021 00022 // ---------------------------------------------------------------------------- //! @{ 00032 // ---------------------------------------------------------------------------- 00033 00034 00035 // ---------------------------------------------------------------------------- 00036 // Includes 00037 // ---------------------------------------------------------------------------- 00038 #include "SoVector.h" 00039 #include "SoTransform.h" 00040 #include "SoMatrix.h" 00041 #include "SoMesh.h" 00042 #include "SoPolygon.h" 00043 #include "SoMath.h" 00044 #include "SoDisplay.h" 00045 00046 // ---------------------------------------------------------------------------- 00047 // Typedefs 00048 // ---------------------------------------------------------------------------- 00049 00050 00051 // ---------------------------------------------------------------------------- 00060 // ---------------------------------------------------------------------------- 00061 typedef struct 00062 { 00063 SoTransform m_Transform; 00064 00065 SoVector3 m_LeftFrustumPlaneNormal; 00066 SoVector3 m_TopFrustumPlaneNormal; 00067 00068 bool m_ClipAgainstFarAndNearPlane; 00069 bool m_ClipAgainstFrustumSidePlanes; 00070 00071 s32 m_NearPlaneDistance; 00072 s32 m_FarPlaneDistance; 00073 s32 m_ProjectionPlaneDistance; 00074 00075 } SoCamera; 00076 // ---------------------------------------------------------------------------- 00077 00078 // ---------------------------------------------------------------------------- 00079 // Public methods; 00080 // ---------------------------------------------------------------------------- 00081 void SoCameraInitialize( SoCamera* a_This ); 00082 00083 void SoCameraForward( SoCamera* a_This, sofixedpoint a_Amount ); 00084 void SoCameraRight( SoCamera* a_This, sofixedpoint a_Amount ); 00085 void SoCameraUp( SoCamera* a_This, sofixedpoint a_Amount ); 00086 00087 void SoCameraSetPitch( SoCamera* a_This, s32 a_Angle ); 00088 void SoCameraSetYaw( SoCamera* a_This, s32 a_Angle ); 00089 void SoCameraSetRoll( SoCamera* a_This, s32 a_Angle ); 00090 00091 void SoCameraSetTranslation( SoCamera* a_This, sofixedpoint a_X, sofixedpoint a_Y, sofixedpoint a_Z ); 00092 00093 void SoCameraDrawMesh( SoCamera* a_This, SoMesh* a_Mesh ); 00094 00095 void SoCameraSetFarAndNearPlaneClippingEnable( SoCamera* a_This, bool a_Enable ); 00096 void SoCameraSetFrustumSidePlanesClippingEnable( SoCamera* a_This, bool a_Enable ); 00097 00098 // ---------------------------------------------------------------------------- 00099 // EOF 00100 // ---------------------------------------------------------------------------- 00101 00103 00104 #ifdef __cplusplus 00105 } // extern "C" 00106 #endif 00107 00108 #endif