"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSEngine/Src/Input/LSEKeyboardBuffer.h

00001 
00024 #ifndef __LSE_KEYBOARDBUFFER_H__
00025 #define __LSE_KEYBOARDBUFFER_H__
00026 
00027 #include "../LSEEngine.h"
00028 #include "CriticalSection/LSHCriticalSection.h"
00029 #include "Time/LSSTDTime.h"
00030 #include "Vector/LSTLSVectorPoD.h"
00031 
00032 namespace lse {
00033 
00034         class CKeyboard;
00035 
00050         class CKeyboardBuffer {
00051                 friend class CKeyboard;
00052 
00053         public :
00054                 // == Various constructors.
00055                 LSE_CALL                                                                                        CKeyboardBuffer();
00056 
00057 
00058                 // == Enumerations.
00062                 enum LSE_KEY_EVENTS {
00063                         LSE_KE_KEYUP,
00064                         LSE_KE_KEYDOWN,
00065                 };
00066 
00070                 enum LSE_TOTALS {
00071                         LSE_T_TOTALKEYS                                                                 = 300,
00072                         LSE_T_MAXEVENTS                                                                 = 250
00073                 };
00074 
00075 
00076                 // == Functions.
00083                 LSVOID LSE_CALL                                                                         OnKeyDown( LSUINT32 _ui32Key );
00084 
00091                 LSVOID LSE_CALL                                                                         OnKeyUp( LSUINT32 _ui32Key );
00092 
00099                 LSVOID LSE_CALL                                                                         UpdateKeyboard( CKeyboard * _pkKeyboard );
00100 
00101 
00102         protected :
00103                 // == Types.
00107                 typedef struct LSE_KEY_EVENT {
00111                         LSE_KEY_EVENTS                                                                  keEvent;
00112 
00116                         LSUINT64                                                                                ui64Time;
00117                 } * LPLSE_KEY_EVENT, * const LPCLSE_KEY_EVENT;
00118 
00119 
00120                 // == Members.
00121                 // Array of keys.
00122                 CSVectorPoD<LSE_KEY_EVENT, LSUINT8, 2UL>                        m_keKeyData[LSE_T_TOTALKEYS];
00123 
00124                 // Timestamping timer.
00125                 CTime                                                                                           m_tTime;
00126 
00127                 // Our critical section.
00128                 CCriticalSection                                                                        m_csCrit;
00129         };
00130 
00131 }       // namespace lse
00132 
00133 #endif  // __LSE_KEYBOARDBUFFER_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator