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 // ---------------------------------------------------------------------------- 00011 // ---------------------------------------------------------------------------- 00012 00013 #ifndef SO_TRANSFORM_H 00014 #define SO_TRANSFORM_H 00015 00016 #ifdef __cplusplus 00017 extern "C" { 00018 #endif 00019 00020 00021 // ---------------------------------------------------------------------------- //! @{ 00039 // ---------------------------------------------------------------------------- 00040 00041 // ---------------------------------------------------------------------------- 00042 // Includes 00043 // ---------------------------------------------------------------------------- 00044 00045 #include "SoVector.h" 00046 #include "SoMatrix.h" 00047 00048 // ---------------------------------------------------------------------------- 00049 // Type definition; 00050 // ---------------------------------------------------------------------------- 00051 00060 typedef struct 00061 { 00063 SoVector3 m_Translate; 00064 00065 s32 m_AngleX; 00066 s32 m_AngleY; 00067 s32 m_AngleZ; 00068 00070 SoVector3 m_Scale; 00071 00072 } SoTransform; 00073 00074 // -------------------------------------------------------------------------- 00075 // Public methods; 00076 // -------------------------------------------------------------------------- 00077 00078 void SoTransformMakeIdentity( SoTransform* a_This ); 00079 00080 void SoTransformSetRotateX( SoTransform* a_This, s32 a_Angle ); 00081 void SoTransformSetRotateY( SoTransform* a_This, s32 a_Angle ); 00082 void SoTransformSetRotateZ( SoTransform* a_This, s32 a_Angle ); 00083 00084 void SoTransformSetTranslation( SoTransform* a_This, sofixedpoint a_X, sofixedpoint a_Y, sofixedpoint a_Z ); 00085 00086 void SoTransformRotateX( SoTransform* a_This, s32 a_Angle ); 00087 void SoTransformRotateY( SoTransform* a_This, s32 a_Angle ); 00088 void SoTransformRotateZ( SoTransform* a_This, s32 a_Angle ); 00089 00090 void SoTransformTranslate( SoTransform* a_This, sofixedpoint a_X, sofixedpoint a_Y, sofixedpoint a_Z ); 00091 00092 void SoTransformToMatrix( SoTransform* a_This, SoMatrix* a_Matrix ); 00093 void SoTransformToInverseMatrix( SoTransform* a_This, SoMatrix* a_Matrix ); 00094 00095 void SoTransformSetScale( SoTransform* a_This, sofixedpoint a_ScaleX, sofixedpoint a_ScaleY, sofixedpoint a_ScaleZ ); 00096 00097 // -------------------------------------------------------------------------- 00098 // EOF 00099 // -------------------------------------------------------------------------- 00100 00102 00103 #ifdef __cplusplus 00104 } // extern "C" 00105 #endif 00106 00107 #endif