Changeset 8071 for code/branches/kicklib/src
- Timestamp:
- Mar 14, 2011, 3:53:38 AM (14 years ago)
- Location:
- code/branches/kicklib
- Files:
-
- 80 edited
- 8 copied
Legend:
- Unmodified
- Added
- Removed
-
code/branches/kicklib
-
code/branches/kicklib/src/CMakeLists.txt
r8061 r8071 69 69 # Set the search paths for include files 70 70 INCLUDE_DIRECTORIES( 71 # OrxonoxConfig.h 72 ${CMAKE_CURRENT_BINARY_DIR} 73 74 # All includes in "externals" should be prefixed with the path 75 # relative to "external" to avoid conflicts 76 ${CMAKE_CURRENT_SOURCE_DIR}/external 77 # Include directories needed even if only included by Orxonox 78 ${CMAKE_CURRENT_SOURCE_DIR}/external/bullet 79 ${CMAKE_CURRENT_SOURCE_DIR}/external/ois 80 71 81 # External 72 82 ${OGRE_INCLUDE_DIR} … … 84 94 ${DIRECTX_INCLUDE_DIR} 85 95 ${ZLIB_INCLUDE_DIR} 86 87 # All includes in "externals" should be prefixed with the path88 # relative to "external" to avoid conflicts89 ${CMAKE_CURRENT_SOURCE_DIR}/external90 # Include directories needed even if only included by Orxonox91 ${CMAKE_CURRENT_SOURCE_DIR}/external/bullet92 ${CMAKE_CURRENT_SOURCE_DIR}/external/ois93 94 # OrxonoxConfig.h95 ${CMAKE_CURRENT_BINARY_DIR}96 96 ) 97 97 -
code/branches/kicklib/src/OrxonoxConfig.cmake
r7980 r8071 32 32 33 33 # Global switch to disable Precompiled Header Files 34 IF(PCH_COMPILER_SUPPORT) 34 # Note: PCH temporarily disabled on Mac because of severe problems 35 IF(PCH_COMPILER_SUPPORT AND NOT APPLE) 35 36 OPTION(PCH_ENABLE "Global PCH switch" TRUE) 36 37 ENDIF() … … 53 54 ENDIF() 54 55 55 # 32/64 bit system check56 IF(CMAKE_SIZEOF_VOID_P EQUAL 8)57 SET(ORXONOX_ARCH_64 TRUE)58 ELSE()59 SET(ORXONOX_ARCH_32 TRUE)60 ENDIF()61 62 56 # Platforms 63 57 SET(ORXONOX_PLATFORM_WINDOWS ${WIN32}) … … 74 68 CHECK_CXX_SOURCE_COMPILES("${_source}" HAVE_FORCEINLINE) 75 69 ENDIF(MSVC) 70 71 # Part of a woraround for OS X warnings. See OrxonoxConfig.h.in 72 IF(HAVE_STDINT_H) 73 SET(HAVE_STDINT_H 1) 74 ELSE() 75 SET(HAVE_STDINT_H 0) 76 ENDIF() 76 77 77 78 # Check iso646.h include (literal operators) -
code/branches/kicklib/src/OrxonoxConfig.h.in
r7818 r8071 80 80 81 81 // Architecture 82 #cmakedefine ORXONOX_ARCH_32 83 #cmakedefine ORXONOX_ARCH_64 82 #if defined(__x86_64__) || defined(_M_X64) || defined(__powerpc64__) || defined(__alpha__) || defined(__ia64__) || defined(__s390__) || defined(__s390x__) 83 # define ORXONOX_ARCH_64 84 #else 85 # define ORXONOX_ARCH_32 86 #endif 84 87 85 88 // See if we can use __forceinline or if we need to use __inline instead 86 89 #cmakedefine HAVE_FORCEINLINE 87 #ifndef FORCEINLINE90 #ifndef ORX_FORCEINLINE 88 91 # ifdef HAVE_FORCEINLINE 89 # define FORCEINLINE __forceinline92 # define ORX_FORCEINLINE __forceinline 90 93 # else 91 # define FORCEINLINE __inline94 # define ORX_FORCEINLINE __inline 92 95 # endif 93 96 #endif … … 158 161 #endif 159 162 160 #cmakedefine HAVE_STDINT_H 161 #ifdef HAVE_STDINT_H 163 // On OS X some headers already define HAVE_STDINT_H and that spits out 164 // some warnings. Therefore we use this syntax. 165 // Note: This requires some extra code in OrxonoxConfig.cmake 166 #if @HAVE_STDINT_H@ 162 167 # include <stdint.h> 163 168 #elif defined(ORXONOX_COMPILER_MSVC) -
code/branches/kicklib/src/SpecialConfig.h.in
r7941 r8071 92 92 93 93 // OGRE PLUGINS 94 // Apple has trouble finding OGRE plugins because of its install-name convention 95 // Adopting the executable_path structure for later use in app bundles 94 96 #ifdef NDEBUG 95 97 const char ogrePlugins[] = "@OGRE_PLUGINS_RELEASE@"; 96 98 # ifdef DEPENDENCY_PACKAGE_ENABLE 97 const char ogrePluginsDirectory[] = "."; 99 # ifdef ORXONOX_PLATFORM_APPLE 100 const char ogrePluginsDirectory[] = "@executable_path/../Plugins"; 101 # else 102 const char ogrePluginsDirectory[] = "."; 103 # endif 98 104 # else 99 105 const char ogrePluginsDirectory[] = "@OGRE_PLUGINS_FOLDER_RELEASE@"; … … 102 108 const char ogrePlugins[] = "@OGRE_PLUGINS_DEBUG@"; 103 109 # ifdef DEPENDENCY_PACKAGE_ENABLE 104 const char ogrePluginsDirectory[] = "."; 110 # ifdef ORXONOX_PLATFORM_APPLE 111 const char ogrePluginsDirectory[] = "@OGRE_PLUGINS_FOLDER_DEBUG@"; 112 # else 113 const char ogrePluginsDirectory[] = "."; 114 # endif 105 115 # else 106 116 const char ogrePluginsDirectory[] = "@OGRE_PLUGINS_FOLDER_DEBUG@"; -
code/branches/kicklib/src/external/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
r7983 r8071 38 38 int gNumGjkChecks = 0; 39 39 40 #ifdef check 41 struct CompilerError 42 { 43 void CompilerError() {} 44 }; 45 #endif 40 46 41 47 btGjkPairDetector::btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver) -
code/branches/kicklib/src/external/ogreceguirenderer/CMakeLists.txt
r7163 r8071 34 34 DEFINE_SYMBOL 35 35 "OGRE_GUIRENDERER_EXPORTS" 36 VERSION37 1.4.938 36 LINK_LIBRARIES 37 ${Boost_SYSTEM_LIBRARY} 38 ${Boost_THREAD_LIBRARY} 39 ${Boost_DATE_TIME_LIBRARY} 39 40 ${OGRE_LIBRARY} 40 41 ${CEGUI_LIBRARY} -
code/branches/kicklib/src/external/ois/CMakeLists.txt
r5929 r8071 31 31 OISKeyboard.h 32 32 OISMouse.h 33 OISMultiTouch.h 33 34 OISObject.h 34 35 OISPrereqs.h 35 36 36 COMPILATION_BEGIN OISCompilation.cpp37 #COMPILATION_BEGIN OISCompilation.cpp 37 38 OISEffect.cpp 38 39 OISException.cpp … … 42 43 OISKeyboard.cpp 43 44 OISObject.cpp 44 COMPILATION_END45 #COMPILATION_END 45 46 ) 46 47 IF(WIN32) … … 51 52 ADD_SUBDIRECTORY(linux) 52 53 ENDIF() 53 54 INCLUDE_DIRECTORIES(.)55 54 56 55 ORXONOX_ADD_LIBRARY(ois_orxonox … … 66 65 IF(WIN32) 67 66 TARGET_LINK_LIBRARIES(ois_orxonox ${DIRECTX_LIBRARIES}) 67 ELSEIF(APPLE) 68 TARGET_LINK_LIBRARIES(ois_orxonox "/System/Library/Frameworks/IOKit.framework" "/System/Library/Frameworks/Carbon.framework") 68 69 ENDIF() -
code/branches/kicklib/src/external/ois/OIS.h
r5781 r8071 29 29 #include "OISKeyboard.h" 30 30 #include "OISJoyStick.h" 31 #include "OISMultiTouch.h" 31 32 #include "OISInputManager.h" 32 33 #include "OISFactoryCreator.h" -
code/branches/kicklib/src/external/ois/OISConfig.h
r5781 r8071 70 70 @remarks 71 71 Build in support for Win32 XInput (Xbox 360 Controller) 72 @notes73 Not Yet Implemented74 72 */ 75 73 //#define OIS_WIN32_XINPUT_SUPPORT -
code/branches/kicklib/src/external/ois/OISInputManager.cpp
r5781 r8071 37 37 #elif defined OIS_APPLE_PLATFORM 38 38 # include "mac/MacInputManager.h" 39 #elif defined OIS_IPHONE_PLATFORM 40 # include "iphone/iPhoneInputManager.h" 39 41 #elif defined OIS_XBOX_PLATFORM 40 42 # include "xbox/XBoxInputManager.h" … … 59 61 m_wiiMoteSupport(0) 60 62 { 63 mFactories.clear(); 64 mFactoryObjects.clear(); 61 65 } 62 66 … … 111 115 #elif defined OIS_APPLE_PLATFORM 112 116 im = new MacInputManager(); 117 #elif defined OIS_IPHONE_PLATFORM 118 im = new iPhoneInputManager(); 113 119 #else 114 120 OIS_EXCEPT(E_General, "No platform library.. check build platform defines!"); -
code/branches/kicklib/src/external/ois/OISKeyboard.h
r5781 r8071 184 184 { 185 185 public: 186 KeyEvent( Object* obj, KeyCode kc, unsigned int txt) : EventArg(obj), key(kc), text(txt) {}186 KeyEvent(Object* obj, KeyCode kc, unsigned int txt) : EventArg(obj), key(kc), text(txt) {} 187 187 virtual ~KeyEvent() {} 188 188 … … 201 201 public: 202 202 virtual ~KeyListener() {} 203 virtual bool keyPressed( const KeyEvent &arg) = 0;204 virtual bool keyReleased( const KeyEvent &arg) = 0;203 virtual bool keyPressed(const KeyEvent &arg) = 0; 204 virtual bool keyReleased(const KeyEvent &arg) = 0; 205 205 }; 206 206 … … 220 220 A KeyCode to check 221 221 */ 222 virtual bool isKeyDown( KeyCode key) const = 0;222 virtual bool isKeyDown(KeyCode key) const = 0; 223 223 224 224 /** … … 229 229 Send a pointer to a class derived from KeyListener or 0 to clear the callback 230 230 */ 231 virtual void setEventCallback( KeyListener *keyListener) { mListener = keyListener;}231 virtual void setEventCallback(KeyListener *keyListener) { mListener = keyListener;} 232 232 233 233 /** … … 254 254 Off, Unicode, Ascii 255 255 */ 256 virtual void setTextTranslation( TextTranslationMode mode);256 virtual void setTextTranslation(TextTranslationMode mode); 257 257 258 258 /** … … 272 272 The string as determined from the current locale 273 273 */ 274 virtual const std::string& getAsString( KeyCode kc) = 0;274 virtual const std::string& getAsString(KeyCode kc) = 0; 275 275 276 276 //! Enum of bit position of modifer … … 286 286 Check modifier status 287 287 */ 288 bool isModifierDown( Modifier mod) const;288 bool isModifierDown(Modifier mod) const; 289 289 290 290 /** … … 293 293 (in the form of 1 is down and 0 is up) 294 294 */ 295 virtual void copyKeyStates( char keys[256]) const = 0;295 virtual void copyKeyStates(char keys[256]) const = 0; 296 296 297 297 protected: -
code/branches/kicklib/src/external/ois/OISPrereqs.h
r7163 r8071 79 79 # endif 80 80 #elif defined( __APPLE_CC__ ) // Apple OS X 81 # define OIS_APPLE_PLATFORM 82 # undef _OISExport 83 # define _OISExport __attribute__((visibility("default"))) 81 // Device Simulator 82 # if __IPHONE_OS_VERSION_MIN_REQUIRED >= 20201 || __IPHONE_OS_VERSION_MIN_REQUIRED >= 20000 83 //# if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30000 || __IPHONE_OS_VERSION_MIN_REQUIRED >= 30000 84 # define OIS_IPHONE_PLATFORM 85 # else 86 # define OIS_APPLE_PLATFORM 87 # endif 88 # undef _OISExport 89 # define _OISExport __attribute__((visibility("default"))) 84 90 #else //Probably Linux 85 91 # define OIS_LINUX_PLATFORM … … 95 101 //-------------- Common Classes, Enums, and Typdef's -------------------------// 96 102 #define OIS_VERSION_MAJOR 1 97 #define OIS_VERSION_MINOR 2103 #define OIS_VERSION_MINOR 4 98 104 #define OIS_VERSION_PATCH 0 99 #define OIS_VERSION_NAME " Smash"105 #define OIS_VERSION_NAME "1.4.0" 100 106 101 107 #define OIS_VERSION ((OIS_VERSION_MAJOR << 16) | (OIS_VERSION_MINOR << 8) | OIS_VERSION_PATCH) … … 110 116 class Mouse; 111 117 class JoyStick; 118 class MultiTouch; 112 119 class KeyListener; 113 120 class MouseListener; 121 class MultiTouchListener; 114 122 class JoyStickListener; 115 123 class Interface; … … 130 138 enum Type 131 139 { 132 OISUnknown = 0, 133 OISKeyboard = 1, 134 OISMouse = 2, 135 OISJoyStick = 3, 136 OISTablet = 4 140 OISUnknown = 0, 141 OISKeyboard = 1, 142 OISMouse = 2, 143 OISJoyStick = 3, 144 OISTablet = 4, 145 OISMultiTouch = 5 137 146 }; 138 147 -
code/branches/kicklib/src/external/ois/ReadMe.txt
r5781 r8071 5 5 The zlib/libpng License 6 6 7 Copyright (c) 2005-20 07Phillip Castaneda (pjcast -- www.wreckedgames.com)7 Copyright (c) 2005-2010 Phillip Castaneda (pjcast -- www.wreckedgames.com) 8 8 9 9 This software is provided 'as-is', without any express or implied warranty. In no … … 46 46 Win32/ 47 47 Contains Visual Studio .Net Solution Files 48 Contains CodeBlocks + MinGW + StlPortproject files for OIS48 Contains CodeBlocks project files for OIS 49 49 50 50 ---- Dependencies ------------------------------------------------------ 51 51 DirectInput 8 52 Ogre & CEGUI 0.4.0 If building CEGUIOgre OIS Demo53 52 54 SDL/55 A test bed for an OIS InputManager with SDL as the backend. Not recommended;56 however, useful for platforms with non-native OIS ports for temporary use.57 53 58 54 Linux/ 59 55 ---- Dependencies ------------------------------------------------------ 60 56 X11 61 Ogre (GLX Platform) & CEGUI 0.4.0 If building CEGUIOgre OIS Demo 62 Newer Linux Kernel (2.6+ ?) for Event API - else, use --disable-joyevents 57 Newer Linux Kernel (2.6+ ?) for Event API 63 58 64 59 Steps to build on Linux: … … 69 64 ---- Configure build options -------------------------------------------- 70 65 ./configure --help --- List all configure options 71 ./configure --disable-ogre --- Disables CEGUIOgre ActionMapping Demo 72 ./configure --disable-joyevents --- Uses /dev/input/jsX instead of 73 /dev/input/eventX 66 74 67 75 68 LinuxCB/ … … 80 73 81 74 Mac/ 82 83 XCode-1.5/84 Non-complete native OIS port.85 86 75 XCode-2.2/ 87 Working, complete, OIS port to OSX using SDL as a backend.76 Working, mostly complete OSX vackend. -
code/branches/kicklib/src/external/ois/VERSION
r5781 r8071 1 OIS v1_2 CVS updated on 2009/01/24 2 Note that this is not CVS HEAD, but v1_2 branch! 3 1 OIS SVN trunk updated on 2010/10/07 (revision 26) 2 https://wgois.svn.sourceforge.net/svnroot/wgois/ois/trunk/ -
code/branches/kicklib/src/external/ois/changes_orxonox.diff
r7163 r8071 10 10 //Ignorable Dll interface warning... 11 11 # if !defined(OIS_MINGW_COMPILER) 12 13 12 14 --- linux/EventHelpers.cpp (revision 5668) 13 15 +++ linux/EventHelpers.cpp (working copy) … … 37 39 +++ win32/Win32ForceFeedback.cpp 38 40 @@ -25,7 +25,7 @@ 39 #include < Math.h>41 #include <math.h> 40 42 41 43 // 0 = No trace; 1 = Important traces; 2 = Debug traces … … 45 47 #if (defined (_DEBUG) || defined(OIS_WIN32_JOYFF_DEBUG)) 46 48 #include <iostream> 49 50 51 --- mac/MacHIDManager.cpp 52 +++ mac/MacHIDManager.cpp 53 @@ -406,6 +406,7 @@ 54 switch(iType) 55 { 56 case OISJoyStick: 57 + { 58 int totalDevs = totalDevices(iType); 59 int freeDevs = freeDevices(iType); 60 int devID = totalDevs - freeDevs; 61 @@ -413,6 +414,7 @@ 62 obj = new MacJoyStick((*it)->combinedKey, bufferMode, *it, creator, devID); 63 (*it)->inUse = true; 64 return obj; 65 + } 66 case OISTablet: 67 //Create MacTablet 68 break; -
code/branches/kicklib/src/external/ois/linux/LinuxInputManager.cpp
r5781 r8071 40 40 hideMouse = true; 41 41 mGrabs = true; 42 useXRepeat = false;43 42 keyboardUsed = mouseUsed = false; 44 43 … … 74 73 75 74 //--------- Keyboard Settings ------------// 76 i = paramList.find("XAutoRepeatOn");77 if( i != paramList.end() )78 if( i->second == "true" )79 useXRepeat = true;80 81 75 i = paramList.find("x11_keyboard_grab"); 82 76 if( i != paramList.end() ) … … 172 166 { 173 167 if( keyboardUsed == false ) 174 obj = new LinuxKeyboard(this, bufferMode, grabKeyboard , useXRepeat);168 obj = new LinuxKeyboard(this, bufferMode, grabKeyboard); 175 169 break; 176 170 } -
code/branches/kicklib/src/external/ois/linux/LinuxInputManager.h
r5781 r8071 101 101 bool mGrabs; 102 102 bool hideMouse; 103 104 //! By default, keyboard disables XRepeatRate105 bool useXRepeat;106 103 }; 107 104 } -
code/branches/kicklib/src/external/ois/linux/LinuxJoyStickEvents.cpp
r5781 r8071 96 96 //We are in non blocking mode - we just read once, and try to fill up buffer 97 97 input_event js[JOY_BUFFERSIZE]; 98 int ret = read(mJoyStick, &js, sizeof(struct input_event) * JOY_BUFFERSIZE); 99 if( ret <= 0 ) 100 return; 101 102 //Determine how many whole events re read up 103 ret /= sizeof(struct input_event); 104 for(int i = 0; i < ret; ++i) 98 while(true) 105 99 { 106 switch(js[i].type) 100 int ret = read(mJoyStick, &js, sizeof(struct input_event) * JOY_BUFFERSIZE); 101 if( ret < 0 ) 102 break; 103 104 //Determine how many whole events re read up 105 ret /= sizeof(struct input_event); 106 for(int i = 0; i < ret; ++i) 107 107 { 108 case EV_KEY: //Button 109 { 110 int button = mButtonMap[js[i].code]; 111 112 #ifdef OIS_LINUX_JOY_DEBUG 113 cout << "\nButton Code: " << js[i].code << ", OIS Value: " << button << endl; 114 #endif 115 116 //Check to see whether push or released event... 117 if(js[i].value) 118 { 119 mState.mButtons[button] = true; 120 if( mBuffered && mListener ) 121 if(!mListener->buttonPressed(JoyStickEvent(this,mState), button)) return; 122 } 123 else 124 { 125 mState.mButtons[button] = false; 126 if( mBuffered && mListener ) 127 if(!mListener->buttonReleased(JoyStickEvent(this,mState), button)) return; 128 } 129 break; 130 } 131 132 case EV_ABS: //Absolute Axis 133 { 134 //A Stick (BrakeDefine is the highest possible Axis) 135 if( js[i].code <= ABS_BRAKE ) 136 { 137 int axis = mAxisMap[js[i].code]; 138 assert( axis < 32 && "Too many axes (Max supported is 32). Report this to OIS forums!" ); 139 140 axisMoved[axis] = true; 141 142 //check for rescaling: 143 if( mRanges[axis].min == JoyStick::MIN_AXIS && mRanges[axis].max != JoyStick::MAX_AXIS ) 144 { //Scale is perfect 145 mState.mAxes[axis].abs = js[i].value; 108 switch(js[i].type) 109 { 110 case EV_KEY: //Button 111 { 112 int button = mButtonMap[js[i].code]; 113 114 #ifdef OIS_LINUX_JOY_DEBUG 115 cout << "\nButton Code: " << js[i].code << ", OIS Value: " << button << endl; 116 #endif 117 118 //Check to see whether push or released event... 119 if(js[i].value) 120 { 121 mState.mButtons[button] = true; 122 if( mBuffered && mListener ) 123 if(!mListener->buttonPressed(JoyStickEvent(this,mState), button)) return; 146 124 } 147 125 else 148 { //Rescale 149 float proportion = (float)(js[i].value-mRanges[axis].max)/(float)(mRanges[axis].min-mRanges[axis].max); 150 mState.mAxes[axis].abs = (int)(32767.0f - (65535.0f * proportion)); 126 { 127 mState.mButtons[button] = false; 128 if( mBuffered && mListener ) 129 if(!mListener->buttonReleased(JoyStickEvent(this,mState), button)) return; 151 130 } 152 } 153 else if( js[i].code <= ABS_HAT3Y ) //A POV - Max four POVs allowed 154 { 155 //Normalise the POV to between 0-7 156 //Even is X Axis, Odd is Y Axis 157 unsigned char LinuxPovNumber = js[i].code - 16; 158 short OIS_POVIndex = POV_MASK[LinuxPovNumber]; 159 160 //Handle X Axis first (Even) (left right) 161 if((LinuxPovNumber & 0x0001) == 0) 131 break; 132 } 133 134 case EV_ABS: //Absolute Axis 135 { 136 //A Stick (BrakeDefine is the highest possible Axis) 137 if( js[i].code <= ABS_BRAKE ) 162 138 { 163 //Why do this? Because, we use a bit field, and when this axis is east, 164 //it can't possibly be west too. So clear out the two X axes, then refil 165 //it in with the new direction bit. 166 //Clear the East/West Bit Flags first 167 mState.mPOV[OIS_POVIndex].direction &= 0x11110011; 168 if( js[i].value == -1 ) //Left 169 mState.mPOV[OIS_POVIndex].direction |= Pov::West; 170 else if( js[i].value == 1 ) //Right 171 mState.mPOV[OIS_POVIndex].direction |= Pov::East; 139 int axis = mAxisMap[js[i].code]; 140 assert( axis < 32 && "Too many axes (Max supported is 32). Report this to OIS forums!" ); 141 142 axisMoved[axis] = true; 143 144 //check for rescaling: 145 if( mRanges[axis].min == JoyStick::MIN_AXIS && mRanges[axis].max != JoyStick::MAX_AXIS ) 146 { //Scale is perfect 147 mState.mAxes[axis].abs = js[i].value; 148 } 149 else 150 { //Rescale 151 float proportion = (float)(js[i].value-mRanges[axis].max)/(float)(mRanges[axis].min-mRanges[axis].max); 152 mState.mAxes[axis].abs = (int)(32767.0f - (65535.0f * proportion)); 153 } 172 154 } 173 //Handle Y Axis (Odd) (up down) 174 else 155 else if( js[i].code <= ABS_HAT3Y ) //A POV - Max four POVs allowed 175 156 { 176 //Clear the North/South Bit Flags first 177 mState.mPOV[OIS_POVIndex].direction &= 0x11111100; 178 if( js[i].value == -1 ) //Up 179 mState.mPOV[OIS_POVIndex].direction |= Pov::North; 180 else if( js[i].value == 1 ) //Down 181 mState.mPOV[OIS_POVIndex].direction |= Pov::South; 157 //Normalise the POV to between 0-7 158 //Even is X Axis, Odd is Y Axis 159 unsigned char LinuxPovNumber = js[i].code - 16; 160 short OIS_POVIndex = POV_MASK[LinuxPovNumber]; 161 162 //Handle X Axis first (Even) (left right) 163 if((LinuxPovNumber & 0x0001) == 0) 164 { 165 //Why do this? Because, we use a bit field, and when this axis is east, 166 //it can't possibly be west too. So clear out the two X axes, then refil 167 //it in with the new direction bit. 168 //Clear the East/West Bit Flags first 169 mState.mPOV[OIS_POVIndex].direction &= 0x11110011; 170 if( js[i].value == -1 ) //Left 171 mState.mPOV[OIS_POVIndex].direction |= Pov::West; 172 else if( js[i].value == 1 ) //Right 173 mState.mPOV[OIS_POVIndex].direction |= Pov::East; 174 } 175 //Handle Y Axis (Odd) (up down) 176 else 177 { 178 //Clear the North/South Bit Flags first 179 mState.mPOV[OIS_POVIndex].direction &= 0x11111100; 180 if( js[i].value == -1 ) //Up 181 mState.mPOV[OIS_POVIndex].direction |= Pov::North; 182 else if( js[i].value == 1 ) //Down 183 mState.mPOV[OIS_POVIndex].direction |= Pov::South; 184 } 185 186 if( mBuffered && mListener ) 187 if( mListener->povMoved( JoyStickEvent(this,mState), OIS_POVIndex) == false ) 188 return; 182 189 } 183 184 if( mBuffered && mListener ) 185 if( mListener->povMoved( JoyStickEvent(this,mState), OIS_POVIndex) == false ) 186 return; 187 } 188 break; 189 } 190 191 192 case EV_REL: //Relative Axes (Do any joystick actually have a relative axis?) 193 #ifdef OIS_LINUX_JOY_DEBUG 194 cout << "\nWarning: Relatives axes not supported yet" << endl; 195 #endif 196 break; 197 default: break; 190 break; 191 } 192 193 194 case EV_REL: //Relative Axes (Do any joystick actually have a relative axis?) 195 #ifdef OIS_LINUX_JOY_DEBUG 196 cout << "\nWarning: Relatives axes not supported yet" << endl; 197 #endif 198 break; 199 default: break; 200 } 198 201 } 199 202 } -
code/branches/kicklib/src/external/ois/linux/LinuxKeyboard.cpp
r5781 r8071 33 33 #include <iostream> 34 34 //-------------------------------------------------------------------// 35 LinuxKeyboard::LinuxKeyboard(InputManager* creator, bool buffered, bool grab , bool useXRepeat)35 LinuxKeyboard::LinuxKeyboard(InputManager* creator, bool buffered, bool grab) 36 36 : Keyboard(creator->inputSystemName(), buffered, 0, creator) 37 37 { … … 43 43 grabKeyboard = grab; 44 44 keyFocusLost = false; 45 46 xAutoRepeat = useXRepeat;47 oldXAutoRepeat = false;48 45 49 46 //X Key Map to KeyCode … … 213 210 214 211 keyFocusLost = false; 215 216 if( xAutoRepeat == false )217 {218 //We do not want to blindly turn on autorepeat later when quiting if219 //it was not on to begin with.. So, let us check and see first220 XKeyboardState old;221 XGetKeyboardControl( display, &old );222 oldXAutoRepeat = false;223 224 if( old.global_auto_repeat == AutoRepeatModeOn )225 oldXAutoRepeat = true;226 227 XAutoRepeatOff( display );228 }229 212 } 230 213 … … 234 217 if( display ) 235 218 { 236 if( oldXAutoRepeat )237 XAutoRepeatOn(display);238 239 219 if( grabKeyboard ) 240 220 XUngrabKeyboard(display, CurrentTime); … … 303 283 304 284 while( XPending(display) > 0 ) 305 { XNextEvent(display, &event); if( KeyPress == event.type ) 285 { 286 XNextEvent(display, &event); if(KeyPress == event.type) 306 287 { 307 288 unsigned int character = 0; 308 289 309 if( mTextMode != Off)290 if(mTextMode != Off) 310 291 { 311 292 unsigned char buffer[6] = {0,0,0,0,0,0}; … … 332 313 if( event.xkey.state & Mod1Mask && key == XK_Tab ) 333 314 linMan->_setGrabState(false); 334 } else if( KeyRelease == event.type ) 315 } 316 else if(KeyRelease == event.type) 335 317 { 336 //Mask out the modifier states X sets.. or we will get improper values 337 event.xkey.state &= ~ShiftMask; 338 event.xkey.state &= ~LockMask; 339 340 //Else, it is a valid key release 341 XLookupString(&event.xkey,NULL,0,&key,NULL); 342 _injectKeyUp(key); } 318 if(!_isKeyRepeat(event)) 319 { 320 //Mask out the modifier states X sets.. or we will get improper values 321 event.xkey.state &= ~ShiftMask; 322 event.xkey.state &= ~LockMask; 323 324 XLookupString(&event.xkey,NULL,0,&key,NULL); 325 _injectKeyUp(key); 326 } 327 } 343 328 } 344 329 -
code/branches/kicklib/src/external/ois/linux/LinuxKeyboard.h
r5781 r8071 34 34 { 35 35 public: 36 LinuxKeyboard(InputManager* creator, bool buffered, bool grab , bool useXRepeat);36 LinuxKeyboard(InputManager* creator, bool buffered, bool grab); 37 37 virtual ~LinuxKeyboard(); 38 38 … … 59 59 60 60 protected: 61 inline bool _isKeyRepeat(XEvent &event) 62 { 63 //When a key is repeated, there will be two events: released, followed by another immediate pressed. So check to see if another pressed is present 64 if(!XPending(display)) 65 return false; 66 67 XEvent e; 68 XPeekEvent(display, &e); 69 if(e.type == KeyPress && e.xkey.keycode == event.xkey.keycode && (e.xkey.time - event.xkey.time) < 2) 70 { 71 XNextEvent(display, &e); 72 return true; 73 } 74 75 return false; 76 } 77 61 78 bool _injectKeyDown( KeySym key, int text ); 62 79 bool _injectKeyUp( KeySym key ); … … 75 92 bool keyFocusLost; 76 93 77 bool xAutoRepeat;78 bool oldXAutoRepeat;79 80 94 std::string mGetString; 81 95 }; -
code/branches/kicklib/src/external/ois/linux/LinuxMouse.cpp
r5781 r8071 173 173 174 174 //Compute this frames Relative X & Y motion 175 mState.X.rel= event.xmotion.x - oldXMouseX;176 mState.Y.rel= event.xmotion.y - oldXMouseY;175 int dx = event.xmotion.x - oldXMouseX; 176 int dy = event.xmotion.y - oldXMouseY; 177 177 178 178 //Store old values for next time to compute relative motion … … 180 180 oldXMouseY = event.xmotion.y; 181 181 182 mState.X.abs += mState.X.rel; 183 mState.Y.abs += mState.Y.rel; 182 mState.X.abs += dx; 183 mState.Y.abs += dy; 184 mState.X.rel += dx; 185 mState.Y.rel += dy; 184 186 185 187 //Check to see if we are grabbing the mouse to the window (requires clipping and warping) -
code/branches/kicklib/src/external/ois/linux/LinuxPrereqs.h
r5781 r8071 32 32 33 33 //! Max number of elements to collect from buffered input 34 #define JOY_BUFFERSIZE 1034 #define JOY_BUFFERSIZE 64 35 35 36 36 namespace OIS -
code/branches/kicklib/src/external/ois/mac/CMakeLists.txt
r5929 r8071 3 3 MacHIDManager.h 4 4 MacInputManager.h 5 MacJoyStick.h 5 6 MacKeyboard.h 6 7 MacMouse.h 7 8 MacPrereqs.h 8 9 9 COMPILATION_BEGIN OISMacCompilation.cpp10 #COMPILATION_BEGIN OISMacCompilation.cpp 10 11 MacHelpers.cpp 11 12 MacHIDManager.cpp 12 13 MacInputManager.cpp 14 MacJoyStick.cpp 13 15 MacKeyboard.cpp 14 16 MacMouse.cpp 15 COMPILATION_END17 #COMPILATION_END 16 18 ) -
code/branches/kicklib/src/external/ois/mac/MacHIDManager.cpp
r5781 r8071 20 20 21 21 3. This notice may not be removed or altered from any source distribution. 22 */22 */ 23 23 #include "mac/MacHIDManager.h" 24 #include "mac/MacJoyStick.h" 24 25 #include "OISException.h" 25 26 #include "OISObject.h" … … 42 43 { 43 44 CFTypeRef temp = CFDictionaryGetValue(dict, OIS_CFString(keyName)); 44 45 45 46 if(temp && CFGetTypeID(temp) == CFArrayGetTypeID()) 46 47 return (CFArrayRef)temp; … … 53 54 { 54 55 CFTypeRef temp = CFDictionaryGetValue(dict, OIS_CFString(keyName)); 55 56 56 57 if(temp && CFGetTypeID(temp) == CFStringGetTypeID()) 57 58 return (CFStringRef)temp; … … 64 65 { 65 66 CFTypeRef temp = CFDictionaryGetValue(dict, OIS_CFString(keyName)); 66 67 67 68 if(temp && CFGetTypeID(temp) == CFNumberGetTypeID()) 68 69 return (CFNumberRef)temp; … … 83 84 { 84 85 CFTypeRef temp = CFArrayGetValueAtIndex(array, idx); 85 86 86 87 if(temp && CFGetTypeID(temp) == CFDictionaryGetTypeID()) 87 88 return (CFDictionaryRef)temp; … … 93 94 int getInt32(CFNumberRef ref) 94 95 { 95 96 97 98 96 int r = 0; 97 if (r) 98 CFNumberGetValue(ref, kCFNumberIntType, &r); 99 return r; 99 100 } 100 101 … … 111 112 //------------------------------------------------------------------------------------------------------// 112 113 void MacHIDManager::initialize() 114 { 115 //Make the search more specific by adding usage flags 116 int usage = kHIDUsage_GD_Joystick; 117 int page = kHIDPage_GenericDesktop; 118 119 io_iterator_t iterator = lookUpDevices(usage, page); 120 121 if(iterator) 122 iterateAndOpenDevices(iterator); 123 124 //Doesn't support multiple usage flags, iterate twice 125 usage = kHIDUsage_GD_GamePad; 126 iterator = lookUpDevices(usage, page); 127 128 if(iterator) 129 iterateAndOpenDevices(iterator); 130 } 131 132 //------------------------------------------------------------------------------------------------------// 133 io_iterator_t MacHIDManager::lookUpDevices(int usage, int page) 113 134 { 114 135 CFMutableDictionaryRef deviceLookupMap = IOServiceMatching(kIOHIDDeviceKey); 115 136 if(!deviceLookupMap) 116 137 OIS_EXCEPT(E_General, "Could not setup HID device search parameters"); 117 118 //Make the search more specific by adding usage flags 119 int usage = kHIDUsage_GD_GamePad | kHIDUsage_GD_Joystick, 120 page = kHIDPage_GenericDesktop; 121 122 CFNumberRef usageRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage), 123 pageRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &page); 124 138 139 CFNumberRef usageRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage); 140 CFNumberRef pageRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &page); 141 125 142 CFDictionarySetValue(deviceLookupMap, CFSTR(kIOHIDPrimaryUsageKey), usageRef); 126 143 CFDictionarySetValue(deviceLookupMap, CFSTR(kIOHIDPrimaryUsagePageKey), pageRef); 127 144 128 145 //IOServiceGetMatchingServices consumes the map so we do not have to release it ourself 129 146 io_iterator_t iterator = 0; 130 147 IOReturn result = IOServiceGetMatchingServices(kIOMasterPortDefault, deviceLookupMap, &iterator); 131 if (result == kIOReturnSuccess && iterator) 132 { 133 io_object_t hidDevice = 0; 134 while ((hidDevice = IOIteratorNext(iterator)) !=0) 148 149 CFRelease(usageRef); 150 CFRelease(pageRef); 151 152 if(result == kIOReturnSuccess) 153 { 154 return iterator; 155 } 156 //TODO: Throw exception instead? 157 else 158 { 159 return 0; 160 } 161 } 162 163 //------------------------------------------------------------------------------------------------------// 164 void MacHIDManager::iterateAndOpenDevices(io_iterator_t iterator) 165 { 166 io_object_t hidDevice = 0; 167 while ((hidDevice = IOIteratorNext(iterator)) !=0) 168 { 169 //Get the current registry items property map 170 CFMutableDictionaryRef propertyMap = 0; 171 if (IORegistryEntryCreateCFProperties(hidDevice, &propertyMap, kCFAllocatorDefault, kNilOptions) == KERN_SUCCESS && propertyMap) 135 172 { 136 //Get the current registry items property map 137 CFMutableDictionaryRef propertyMap = 0; 138 if (IORegistryEntryCreateCFProperties(hidDevice, &propertyMap, kCFAllocatorDefault, kNilOptions) == KERN_SUCCESS && propertyMap) 173 //Go through device to find all needed info 174 HidInfo* hid = enumerateDeviceProperties(propertyMap); 175 176 if(hid) 139 177 { 140 //Go through device to find all needed info141 HidInfo* hid = enumerateDeviceProperties(propertyMap);142 if(hid)143 mDeviceList.push_back(hid);144 145 178 //todo - we need to hold an open interface so we do not have to enumerate again later 146 179 //should be able to watch for device removals also 147 148 /// Testing opening / closing interface 149 //IOCFPlugInInterface **pluginInterface = NULL; 150 //SInt32 score = 0; 151 //if (IOCreatePlugInInterfaceForService(hidDevice, kIOHIDDeviceUserClientTypeID, kIOCFPlugInInterfaceID, &pluginInterface, &score) == kIOReturnSuccess) 152 //{ 153 // IOHIDDeviceInterface **interface; 154 // HRESULT pluginResult = (*pluginInterface)->QueryInterface(pluginInterface, CFUUIDGetUUIDBytes(kIOHIDDeviceInterfaceID), (void **)&(interface)); 155 // if(pluginResult == S_OK) 156 // cout << "Successfully created plugin interface for device\n"; 157 // else 158 // cout << "Not able to create plugin interface\n"; 159 160 // IODestroyPlugInInterface(pluginInterface); 161 162 // if ((*interface)->open(interface, 0) == KERN_SUCCESS) 163 // cout << "Opened interface.\n"; 164 // else 165 // cout << "Failed to open\n"; 166 167 // (*interface)->close(interface); 168 //} 169 // 180 181 // Testing opening / closing interface 182 IOCFPlugInInterface **pluginInterface = NULL; 183 SInt32 score = 0; 184 if (IOCreatePlugInInterfaceForService(hidDevice, kIOHIDDeviceUserClientTypeID, kIOCFPlugInInterfaceID, &pluginInterface, &score) == kIOReturnSuccess) 185 { 186 IOHIDDeviceInterface **interface; 187 188 HRESULT pluginResult = (*pluginInterface)->QueryInterface(pluginInterface, CFUUIDGetUUIDBytes(kIOHIDDeviceInterfaceID), (void **)&(interface)); 189 190 if(pluginResult != S_OK) 191 OIS_EXCEPT(E_General, "Not able to create plugin interface"); 192 193 IODestroyPlugInInterface(pluginInterface); 194 195 hid->interface = interface; 196 197 //Check for duplicates - some devices have multiple usage 198 if(std::find(mDeviceList.begin(), mDeviceList.end(), hid) == mDeviceList.end()) 199 mDeviceList.push_back(hid); 200 } 170 201 } 171 202 } 172 173 IOObjectRelease(iterator); 174 } 175 176 CFRelease(usageRef); 177 CFRelease(pageRef); 203 } 204 205 IOObjectRelease(iterator); 178 206 } 179 207 … … 188 216 if (str) 189 217 info->vendor = CFStringGetCStringPtr(str, CFStringGetSystemEncoding()); 190 218 191 219 str = getDictionaryItemAsRef<CFStringRef>(propertyMap, kIOHIDProductKey); 192 220 if (str) 193 221 info->productKey = CFStringGetCStringPtr(str, CFStringGetSystemEncoding()); 194 222 195 223 info->combinedKey = info->vendor + " " + info->productKey; 196 224 197 225 //Go through all items in this device (i.e. buttons, hats, sticks, axes, etc) 198 226 CFArrayRef array = getDictionaryItemAsRef<CFArrayRef>(propertyMap, kIOHIDElementKey); … … 200 228 for (int i = 0; i < CFArrayGetCount(array); i++) 201 229 parseDeviceProperties(getArrayItemAsRef<CFDictionaryRef>(array, i)); 202 230 203 231 return info; 204 232 } … … 209 237 if(!properties) 210 238 return; 211 239 212 240 CFArrayRef array = getDictionaryItemAsRef<CFArrayRef>(properties, kIOHIDElementKey); 213 241 if (array) … … 227 255 switch(getInt32(getDictionaryItemAsRef<CFNumberRef>(element, kIOHIDElementUsagePageKey))) 228 256 { 229 case kHIDPage_GenericDesktop:230 switch(getInt32(getDictionaryItemAsRef<CFNumberRef>(element, kIOHIDElementUsageKey)))257 case kHIDPage_GenericDesktop: 258 switch(getInt32(getDictionaryItemAsRef<CFNumberRef>(element, kIOHIDElementUsageKey))) 231 259 { 232 case kHIDUsage_GD_Pointer: 233 cout << "\tkHIDUsage_GD_Pointer\n"; 234 parseDevicePropertiesGroup(element); 260 case kHIDUsage_GD_Pointer: 261 cout << "\tkHIDUsage_GD_Pointer\n"; 262 parseDevicePropertiesGroup(element); 263 break; 264 case kHIDUsage_GD_X: 265 case kHIDUsage_GD_Y: 266 case kHIDUsage_GD_Z: 267 case kHIDUsage_GD_Rx: 268 case kHIDUsage_GD_Ry: 269 case kHIDUsage_GD_Rz: 270 cout << "\tAxis\n"; 271 break; 272 case kHIDUsage_GD_Slider: 273 case kHIDUsage_GD_Dial: 274 case kHIDUsage_GD_Wheel: 275 cout << "\tUnsupported kHIDUsage_GD_Wheel\n"; 276 break; 277 case kHIDUsage_GD_Hatswitch: 278 cout << "\tUnsupported - kHIDUsage_GD_Hatswitch\n"; 279 break; 280 } 235 281 break; 236 case kHIDUsage_GD_X: 237 case kHIDUsage_GD_Y: 238 case kHIDUsage_GD_Z: 239 case kHIDUsage_GD_Rx: 240 case kHIDUsage_GD_Ry: 241 case kHIDUsage_GD_Rz: 242 cout << "\tAxis\n"; 282 case kHIDPage_Button: 283 cout << "\tkHIDPage_Button\n"; 243 284 break; 244 case kHIDUsage_GD_Slider:245 case kHIDUsage_GD_Dial:246 case kHIDUsage_GD_Wheel:247 cout << "\tUnsupported kHIDUsage_GD_Wheel\n";248 break;249 case kHIDUsage_GD_Hatswitch:250 cout << "\tUnsupported - kHIDUsage_GD_Hatswitch\n";251 break;252 }253 break;254 case kHIDPage_Button:255 cout << "\tkHIDPage_Button\n";256 break;257 285 } 258 286 } … … 267 295 if(!properties) 268 296 return; 269 297 270 298 CFArrayRef array = getDictionaryItemAsRef<CFArrayRef>(properties, kIOHIDElementKey); 271 299 if(array) … … 278 306 switch(getInt32(getDictionaryItemAsRef<CFNumberRef>(element, kIOHIDElementUsagePageKey))) 279 307 { 280 case kHIDPage_GenericDesktop:281 switch(getInt32(getDictionaryItemAsRef<CFNumberRef>(element, kIOHIDElementUsageKey)))308 case kHIDPage_GenericDesktop: 309 switch(getInt32(getDictionaryItemAsRef<CFNumberRef>(element, kIOHIDElementUsageKey))) 282 310 { 283 case kHIDUsage_GD_X: 284 case kHIDUsage_GD_Y: 285 case kHIDUsage_GD_Z: 286 case kHIDUsage_GD_Rx: 287 case kHIDUsage_GD_Ry: 288 case kHIDUsage_GD_Rz: 289 cout << "\t\tAxis\n"; 311 case kHIDUsage_GD_X: 312 case kHIDUsage_GD_Y: 313 case kHIDUsage_GD_Z: 314 case kHIDUsage_GD_Rx: 315 case kHIDUsage_GD_Ry: 316 case kHIDUsage_GD_Rz: 317 cout << "\t\tAxis\n"; 318 break; 319 case kHIDUsage_GD_Slider: 320 case kHIDUsage_GD_Dial: 321 case kHIDUsage_GD_Wheel: 322 cout << "\tUnsupported - kHIDUsage_GD_Wheel\n"; 323 break; 324 case kHIDUsage_GD_Hatswitch: 325 cout << "\tUnsupported - kHIDUsage_GD_Hatswitch\n"; 326 break; 327 } 290 328 break; 291 case kHIDUsage_GD_Slider: 292 case kHIDUsage_GD_Dial: 293 case kHIDUsage_GD_Wheel: 294 cout << "\tUnsupported - kHIDUsage_GD_Wheel\n"; 329 case kHIDPage_Button: 295 330 break; 296 case kHIDUsage_GD_Hatswitch:297 cout << "\tUnsupported - kHIDUsage_GD_Hatswitch\n";298 break;299 }300 break;301 case kHIDPage_Button:302 break;303 331 } 304 332 } … … 317 345 ret.insert(std::make_pair((*it)->type, (*it)->combinedKey)); 318 346 } 319 347 320 348 return ret; 321 349 } … … 326 354 int ret = 0; 327 355 HidInfoList::iterator it = mDeviceList.begin(), end = mDeviceList.end(); 328 356 329 357 for(; it != end; ++it) 330 358 { … … 341 369 int ret = 0; 342 370 HidInfoList::iterator it = mDeviceList.begin(), end = mDeviceList.end(); 343 371 344 372 for(; it != end; ++it) 345 373 { … … 347 375 ret++; 348 376 } 349 377 350 378 return ret; 351 379 } … … 355 383 { 356 384 HidInfoList::iterator it = mDeviceList.begin(), end = mDeviceList.end(); 357 385 358 386 for(; it != end; ++it) 359 387 { … … 367 395 //--------------------------------------------------------------------------------// 368 396 Object* MacHIDManager::createObject(InputManager* creator, Type iType, bool bufferMode, 369 397 const std::string & vendor) 370 398 { 371 399 Object *obj = 0; 372 400 373 401 HidInfoList::iterator it = mDeviceList.begin(), end = mDeviceList.end(); 374 402 for(; it != end; ++it) … … 376 404 if((*it)->inUse == false && (*it)->type == iType && (vendor == "" || (*it)->combinedKey == vendor)) 377 405 { 378 //create device 406 switch(iType) 407 { 408 case OISJoyStick: 409 { 410 int totalDevs = totalDevices(iType); 411 int freeDevs = freeDevices(iType); 412 int devID = totalDevs - freeDevs; 413 414 obj = new MacJoyStick((*it)->combinedKey, bufferMode, *it, creator, devID); 415 (*it)->inUse = true; 416 return obj; 417 } 418 case OISTablet: 419 //Create MacTablet 420 break; 421 default: 422 break; 423 } 379 424 } 380 425 } 381 382 if( obj == 0 ) 383 OIS_EXCEPT(E_InputDeviceNonExistant, "No devices match requested type."); 384 426 385 427 return obj; 386 428 } -
code/branches/kicklib/src/external/ois/mac/MacHIDManager.h
r5781 r8071 70 70 71 71 void initialize(); 72 73 void iterateAndOpenDevices(io_iterator_t iterator); 74 io_iterator_t lookUpDevices(int usage, int page); 72 75 73 76 //FactoryCreator Overrides -
code/branches/kicklib/src/external/ois/mac/MacInputManager.cpp
r5781 r8071 188 188 } 189 189 default: 190 { 191 obj = mHIDManager->createObject(creator, iType, bufferMode, vendor); 190 192 break; 193 } 191 194 } 192 195 -
code/branches/kicklib/src/external/ois/mac/MacKeyboard.cpp
r5781 r8071 199 199 char macChar; 200 200 201 // TODO clean this up202 201 if (mTextMode == Unicode) 203 202 { 204 203 //get string size 205 204 UInt32 stringsize; 206 //status = GetEventParameter( theEvent, 'kuni', typeUnicodeText, NULL, 0, &stringsize, NULL);207 //status = GetEventParameter( theEvent, 'kuni', typeUnicodeText, NULL, sizeof(UniChar)*10, NULL, &text );208 205 status = GetEventParameter( theEvent, 'kuni', typeUnicodeText, NULL, sizeof(UniChar) * 10, &stringsize, &text ); 209 std::cout << "String length: " << stringsize << std::endl;210 211 //wstring unitext;212 //for (int i=0;i<10;i++) unitext += (wchar_t)text[i];213 //wcout << "Unicode out: " << unitext << endl;214 206 215 207 if(stringsize > 0) -
code/branches/kicklib/src/external/ois/win32/Win32ForceFeedback.cpp
r5929 r8071 21 21 3. This notice may not be removed or altered from any source distribution. 22 22 */ 23 #include " Win32/Win32ForceFeedback.h"23 #include "win32/Win32ForceFeedback.h" 24 24 #include "OISException.h" 25 #include < Math.h>25 #include <math.h> 26 26 27 27 // 0 = No trace; 1 = Important traces; 2 = Debug traces -
code/branches/kicklib/src/external/ois/win32/Win32ForceFeedback.h
r5781 r8071 26 26 #include "OISPrereqs.h" 27 27 #include "OISForceFeedback.h" 28 #include " Win32/Win32Prereqs.h"28 #include "win32/Win32Prereqs.h" 29 29 30 30 namespace OIS -
code/branches/kicklib/src/external/ois/win32/Win32InputManager.cpp
r5781 r8071 21 21 3. This notice may not be removed or altered from any source distribution. 22 22 */ 23 #include " Win32/Win32InputManager.h"24 #include " Win32/Win32Keyboard.h"25 #include " Win32/Win32Mouse.h"26 #include " Win32/Win32JoyStick.h"23 #include "win32/Win32InputManager.h" 24 #include "win32/Win32KeyBoard.h" 25 #include "win32/Win32Mouse.h" 26 #include "win32/Win32JoyStick.h" 27 27 #include "OISException.h" 28 28 … … 75 75 hInst = GetModuleHandle(0); 76 76 77 //Create the input system77 //Create the device 78 78 hr = DirectInput8Create( hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (VOID**)&mDirectInput, NULL ); 79 79 if (FAILED(hr)) … … 118 118 { 119 119 //Enumerate all attached devices 120 mDirectInput->EnumDevices(NULL , _DIEnumDevCallback, this, DIEDFL_ATTACHEDONLY); 120 mDirectInput->EnumDevices(NULL, _DIEnumDevCallback, this, DIEDFL_ATTACHEDONLY); 121 122 #ifdef OIS_WIN32_XINPUT_SUPPORT 123 //let's check how many possible XInput devices we may have (max 4)... 124 for(int i = 0; i < 3; ++i) 125 { 126 XINPUT_STATE state; 127 if(XInputGetState(i, &state) != ERROR_DEVICE_NOT_CONNECTED) 128 { //Once we found 1, just check our whole list against devices 129 Win32JoyStick::CheckXInputDevices(unusedJoyStickList); 130 break; 131 } 132 } 133 #endif 121 134 } 122 135 … … 134 147 { 135 148 JoyStickInfo jsInfo; 149 jsInfo.isXInput = false; 150 jsInfo.productGuid = lpddi->guidProduct; 136 151 jsInfo.deviceID = lpddi->guidInstance; 137 152 jsInfo.vendor = lpddi->tszInstanceName; -
code/branches/kicklib/src/external/ois/win32/Win32InputManager.h
r5781 r8071 26 26 #include "OISInputManager.h" 27 27 #include "OISFactoryCreator.h" 28 #include " Win32/Win32Prereqs.h"28 #include "win32/Win32Prereqs.h" 29 29 30 30 namespace OIS -
code/branches/kicklib/src/external/ois/win32/Win32JoyStick.cpp
r5781 r8071 21 21 3. This notice may not be removed or altered from any source distribution. 22 22 */ 23 #include " Win32/Win32JoyStick.h"24 #include " Win32/Win32InputManager.h"25 #include " Win32/Win32ForceFeedback.h"23 #include "win32/Win32JoyStick.h" 24 #include "win32/Win32InputManager.h" 25 #include "win32/Win32ForceFeedback.h" 26 26 #include "OISEvents.h" 27 27 #include "OISException.h" 28 28 29 29 #include <cassert> 30 #include <wbemidl.h> 31 #include <oleauto.h> 32 //#include <wmsstd.h> 33 #ifndef SAFE_RELEASE 34 #define SAFE_RELEASE(x) \ 35 if(x != NULL) \ 36 { \ 37 x->Release(); \ 38 x = NULL; \ 39 } 40 #endif 41 42 #ifdef OIS_WIN32_XINPUT_SUPPORT 43 # pragma comment(lib, "xinput.lib") 44 #endif 30 45 31 46 //DX Only defines macros for the JOYSTICK not JOYSTICK2, so fix it … … 40 55 #define DIJOFS_SLIDER3(n) (FIELD_OFFSET(DIJOYSTATE2, rglFSlider)+(n) * sizeof(LONG)) 41 56 57 #define XINPUT_TRANSLATED_BUTTON_COUNT 12 58 #define XINPUT_TRANSLATED_AXIS_COUNT 6 59 42 60 using namespace OIS; 43 61 44 62 //--------------------------------------------------------------------------------------------------// 45 Win32JoyStick::Win32JoyStick( InputManager* creator, IDirectInput8* pDI, 46 bool buffered, DWORD coopSettings, const JoyStickInfo &info ) 47 : JoyStick(info.vendor, buffered, info.devId, creator) 48 { 49 mDirectInput = pDI; 50 coopSetting = coopSettings; 51 mJoyStick = 0; 52 53 deviceGuid = info.deviceID; 54 55 ff_device = 0; 63 Win32JoyStick::Win32JoyStick( InputManager* creator, IDirectInput8* pDI, bool buffered, DWORD coopSettings, const JoyStickInfo &info ) : 64 JoyStick(info.vendor, buffered, info.devId, creator), 65 mDirectInput(pDI), 66 coopSetting(coopSettings), 67 mJoyStick(0), 68 mJoyInfo(info), 69 mFfDevice(0) 70 { 56 71 } 57 72 … … 59 74 Win32JoyStick::~Win32JoyStick() 60 75 { 61 delete ff_device;76 delete mFfDevice; 62 77 63 78 if(mJoyStick) … … 69 84 70 85 //Return joystick to pool 71 JoyStickInfo js; 72 js.deviceID = deviceGuid; 73 js.devId = mDevID; 74 js.vendor = mVendor; 75 static_cast<Win32InputManager*>(mCreator)->_returnJoyStick(js); 86 static_cast<Win32InputManager*>(mCreator)->_returnJoyStick(mJoyInfo); 76 87 } 77 88 … … 79 90 void Win32JoyStick::_initialize() 80 91 { 81 //Clear old state 82 mState.mAxes.clear(); 83 84 if (ff_device) 85 { 86 delete ff_device; 87 ff_device = 0; 88 } 89 90 // Create direct input joystick device. 91 if(FAILED(mDirectInput->CreateDevice(deviceGuid, &mJoyStick, NULL))) 92 OIS_EXCEPT( E_General, "Win32JoyStick::_initialize() >> Could not initialize joy device!"); 93 94 // Set DIJoystick2 data format. 95 if(FAILED(mJoyStick->SetDataFormat(&c_dfDIJoystick2))) 96 OIS_EXCEPT( E_General, "Win32JoyStick::_initialize() >> data format error!"); 97 98 // Set cooperative level as specified when creating input manager. 99 HWND hwin = ((Win32InputManager*)mCreator)->getWindowHandle(); 100 if(FAILED(mJoyStick->SetCooperativeLevel( hwin, coopSetting))) 101 OIS_EXCEPT( E_General, "Win32JoyStick::_initialize() >> failed to set cooperation level!"); 102 103 // Set buffer size. 104 DIPROPDWORD dipdw; 105 dipdw.diph.dwSize = sizeof(DIPROPDWORD); 106 dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); 107 dipdw.diph.dwObj = 0; 108 dipdw.diph.dwHow = DIPH_DEVICE; 109 dipdw.dwData = JOYSTICK_DX_BUFFERSIZE; 110 111 if( FAILED(mJoyStick->SetProperty(DIPROP_BUFFERSIZE, &dipdw.diph)) ) 112 OIS_EXCEPT( E_General, "Win32JoyStick::_initialize >> Failed to set buffer size property" ); 113 114 // Enumerate all axes/buttons/sliders/force feedback/etc before aquiring 115 _enumerate(); 116 117 mState.clear(); 118 119 capture(); 92 if (mJoyInfo.isXInput) 93 { 94 _enumerate(); 95 } 96 else 97 { 98 //Clear old state 99 mState.mAxes.clear(); 100 101 delete mFfDevice; 102 mFfDevice = 0; 103 104 DIPROPDWORD dipdw; 105 106 dipdw.diph.dwSize = sizeof(DIPROPDWORD); 107 dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); 108 dipdw.diph.dwObj = 0; 109 dipdw.diph.dwHow = DIPH_DEVICE; 110 dipdw.dwData = JOYSTICK_DX_BUFFERSIZE; 111 112 if(FAILED(mDirectInput->CreateDevice(mJoyInfo.deviceID, &mJoyStick, NULL))) 113 OIS_EXCEPT( E_General, "Win32JoyStick::_initialize() >> Could not initialize joy device!"); 114 115 if(FAILED(mJoyStick->SetDataFormat(&c_dfDIJoystick2))) 116 OIS_EXCEPT( E_General, "Win32JoyStick::_initialize() >> data format error!"); 117 118 HWND hwin = ((Win32InputManager*)mCreator)->getWindowHandle(); 119 120 if(FAILED(mJoyStick->SetCooperativeLevel( hwin, coopSetting))) 121 OIS_EXCEPT( E_General, "Win32JoyStick::_initialize() >> failed to set cooperation level!"); 122 123 if( FAILED(mJoyStick->SetProperty(DIPROP_BUFFERSIZE, &dipdw.diph)) ) 124 OIS_EXCEPT( E_General, "Win32Mouse::Win32Mouse >> Failed to set buffer size property" ); 125 126 //Enumerate all axes/buttons/sliders/etc before aquiring 127 _enumerate(); 128 129 mState.clear(); 130 131 capture(); 132 } 120 133 } 121 134 … … 123 136 void Win32JoyStick::_enumerate() 124 137 { 125 // Get joystick capabilities. 126 mDIJoyCaps.dwSize = sizeof(DIDEVCAPS); 127 if( FAILED(mJoyStick->GetCapabilities(&mDIJoyCaps)) ) 128 OIS_EXCEPT( E_General, "Win32JoyStick::_enumerate >> Failed to get capabilities" ); 129 130 // => Number of POVs 131 mPOVs = (short)mDIJoyCaps.dwPOVs; 132 133 // => Number of buttons and axes. 134 mState.mButtons.resize(mDIJoyCaps.dwButtons); 135 mState.mAxes.resize(mDIJoyCaps.dwAxes); 136 137 // Enumerate all Force Feedback effects (if any) 138 mJoyStick->EnumEffects(DIEnumEffectsCallback, this, DIEFT_ALL); 139 140 //Reset the axis mapping enumeration value 141 _AxisNumber = 0; 142 143 // Enumerate and set axis constraints (and check FF Axes) 144 mJoyStick->EnumObjects(DIEnumDeviceObjectsCallback, this, DIDFT_AXIS); 138 if (mJoyInfo.isXInput) 139 { 140 mPOVs = 1; 141 142 mState.mButtons.resize(XINPUT_TRANSLATED_BUTTON_COUNT); 143 mState.mAxes.resize(XINPUT_TRANSLATED_AXIS_COUNT); 144 } 145 else 146 { 147 // Get joystick capabilities. 148 mDIJoyCaps.dwSize = sizeof(DIDEVCAPS); 149 if( FAILED(mJoyStick->GetCapabilities(&mDIJoyCaps)) ) 150 OIS_EXCEPT( E_General, "Win32JoyStick::_enumerate >> Failed to get capabilities" ); 151 152 mPOVs = (short)mDIJoyCaps.dwPOVs; 153 154 mState.mButtons.resize(mDIJoyCaps.dwButtons); 155 mState.mAxes.resize(mDIJoyCaps.dwAxes); 156 157 //Reset the axis mapping enumeration value 158 _AxisNumber = 0; 159 160 //Enumerate Force Feedback (if any) 161 mJoyStick->EnumEffects(DIEnumEffectsCallback, this, DIEFT_ALL); 162 163 //Enumerate and set axis constraints (and check FF Axes) 164 mJoyStick->EnumObjects(DIEnumDeviceObjectsCallback, this, DIDFT_AXIS); 165 } 145 166 } 146 167 … … 191 212 if((lpddoi->dwFlags & DIDOI_FFACTUATOR) != 0 ) 192 213 { 193 if( _this-> ff_device )214 if( _this->mFfDevice ) 194 215 { 195 _this-> ff_device->_addFFAxis();216 _this->mFfDevice->_addFFAxis(); 196 217 } 197 218 } … … 200 221 //as DInput has no API to query the device for these capabilities 201 222 //(the only way to know is to try them ...) 202 if( _this-> ff_device )203 { 204 _this-> ff_device->_setGainSupport(true);205 _this-> ff_device->_setAutoCenterSupport(true);223 if( _this->mFfDevice ) 224 { 225 _this->mFfDevice->_setGainSupport(true); 226 _this->mFfDevice->_setAutoCenterSupport(true); 206 227 } 207 228 … … 215 236 216 237 //Create the FF instance only after we know there is at least one effect type 217 if( _this-> ff_device == 0 )218 _this->ff_device = new Win32ForceFeedback(_this->mJoyStick, &_this->mDIJoyCaps);219 220 _this-> ff_device->_addEffectSupport( pdei);238 if( _this->mFfDevice == 0 ) 239 _this->mFfDevice = new Win32ForceFeedback(_this->mJoyStick, &_this->mDIJoyCaps); 240 241 _this->mFfDevice->_addEffectSupport(pdei); 221 242 222 243 return DIENUM_CONTINUE; … … 226 247 void Win32JoyStick::capture() 227 248 { 249 #ifdef OIS_WIN32_XINPUT_SUPPORT 250 //handle xbox controller differently 251 if (mJoyInfo.isXInput) 252 { 253 captureXInput(); 254 return; 255 } 256 #endif 257 258 //handle directinput based devices 228 259 DIDEVICEOBJECTDATA diBuff[JOYSTICK_DX_BUFFERSIZE]; 229 260 DWORD entries = JOYSTICK_DX_BUFFERSIZE; … … 241 272 242 273 // Poll the device to read the current state 243 274 mJoyStick->Poll(); 244 275 hr = mJoyStick->GetDeviceData( sizeof(DIDEVICEOBJECTDATA), diBuff, &entries, 0 ); 245 276 //Perhaps the user just tabbed away … … 353 384 354 385 //--------------------------------------------------------------------------------------------------// 386 void Win32JoyStick::captureXInput() 387 { 388 #ifdef OIS_WIN32_XINPUT_SUPPORT 389 XINPUT_STATE inputState; 390 if (XInputGetState((DWORD)mJoyInfo.xInputDev, &inputState) != ERROR_SUCCESS) 391 memset(&inputState, 0, sizeof(inputState)); 392 393 //Sticks and triggers 394 int value; 395 bool axisMoved[XINPUT_TRANSLATED_AXIS_COUNT] = {false,false,false,false,false,false}; 396 397 //LeftY 398 value = -(int)inputState.Gamepad.sThumbLY; 399 mState.mAxes[0].rel = value - mState.mAxes[0].abs; 400 mState.mAxes[0].abs = value; 401 if(mState.mAxes[0].rel != 0) 402 axisMoved[0] = true; 403 404 //LeftX 405 mState.mAxes[1].rel = inputState.Gamepad.sThumbLX - mState.mAxes[1].abs; 406 mState.mAxes[1].abs = inputState.Gamepad.sThumbLX; 407 408 if(mState.mAxes[1].rel != 0) 409 axisMoved[1] = true; 410 411 //RightY 412 value = -(int)inputState.Gamepad.sThumbRY; 413 mState.mAxes[2].rel = value - mState.mAxes[2].abs; 414 mState.mAxes[2].abs = value; 415 if(mState.mAxes[2].rel != 0) 416 axisMoved[2] = true; 417 418 //RightX 419 mState.mAxes[3].rel = inputState.Gamepad.sThumbRX - mState.mAxes[3].abs; 420 mState.mAxes[3].abs = inputState.Gamepad.sThumbRX; 421 if(mState.mAxes[3].rel != 0) 422 axisMoved[3] = true; 423 424 //Left trigger 425 value = inputState.Gamepad.bLeftTrigger * 129; 426 if(value > JoyStick::MAX_AXIS) 427 value = JoyStick::MAX_AXIS; 428 429 mState.mAxes[4].rel = value - mState.mAxes[4].abs; 430 mState.mAxes[4].abs = value; 431 if(mState.mAxes[4].rel != 0) 432 axisMoved[4] = true; 433 434 //Right trigger 435 value = (int)inputState.Gamepad.bRightTrigger * 129; 436 if(value > JoyStick::MAX_AXIS) 437 value = JoyStick::MAX_AXIS; 438 439 mState.mAxes[5].rel = value - mState.mAxes[5].abs; 440 mState.mAxes[5].abs = value; 441 if(mState.mAxes[5].rel != 0) 442 axisMoved[5] = true; 443 444 //POV 445 int previousPov = mState.mPOV[0].direction; 446 int& pov = mState.mPOV[0].direction; 447 pov = Pov::Centered; 448 if (inputState.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP) 449 pov |= Pov::North; 450 else if (inputState.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN) 451 pov |= Pov::South; 452 if (inputState.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT) 453 pov |= Pov::West; 454 else if (inputState.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) 455 pov |= Pov::East; 456 457 //Buttons - The first 4 buttons don't need to be checked since they represent the dpad 458 bool previousButtons[XINPUT_TRANSLATED_BUTTON_COUNT]; 459 std::copy(mState.mButtons.begin(), mState.mButtons.end(), previousButtons); 460 for (size_t i = 0; i < XINPUT_TRANSLATED_BUTTON_COUNT; i++) 461 mState.mButtons[i] = (inputState.Gamepad.wButtons & (1 << (i + 4))) != 0; 462 463 //Send events 464 if (mBuffered && mListener) 465 { 466 JoyStickEvent joystickEvent(this, mState); 467 468 //Axes 469 for (int i = 0; i < XINPUT_TRANSLATED_AXIS_COUNT; i++) 470 { 471 if (axisMoved[i] && !mListener->axisMoved(joystickEvent, i)) 472 return; 473 } 474 475 //POV 476 if (previousPov != pov && !mListener->povMoved(joystickEvent, 0)) 477 return; 478 479 //Buttons 480 for (int i = 0; i < XINPUT_TRANSLATED_BUTTON_COUNT; i++) 481 { 482 if (!previousButtons[i] && mState.mButtons[i]) 483 { 484 if (!mListener->buttonPressed(joystickEvent, i)) 485 return; 486 } 487 else if (previousButtons[i] && !mState.mButtons[i]) 488 { 489 if (!mListener->buttonReleased(joystickEvent, i)) 490 return; 491 } 492 } 493 } 494 #endif 495 } 496 497 //--------------------------------------------------------------------------------------------------// 355 498 bool Win32JoyStick::_doButtonClick( int button, DIDEVICEOBJECTDATA& di ) 356 499 { … … 410 553 Interface* Win32JoyStick::queryInterface(Interface::IType type) 411 554 { 412 //Thought about using covariant return type here.. however, 413 //some devices may allow LED light changing, or other interface stuff 414 415 if( ff_device && type == Interface::ForceFeedback ) 416 return ff_device; 555 if( mFfDevice && type == Interface::ForceFeedback ) 556 return mFfDevice; 417 557 else 418 558 return 0; 419 559 } 560 561 //--------------------------------------------------------------------------------------------------// 562 void Win32JoyStick::CheckXInputDevices(JoyStickInfoList &joys) 563 { 564 IWbemLocator* pIWbemLocator = NULL; 565 IEnumWbemClassObject* pEnumDevices = NULL; 566 IWbemClassObject* pDevices[20] = {0}; 567 IWbemServices* pIWbemServices = NULL; 568 BSTR bstrNamespace = NULL; 569 BSTR bstrDeviceID = NULL; 570 BSTR bstrClassName = NULL; 571 DWORD uReturned = 0; 572 bool bIsXinputDevice= false; 573 DWORD iDevice = 0; 574 int xDevice = 0; 575 VARIANT var; 576 HRESULT hr; 577 578 if(joys.size() == 0) 579 return; 580 581 // CoInit if needed 582 hr = CoInitialize(NULL); 583 bool bCleanupCOM = SUCCEEDED(hr); 584 585 // Create WMI 586 hr = CoCreateInstance(__uuidof(WbemLocator), NULL, CLSCTX_INPROC_SERVER, __uuidof(IWbemLocator), (LPVOID*)&pIWbemLocator); 587 if( FAILED(hr) || pIWbemLocator == NULL ) 588 goto LCleanup; 589 590 bstrNamespace = SysAllocString( L"\\\\.\\root\\cimv2" ); 591 if( bstrNamespace == NULL ) 592 goto LCleanup; 593 594 bstrClassName = SysAllocString( L"Win32_PNPEntity" ); 595 if( bstrClassName == NULL ) 596 goto LCleanup; 597 598 bstrDeviceID = SysAllocString( L"DeviceID" ); 599 if( bstrDeviceID == NULL ) 600 goto LCleanup; 601 602 // Connect to WMI 603 hr = pIWbemLocator->ConnectServer( bstrNamespace, NULL, NULL, 0L, 0L, NULL, NULL, &pIWbemServices ); 604 if( FAILED(hr) || pIWbemServices == NULL ) 605 goto LCleanup; 606 607 // Switch security level to IMPERSONATE. 608 CoSetProxyBlanket(pIWbemServices, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE ); 609 610 hr = pIWbemServices->CreateInstanceEnum( bstrClassName, 0, NULL, &pEnumDevices ); 611 if( FAILED(hr) || pEnumDevices == NULL ) 612 goto LCleanup; 613 614 // Loop over all devices 615 for( ;; ) 616 { 617 // Get 20 at a time 618 hr = pEnumDevices->Next(5000, 20, pDevices, &uReturned); 619 if( FAILED(hr) ) 620 goto LCleanup; 621 622 if( uReturned == 0 ) 623 break; 624 625 for(iDevice = 0; iDevice < uReturned; iDevice++) 626 { 627 // For each device, get its device ID 628 hr = pDevices[iDevice]->Get(bstrDeviceID, 0L, &var, NULL, NULL); 629 if(SUCCEEDED(hr) && var.vt == VT_BSTR && var.bstrVal != NULL) 630 { 631 // Check if the device ID contains "IG_". If it does, then it's an XInput device - This information can not be found from DirectInput 632 if(wcsstr(var.bstrVal, L"IG_")) 633 { 634 // If it does, then get the VID/PID from var.bstrVal 635 DWORD dwPid = 0, dwVid = 0; 636 WCHAR* strVid = wcsstr( var.bstrVal, L"VID_" ); 637 if(strVid && swscanf_s( strVid, L"VID_%4X", &dwVid ) != 1) 638 dwVid = 0; 639 640 WCHAR* strPid = wcsstr( var.bstrVal, L"PID_" ); 641 if(strPid && swscanf_s( strPid, L"PID_%4X", &dwPid ) != 1) 642 dwPid = 0; 643 644 // Compare the VID/PID to the DInput device 645 DWORD dwVidPid = MAKELONG(dwVid, dwPid); 646 for(JoyStickInfoList::iterator i = joys.begin(); i != joys.end(); ++i) 647 { 648 if(dwVidPid == i->productGuid.Data1) 649 { 650 i->isXInput = true; 651 i->xInputDev = xDevice; 652 } 653 } 654 655 if(joys.size() == 0) 656 goto LCleanup; 657 } 658 } 659 660 SAFE_RELEASE(pDevices[iDevice]); 661 } 662 } 663 664 LCleanup: 665 if(bstrNamespace) 666 SysFreeString(bstrNamespace); 667 668 if(bstrDeviceID) 669 SysFreeString(bstrDeviceID); 670 671 if(bstrClassName) 672 SysFreeString(bstrClassName); 673 674 for(iDevice=0; iDevice < 20; iDevice++) 675 SAFE_RELEASE(pDevices[iDevice]); 676 677 SAFE_RELEASE(pEnumDevices); 678 SAFE_RELEASE(pIWbemLocator); 679 SAFE_RELEASE(pIWbemServices); 680 681 if(bCleanupCOM) 682 CoUninitialize(); 683 } -
code/branches/kicklib/src/external/ois/win32/Win32JoyStick.h
r5781 r8071 25 25 26 26 #include "OISJoyStick.h" 27 #include " Win32/Win32Prereqs.h"27 #include "win32/Win32Prereqs.h" 28 28 29 29 namespace OIS … … 41 41 virtual void capture(); 42 42 43 //! hanlde xinput 44 void captureXInput(); 45 43 46 /** @copydoc Object::queryInterface */ 44 47 virtual Interface* queryInterface(Interface::IType type); … … 46 49 /** @copydoc Object::_initialize */ 47 50 virtual void _initialize(); 51 52 /** 53 @remarks 54 Enum each PNP device using WMI and check each device ID to see if it contains 55 "IG_" (ex. "VID_045E&PID_028E&IG_00"). If it does, then it's an XInput device 56 Unfortunately this information can not be found by just using DirectInput 57 */ 58 static void CheckXInputDevices(JoyStickInfoList &joys); 48 59 49 60 protected: … … 61 72 IDirectInputDevice8* mJoyStick; 62 73 DIDEVCAPS mDIJoyCaps; 74 DWORD coopSetting; 63 75 64 DWORD coopSetting; 65 GUID deviceGuid; 76 JoyStickInfo mJoyInfo; 66 77 67 78 //! A force feedback device 68 Win32ForceFeedback* ff_device;79 Win32ForceFeedback* mFfDevice; 69 80 70 81 //! Mapping -
code/branches/kicklib/src/external/ois/win32/Win32KeyBoard.cpp
r5781 r8071 21 21 3. This notice may not be removed or altered from any source distribution. 22 22 */ 23 #include " Win32/Win32InputManager.h"24 #include " Win32/Win32KeyBoard.h"23 #include "win32/Win32InputManager.h" 24 #include "win32/Win32KeyBoard.h" 25 25 #include "OISException.h" 26 26 #include "OISEvents.h" … … 287 287 288 288 //--------------------------------------------------------------------------------------------------// 289 const std::string& Win32Keyboard::getAsString( KeyCode kc)289 const std::string& Win32Keyboard::getAsString(KeyCode kc) 290 290 { 291 291 char temp[256]; … … 297 297 prop.diph.dwHow = DIPH_BYOFFSET; 298 298 299 if ( SUCCEEDED( mKeyboard->GetProperty( DIPROP_KEYNAME, &prop.diph ) ))299 if (SUCCEEDED(mKeyboard->GetProperty(DIPROP_KEYNAME, &prop.diph))) 300 300 { 301 301 // convert the WCHAR in "wsz" to multibyte 302 if ( WideCharToMultiByte( CP_ACP, 0, prop.wsz, -1, temp, sizeof(temp), NULL, NULL))303 return mGetString.assign( temp);302 if (WideCharToMultiByte(CP_ACP, 0, prop.wsz, -1, temp, sizeof(temp), NULL, NULL)) 303 return mGetString.assign(temp); 304 304 } 305 305 306 306 std::stringstream ss; 307 307 ss << "Key_" << (int)kc; 308 return mGetString.assign( ss.str());308 return mGetString.assign(ss.str()); 309 309 } 310 310 -
code/branches/kicklib/src/external/ois/win32/Win32KeyBoard.h
r5781 r8071 25 25 26 26 #include "OISKeyboard.h" 27 #include " Win32/Win32Prereqs.h"27 #include "win32/Win32Prereqs.h" 28 28 29 29 namespace OIS … … 42 42 A combination of DI Flags (see DX Help for info on input device settings) 43 43 */ 44 Win32Keyboard( InputManager* creator, IDirectInput8* pDI, bool buffered, DWORD coopSettings);44 Win32Keyboard(InputManager* creator, IDirectInput8* pDI, bool buffered, DWORD coopSettings); 45 45 virtual ~Win32Keyboard(); 46 46 47 47 /** @copydoc Keyboard::isKeyDown */ 48 virtual bool isKeyDown( KeyCode key) const;48 virtual bool isKeyDown(KeyCode key) const; 49 49 50 50 /** @copydoc Keyboard::getAsString */ 51 virtual const std::string& getAsString( KeyCode kc);51 virtual const std::string& getAsString(KeyCode kc); 52 52 53 53 /** @copydoc Keyboard::copyKeyStates */ 54 virtual void copyKeyStates( char keys[256]) const;54 virtual void copyKeyStates(char keys[256]) const; 55 55 56 56 /** @copydoc Object::setBuffered */ -
code/branches/kicklib/src/external/ois/win32/Win32Mouse.cpp
r5781 r8071 21 21 3. This notice may not be removed or altered from any source distribution. 22 22 */ 23 #include " Win32/Win32Mouse.h"24 #include " Win32/Win32InputManager.h"23 #include "win32/Win32Mouse.h" 24 #include "win32/Win32InputManager.h" 25 25 #include "OISException.h" 26 26 #include "OISEvents.h" -
code/branches/kicklib/src/external/ois/win32/Win32Mouse.h
r5781 r8071 25 25 26 26 #include "OISMouse.h" 27 #include " Win32/Win32Prereqs.h"27 #include "win32/Win32Prereqs.h" 28 28 29 29 namespace OIS -
code/branches/kicklib/src/external/ois/win32/Win32Prereqs.h
r5781 r8071 29 29 #include <dinput.h> 30 30 31 #ifdef OIS_WIN32_XINPUT_SUPPORT 32 # include <XInput.h> 33 #endif 34 31 35 //Max number of elements to collect from buffered DirectInput 32 36 #define KEYBOARD_DX_BUFFERSIZE 17 33 #define MOUSE_DX_BUFFERSIZE 6434 #define JOYSTICK_DX_BUFFERSIZE 12 437 #define MOUSE_DX_BUFFERSIZE 128 38 #define JOYSTICK_DX_BUFFERSIZE 129 35 39 36 40 //MinGW defines … … 55 59 int devId; 56 60 GUID deviceID; 61 GUID productGuid; 57 62 std::string vendor; 63 bool isXInput; 64 int xInputDev; 58 65 }; 59 66 60 typedef std::vector< JoyStickInfo> JoyStickInfoList;67 typedef std::vector<JoyStickInfo> JoyStickInfoList; 61 68 } 62 69 -
code/branches/kicklib/src/libraries/core/Core.cc
r7872 r8071 81 81 82 82 SetCommandLineArgument(settingsFile, "orxonox.ini").information("THE configuration file"); 83 #ifndef ORXONOX_PLATFORM_APPLE 83 84 SetCommandLineSwitch(noIOConsole).information("Use this if you don't want to use the IOConsole (for instance for Lua debugging)"); 85 #endif 84 86 85 87 #ifdef ORXONOX_PLATFORM_WINDOWS … … 156 158 this->setConfigValues(); 157 159 158 // create persistent io console 160 #ifndef ORXONOX_PLATFORM_APPLE 161 // Create persistent IO console 159 162 if (CommandLineParser::getValue("noIOConsole").getBool()) 160 163 { … … 163 166 if (this->bStartIOConsole_) 164 167 this->ioConsole_.reset(new IOConsole()); 168 #endif 165 169 166 170 // creates the class hierarchy for all classes with factories -
code/branches/kicklib/src/libraries/core/CorePrereqs.h
r8066 r8071 54 54 # endif 55 55 # endif 56 #elif defined ( ORXONOX_GCC_VISIBILITY ) 56 # define _CorePrivate 57 #elif defined (ORXONOX_GCC_VISIBILITY) 57 58 # define _CoreExport __attribute__ ((visibility("default"))) 59 # define _CorePrivate __attribute__ ((visibility("hidden"))) 58 60 #else 59 61 # define _CoreExport 62 # define _CorePrivate 60 63 #endif 61 64 -
code/branches/kicklib/src/libraries/core/DynLib.cc
r6417 r8071 42 42 #endif 43 43 44 #ifdef ORXONOX_PLATFORM_ LINUX44 #ifdef ORXONOX_PLATFORM_UNIX 45 45 # include <dlfcn.h> 46 46 #endif 47 47 48 48 #ifdef ORXONOX_PLATFORM_APPLE 49 # include <macPlugins.h>49 # include <OSX/macUtils.h> // OGRE include 50 50 #endif 51 51 … … 75 75 if (name.substr(name.length() - 3, 3) != ".so") 76 76 name += ".so"; 77 #elif OGRE_PLATFORM == OGRE_PLATFORM_APPLE 78 // dlopen() does not add .dylib to the filename, like windows does for .dll 79 if (name.substr(name.length() - 6, 6) != ".dylib") 80 name += ".dylib"; 81 #elif OGRE_PLATFORM == OGRE_PLATFORM_WIN32 82 // Although LoadLibraryEx will add .dll itself when you only specify the library name, 83 // if you include a relative path then it does not. So, add it to be sure. 84 if (name.substr(name.length() - 4, 4) != ".dll") 85 name += ".dll"; 77 86 #endif 78 87 … … 127 136 LocalFree( lpMsgBuf ); 128 137 return ret; 129 #elif defined(ORXONOX_PLATFORM_ LINUX)138 #elif defined(ORXONOX_PLATFORM_UNIX) 130 139 return std::string(dlerror()); 131 #elif defined(ORXONOX_PLATFORM_APPLE)132 return std::string(mac_errorBundle());133 140 #else 134 141 return ""; 135 142 #endif 136 143 } 137 138 144 } -
code/branches/kicklib/src/libraries/core/DynLib.h
r7401 r8071 52 52 typedef struct HINSTANCE__* hInstance; 53 53 54 #elif defined(ORXONOX_PLATFORM_ LINUX)54 #elif defined(ORXONOX_PLATFORM_UNIX) 55 55 # define DYNLIB_HANDLE void* 56 56 # define DYNLIB_LOAD( a ) dlopen( a, RTLD_LAZY | RTLD_GLOBAL) 57 57 # define DYNLIB_GETSYM( a, b ) dlsym( a, b ) 58 58 # define DYNLIB_UNLOAD( a ) dlclose( a ) 59 60 #elif defined(ORXONOX_PLATFORM_APPLE)61 # define DYNLIB_HANDLE CFBundleRef62 # define DYNLIB_LOAD( a ) mac_loadExeBundle( a )63 # define DYNLIB_GETSYM( a, b ) mac_getBundleSym( a, b )64 # define DYNLIB_UNLOAD( a ) mac_unloadExeBundle( a )65 59 #endif 66 60 … … 116 110 117 111 protected: 118 119 112 /// Handle to the loaded library. 120 113 DYNLIB_HANDLE m_hInst; -
code/branches/kicklib/src/libraries/core/GUIManager.cc
r8067 r8071 436 436 void GUIManager::buttonPressed(MouseButtonCode::ByEnum id) 437 437 { 438 //guiSystem_->injectMouseButtonDown(convertButton(id)); 438 439 this->protectedCall(boost::bind(&CEGUI::System::injectMouseButtonDown, _1, convertButton(id))); 439 440 } -
code/branches/kicklib/src/libraries/core/GraphicsManager.cc
r8066 r8071 269 269 270 270 Ogre::WindowEventUtilities::addWindowEventListener(this->renderWindow_, ogreWindowEventListener_.get()); 271 271 272 // HACK 273 #ifdef ORXONOX_PLATFORM_APPLE 274 //INFO: This will give our window focus, and not lock it to the terminal 275 ProcessSerialNumber psn = {0, kCurrentProcess}; 276 TransformProcessType(&psn, kProcessTransformToForegroundApplication); 277 SetFrontProcess(&psn); 278 #endif 279 // End of HACK 280 272 281 // create a full screen default viewport 273 282 // Note: This may throw when adding a viewport with an existing z-order! -
code/branches/kicklib/src/libraries/core/Identifier.h
r7401 r8071 123 123 124 124 /// Returns the unique ID of the class. 125 FORCEINLINE unsigned int getClassID() const { return this->classID_; }125 ORX_FORCEINLINE unsigned int getClassID() const { return this->classID_; } 126 126 127 127 /// Returns the list of all existing objects of this class. … … 486 486 */ 487 487 template <class T, class U> 488 FORCEINLINE T orxonox_cast(U* source)488 ORX_FORCEINLINE T orxonox_cast(U* source) 489 489 { 490 490 #ifdef ORXONOX_COMPILER_MSVC -
code/branches/kicklib/src/libraries/core/OrxonoxClass.h
r7938 r8071 135 135 Returns NULL if the no pointer was found. 136 136 */ 137 FORCEINLINE void* getDerivedPointer(unsigned int classID)137 ORX_FORCEINLINE void* getDerivedPointer(unsigned int classID) 138 138 { 139 139 for (int i = this->objectPointers_.size() - 1; i >= 0; --i) … … 146 146 147 147 /// Version of getDerivedPointer with template 148 template <class T> FORCEINLINE T* getDerivedPointer(unsigned int classID)148 template <class T> ORX_FORCEINLINE T* getDerivedPointer(unsigned int classID) 149 149 { return static_cast<T*>(this->getDerivedPointer(classID)); } 150 150 /// Const version of getDerivedPointer with template 151 template <class T> FORCEINLINE const T* getDerivedPointer(unsigned int classID) const151 template <class T> ORX_FORCEINLINE const T* getDerivedPointer(unsigned int classID) const 152 152 { return const_cast<OrxonoxClass*>(this)->getDerivedPointer<T>(classID); } 153 153 -
code/branches/kicklib/src/libraries/core/PathConfig.cc
r8066 r8071 97 97 #elif defined(ORXONOX_PLATFORM_APPLE) 98 98 char buffer[1024]; 99 u nsigned longpath_len = 1023;99 uint32_t path_len = 1023; 100 100 if (_NSGetExecutablePath(buffer, &path_len)) 101 101 ThrowException(General, "Could not retrieve executable path."); … … 127 127 #endif 128 128 129 executablePath_ = bf::path(buffer); 130 #ifndef ORXONOX_PLATFORM_APPLE 131 executablePath_ = executablePath_.branch_path(); // remove executable name 132 #endif 129 // Remove executable filename 130 executablePath_ = bf::path(buffer).branch_path(); 133 131 134 132 ///////////////////// … … 208 206 209 207 // Get user directory 210 # ifdef ORXONOX_PLATFORM_UNIX /* Apple? */208 #ifdef ORXONOX_PLATFORM_UNIX 211 209 char* userDataPathPtr(getenv("HOME")); 212 # else 210 #elif ORXONOX_PLATFORM_APPLE 211 char* userDataPathPtr(getenv("HOME")); 212 #else 213 213 char* userDataPathPtr(getenv("APPDATA")); 214 # 214 #endif 215 215 if (userDataPathPtr == NULL) 216 216 ThrowException(General, "Could not retrieve user data path."); -
code/branches/kicklib/src/libraries/core/Super.h
r7401 r8071 94 94 struct SuperFunctionCondition<functionnumber, T, 0, templatehack2> \ 95 95 { \ 96 static void check() \96 static void superCheck() \ 97 97 { \ 98 98 SuperFunctionCondition<functionnumber, T, 0, templatehack2>::apply(static_cast<T*>(0)); \ 99 SuperFunctionCondition<functionnumber + 1, T, 0, templatehack2>:: check(); \99 SuperFunctionCondition<functionnumber + 1, T, 0, templatehack2>::superCheck(); \ 100 100 } \ 101 101 \ … … 132 132 struct SuperFunctionCondition<functionnumber, baseclass, 0, templatehack2> \ 133 133 { \ 134 static void check() \135 { \ 136 SuperFunctionCondition<functionnumber + 1, baseclass, 0, templatehack2>:: check(); \134 static void superCheck() \ 135 { \ 136 SuperFunctionCondition<functionnumber + 1, baseclass, 0, templatehack2>::superCheck(); \ 137 137 } \ 138 138 }; … … 150 150 struct SuperFunctionCondition<functionnumber, T, 0, templatehack2> 151 151 { 152 static void check()152 static void superCheck() 153 153 { 154 154 // This call to the apply-function is the whole check. By calling the function with … … 156 156 SuperFunctionCondition<functionnumber, T, 0, templatehack2>::apply(static_cast<T*>(0)); 157 157 158 // Go go the check for of next super-function (functionnumber + 1)159 SuperFunctionCondition<functionnumber + 1, T, 0, templatehack2>:: check();158 // Go go the superCheck for of next super-function (functionnumber + 1) 159 SuperFunctionCondition<functionnumber + 1, T, 0, templatehack2>::superCheck(); 160 160 } 161 161 … … 202 202 struct SuperFunctionCondition<functionnumber, baseclass, 0, templatehack2> \ 203 203 { \ 204 // The check function acts like the fallback - it advances to the check for the next super-function (functionnumber + 1)205 static void check() \206 { \ 207 SuperFunctionCondition<functionnumber + 1, baseclass, 0, templatehack2>:: check(); \204 // The superCheck function acts like the fallback - it advances to the check for the next super-function (functionnumber + 1) 205 static void superCheck() \ 206 { \ 207 SuperFunctionCondition<functionnumber + 1, baseclass, 0, templatehack2>::superCheck(); \ 208 208 } \ 209 209 }; … … 303 303 struct SuperFunctionCondition 304 304 { 305 static void check() {}305 static void superCheck() {} 306 306 }; 307 307 … … 338 338 struct SuperFunctionCondition<functionnumber, T, templatehack1, templatehack2> \ 339 339 { \ 340 static void check() \340 static void superCheck() \ 341 341 { \ 342 SuperFunctionCondition<functionnumber + 1, T, templatehack1, templatehack2>:: check(); \342 SuperFunctionCondition<functionnumber + 1, T, templatehack1, templatehack2>::superCheck(); \ 343 343 } \ 344 344 }; \ … … 421 421 // If this function gets called, the header-file of the super function is not 422 422 // included, so this fallback template (templatehack not specialized) is used 423 static void check()423 static void superCheck() 424 424 { 425 425 // Calls the condition-check of the next super-function (functionnumber + 1) 426 SuperFunctionCondition<functionnumber + 1, T, templatehack1, templatehack2>:: check();426 SuperFunctionCondition<functionnumber + 1, T, templatehack1, templatehack2>::superCheck(); 427 427 } 428 428 }; … … 574 574 virtual void createSuperFunctionCaller() const 575 575 { 576 SuperFunctionCondition<0, T, 0, 0>:: check();576 SuperFunctionCondition<0, T, 0, 0>::superCheck(); 577 577 } 578 578 -
code/branches/kicklib/src/libraries/core/command/Functor.h
r7871 r8071 244 244 FunctorMember(O* object = 0) : object_(object), bSafeMode_(false) {} 245 245 virtual ~FunctorMember() { if (this->bSafeMode_) { this->unregisterObject(this->object_); } } 246 virtual ~FunctorMember() {} 246 247 247 248 /// Calls the function-pointer with up to five arguments and an object. In case of a static-function, the object can be NULL. @return Returns the return-value of the function (if any; MT_Type::Null otherwise) -
code/branches/kicklib/src/libraries/core/input/InputDevice.h
r7271 r8071 184 184 protected: 185 185 //! Common code for all button pressed events (updates pressed buttons list and calls the input states) 186 FORCEINLINE void buttonPressed(ButtonTypeParam button)186 ORX_FORCEINLINE void buttonPressed(ButtonTypeParam button) 187 187 { 188 188 // check whether the button already is in the list (can happen when focus was lost) … … 201 201 202 202 //! Common code for all button released events (updates pressed buttons list and calls the input states) 203 FORCEINLINE void buttonReleased(ButtonTypeParam button)203 ORX_FORCEINLINE void buttonReleased(ButtonTypeParam button) 204 204 { 205 205 // remove the button from the pressedButtons_ list -
code/branches/kicklib/src/libraries/core/input/InputState.h
r7401 r8071 176 176 }; 177 177 178 FORCEINLINE void InputState::update(float dt)178 ORX_FORCEINLINE void InputState::update(float dt) 179 179 { 180 180 for (unsigned int i = 0; i < handlers_.size(); ++i) … … 183 183 } 184 184 185 FORCEINLINE void InputState::update(float dt, unsigned int device)185 ORX_FORCEINLINE void InputState::update(float dt, unsigned int device) 186 186 { 187 187 switch (device) … … 205 205 206 206 template <typename EventType, class ButtonTypeParam> 207 FORCEINLINE void InputState::buttonEvent(unsigned int device, ButtonTypeParam button)207 ORX_FORCEINLINE void InputState::buttonEvent(unsigned int device, ButtonTypeParam button) 208 208 { 209 209 assert(device < handlers_.size()); … … 216 216 } 217 217 218 FORCEINLINE void InputState::mouseMoved(IntVector2 abs, IntVector2 rel, IntVector2 clippingSize)218 ORX_FORCEINLINE void InputState::mouseMoved(IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) 219 219 { 220 220 if (handlers_[mouseIndex_s] != NULL) … … 222 222 } 223 223 224 FORCEINLINE void InputState::mouseScrolled(int abs, int rel)224 ORX_FORCEINLINE void InputState::mouseScrolled(int abs, int rel) 225 225 { 226 226 if (handlers_[mouseIndex_s] != NULL) … … 228 228 } 229 229 230 FORCEINLINE void InputState::joyStickAxisMoved(unsigned int device, unsigned int axis, float value)230 ORX_FORCEINLINE void InputState::joyStickAxisMoved(unsigned int device, unsigned int axis, float value) 231 231 { 232 232 assert(device < handlers_.size()); -
code/branches/kicklib/src/libraries/network/LANDiscoverable.cc
r7801 r8071 29 29 #include "LANDiscoverable.h" 30 30 31 #include "NetworkPrereqs.h"32 #include "packet/ServerInformation.h"33 34 31 #include <enet/enet.h> 35 32 #include <cassert> 36 33 #include <cstring> 34 35 #include "util/Debug.h" 36 #include "packet/ServerInformation.h" 37 37 38 38 namespace orxonox -
code/branches/kicklib/src/libraries/network/NetworkPrereqs.h
r7801 r8071 52 52 # endif 53 53 # endif 54 #elif defined ( ORXONOX_GCC_VISIBILITY ) 54 # define _NetworkPrivate 55 #elif defined (ORXONOX_GCC_VISIBILITY) 55 56 # define _NetworkExport __attribute__ ((visibility("default"))) 57 # define _NetworkPrivate __attribute__ ((visibility("hidden"))) 56 58 #else 57 59 # define _NetworkExport 60 # define _NetworkPrivate 58 61 #endif 59 62 -
code/branches/kicklib/src/libraries/tools/BulletConversions.h
r5781 r8071 43 43 struct ConverterExplicit<orxonox::Vector3, btVector3> 44 44 { 45 FORCEINLINE static bool convert(btVector3* output, const orxonox::Vector3& input)45 ORX_FORCEINLINE static bool convert(btVector3* output, const orxonox::Vector3& input) 46 46 { 47 47 output->setX(input.x); … … 56 56 struct ConverterExplicit<btVector3, orxonox::Vector3> 57 57 { 58 FORCEINLINE static bool convert(orxonox::Vector3* output, const btVector3& input)58 ORX_FORCEINLINE static bool convert(orxonox::Vector3* output, const btVector3& input) 59 59 { 60 60 output->x = input.x(); … … 69 69 struct ConverterExplicit<orxonox::Quaternion, btQuaternion> 70 70 { 71 FORCEINLINE static bool convert(btQuaternion* output, const orxonox::Quaternion& input)71 ORX_FORCEINLINE static bool convert(btQuaternion* output, const orxonox::Quaternion& input) 72 72 { 73 73 output->setW(input.w); … … 83 83 struct ConverterExplicit<btQuaternion, orxonox::Quaternion> 84 84 { 85 FORCEINLINE static bool convert(orxonox::Quaternion* output, const btQuaternion& input)85 ORX_FORCEINLINE static bool convert(orxonox::Quaternion* output, const btQuaternion& input) 86 86 { 87 87 output->w = input.w(); -
code/branches/kicklib/src/libraries/tools/ToolsPrereqs.h
r7163 r8071 52 52 # endif 53 53 # endif 54 #elif defined ( ORXONOX_GCC_VISIBILITY ) 54 # define _ToolsPrivate 55 #elif defined (ORXONOX_GCC_VISIBILITY) 55 56 # define _ToolsExport __attribute__ ((visibility("default"))) 57 # define _ToolsPrivate __attribute__ ((visibility("hidden"))) 56 58 #else 57 59 # define _ToolsExport 60 # define _ToolsPrivate 58 61 #endif 59 62 -
code/branches/kicklib/src/libraries/util/Convert.h
r7401 r8071 143 143 struct ConverterFallback 144 144 { 145 FORCEINLINE static bool convert(ToType* output, const FromType& input)145 ORX_FORCEINLINE static bool convert(ToType* output, const FromType& input) 146 146 { 147 147 COUT(2) << "Could not convert value of type " << typeid(FromType).name() … … 155 155 struct ConverterFallback<FromType*, ToType*> 156 156 { 157 FORCEINLINE static bool convert(ToType** output, FromType* const input)157 ORX_FORCEINLINE static bool convert(ToType** output, FromType* const input) 158 158 { 159 159 ToType* temp = dynamic_cast<ToType*>(input); … … 182 182 struct ConverterStringStream 183 183 { 184 FORCEINLINE static bool convert(ToType* output, const FromType& input)184 ORX_FORCEINLINE static bool convert(ToType* output, const FromType& input) 185 185 { 186 186 return orxonox::ConverterFallback<FromType, ToType>::convert(output, input); … … 198 198 /// Fallback operator <<() (delegates to orxonox::ConverterFallback) 199 199 template <class FromType> 200 FORCEINLINE bool operator <<(std::ostream& outstream, const FromType& input)200 ORX_FORCEINLINE bool operator <<(std::ostream& outstream, const FromType& input) 201 201 { 202 202 std::string temp; … … 215 215 struct ConverterStringStream<FromType, std::string> 216 216 { 217 FORCEINLINE static bool convert(std::string* output, const FromType& input)217 ORX_FORCEINLINE static bool convert(std::string* output, const FromType& input) 218 218 { 219 219 using namespace fallbackTemplates; … … 241 241 /// Fallback operator >>() (delegates to orxonox::ConverterFallback) 242 242 template <class ToType> 243 FORCEINLINE bool operator >>(std::istream& instream, ToType& output)243 ORX_FORCEINLINE bool operator >>(std::istream& instream, ToType& output) 244 244 { 245 245 std::string input(static_cast<std::istringstream&>(instream).str()); … … 252 252 struct ConverterStringStream<std::string, ToType> 253 253 { 254 FORCEINLINE static bool convert(ToType* output, const std::string& input)254 ORX_FORCEINLINE static bool convert(ToType* output, const std::string& input) 255 255 { 256 256 using namespace fallbackTemplates; … … 276 276 /// %Template delegates to ::ConverterStringStream 277 277 template <class FromType, class ToType> 278 FORCEINLINE bool convertImplicitely(ToType* output, const FromType& input, Loki::Int2Type<false>)278 ORX_FORCEINLINE bool convertImplicitely(ToType* output, const FromType& input, Loki::Int2Type<false>) 279 279 { 280 280 return ConverterStringStream<FromType, ToType>::convert(output, input); … … 283 283 /// Makes an implicit cast from \a FromType to \a ToType 284 284 template <class FromType, class ToType> 285 FORCEINLINE bool convertImplicitely(ToType* output, const FromType& input, Loki::Int2Type<true>)285 ORX_FORCEINLINE bool convertImplicitely(ToType* output, const FromType& input, Loki::Int2Type<true>) 286 286 { 287 287 (*output) = static_cast<ToType>(input); … … 303 303 { 304 304 enum { probe = ImplicitConversion<FromType, ToType>::exists }; 305 FORCEINLINE static bool convert(ToType* output, const FromType& input)305 ORX_FORCEINLINE static bool convert(ToType* output, const FromType& input) 306 306 { 307 307 // Use the probe's value to delegate to the right function … … 327 327 */ 328 328 template <class FromType, class ToType> 329 FORCEINLINE bool convertValue(ToType* output, const FromType& input)329 ORX_FORCEINLINE bool convertValue(ToType* output, const FromType& input) 330 330 { 331 331 return ConverterExplicit<FromType, ToType>::convert(output, input); … … 348 348 */ 349 349 template<class FromType, class ToType> 350 FORCEINLINE bool convertValue(ToType* output, const FromType& input, const ToType& fallback)350 ORX_FORCEINLINE bool convertValue(ToType* output, const FromType& input, const ToType& fallback) 351 351 { 352 352 if (convertValue(output, input)) … … 361 361 /// Directly returns the converted value, but uses the fallback on failure. @see convertValue 362 362 template<class FromType, class ToType> 363 FORCEINLINE ToType getConvertedValue(const FromType& input, const ToType& fallback)363 ORX_FORCEINLINE ToType getConvertedValue(const FromType& input, const ToType& fallback) 364 364 { 365 365 ToType output; … … 380 380 */ 381 381 template<class ToType, class FromType> 382 FORCEINLINE ToType multi_cast(const FromType& input)382 ORX_FORCEINLINE ToType multi_cast(const FromType& input) 383 383 { 384 384 ToType output; … … 395 395 struct ConverterExplicit<const char*, ToType> 396 396 { 397 FORCEINLINE static bool convert(ToType* output, const char* input)397 ORX_FORCEINLINE static bool convert(ToType* output, const char* input) 398 398 { 399 399 return convertValue<std::string, ToType>(output, input); … … 405 405 struct ConverterExplicit<char, std::string> 406 406 { 407 FORCEINLINE static bool convert(std::string* output, const char input)407 ORX_FORCEINLINE static bool convert(std::string* output, const char input) 408 408 { 409 409 *output = input; … … 415 415 struct ConverterExplicit<unsigned char, std::string> 416 416 { 417 FORCEINLINE static bool convert(std::string* output, const unsigned char input)417 ORX_FORCEINLINE static bool convert(std::string* output, const unsigned char input) 418 418 { 419 419 *output = input; … … 425 425 struct ConverterExplicit<std::string, char> 426 426 { 427 FORCEINLINE static bool convert(char* output, const std::string& input)427 ORX_FORCEINLINE static bool convert(char* output, const std::string& input) 428 428 { 429 429 if (!input.empty()) … … 438 438 struct ConverterExplicit<std::string, unsigned char> 439 439 { 440 FORCEINLINE static bool convert(unsigned char* output, const std::string& input)440 ORX_FORCEINLINE static bool convert(unsigned char* output, const std::string& input) 441 441 { 442 442 if (!input.empty()) … … 453 453 struct ConverterExplicit<bool, std::string> 454 454 { 455 FORCEINLINE static bool convert(std::string* output, const bool& input)455 ORX_FORCEINLINE static bool convert(std::string* output, const bool& input) 456 456 { 457 457 if (input) -
code/branches/kicklib/src/libraries/util/MathConvert.h
r7401 r8071 51 51 struct ConverterExplicit<orxonox::Vector2, std::string> 52 52 { 53 FORCEINLINE static bool convert(std::string* output, const orxonox::Vector2& input)53 ORX_FORCEINLINE static bool convert(std::string* output, const orxonox::Vector2& input) 54 54 { 55 55 std::ostringstream ostream; … … 67 67 struct ConverterExplicit<orxonox::Vector3, std::string> 68 68 { 69 FORCEINLINE static bool convert(std::string* output, const orxonox::Vector3& input)69 ORX_FORCEINLINE static bool convert(std::string* output, const orxonox::Vector3& input) 70 70 { 71 71 std::ostringstream ostream; … … 83 83 struct ConverterExplicit<orxonox::Vector4, std::string> 84 84 { 85 FORCEINLINE static bool convert(std::string* output, const orxonox::Vector4& input)85 ORX_FORCEINLINE static bool convert(std::string* output, const orxonox::Vector4& input) 86 86 { 87 87 std::ostringstream ostream; … … 99 99 struct ConverterExplicit<orxonox::Quaternion, std::string> 100 100 { 101 FORCEINLINE static bool convert(std::string* output, const orxonox::Quaternion& input)101 ORX_FORCEINLINE static bool convert(std::string* output, const orxonox::Quaternion& input) 102 102 { 103 103 std::ostringstream ostream; … … 115 115 struct ConverterExplicit<orxonox::ColourValue, std::string> 116 116 { 117 FORCEINLINE static bool convert(std::string* output, const orxonox::ColourValue& input)117 ORX_FORCEINLINE static bool convert(std::string* output, const orxonox::ColourValue& input) 118 118 { 119 119 std::ostringstream ostream; … … 157 157 struct ConverterFallback<orxonox::Radian, ToType> 158 158 { 159 FORCEINLINE static bool convert(ToType* output, const orxonox::Radian& input)159 ORX_FORCEINLINE static bool convert(ToType* output, const orxonox::Radian& input) 160 160 { 161 161 return convertValue<Ogre::Real, ToType>(output, input.valueRadians()); … … 167 167 struct ConverterFallback<orxonox::Degree, ToType> 168 168 { 169 FORCEINLINE static bool convert(ToType* output, const orxonox::Degree& input)169 ORX_FORCEINLINE static bool convert(ToType* output, const orxonox::Degree& input) 170 170 { 171 171 return convertValue<Ogre::Real, ToType>(output, input.valueDegrees()); … … 177 177 struct ConverterFallback<FromType, orxonox::Radian> 178 178 { 179 FORCEINLINE static bool convert(orxonox::Radian* output, const FromType& input)179 ORX_FORCEINLINE static bool convert(orxonox::Radian* output, const FromType& input) 180 180 { 181 181 float temp; … … 194 194 struct ConverterFallback<FromType, orxonox::Degree> 195 195 { 196 FORCEINLINE static bool convert(orxonox::Degree* output, const FromType& input)196 ORX_FORCEINLINE static bool convert(orxonox::Degree* output, const FromType& input) 197 197 { 198 198 float temp; -
code/branches/kicklib/src/libraries/util/SharedPtr.h
r7401 r8071 163 163 public: 164 164 SharedCounter() : count_(1) {} 165 virtual ~SharedCounter() {} 165 166 virtual void destroy() = 0; 166 167 … … 186 187 _UtilExport SmallObjectAllocator& createSharedCounterPool(); 187 188 188 FORCEINLINE SmallObjectAllocator& getSharedCounterPool()189 ORX_FORCEINLINE SmallObjectAllocator& getSharedCounterPool() 189 190 { 190 191 static SmallObjectAllocator& instance = createSharedCounterPool(); -
code/branches/kicklib/src/libraries/util/SignalHandler.h
r7457 r8071 70 70 71 71 /// The SignalHandler is used to catch signals like SIGSEGV and write a backtrace to the logfile. 72 class SignalHandler : public Singleton<SignalHandler>72 class _UtilExport SignalHandler : public Singleton<SignalHandler> 73 73 { 74 74 friend class Singleton<SignalHandler>; -
code/branches/kicklib/src/libraries/util/UtilPrereqs.h
r6417 r8071 52 52 # endif 53 53 # endif 54 #elif defined ( ORXONOX_GCC_VISIBILITY ) 54 # define _UtilPrivate 55 #elif defined (ORXONOX_GCC_VISIBILITY) 55 56 # define _UtilExport __attribute__ ((visibility("default"))) 57 # define _UtilPrivate __attribute__ ((visibility("hidden"))) 56 58 #else 57 59 # define _UtilExport 60 # define _UtilPrivate 58 61 #endif 59 62 -
code/branches/kicklib/src/modules/designtools/DesignToolsPrereqs.h
r7163 r8071 53 53 # endif 54 54 # endif 55 #elif defined ( ORXONOX_GCC_VISIBILITY ) 55 # define _DesignToolsPrivate 56 #elif defined (ORXONOX_GCC_VISIBILITY) 56 57 # define _DesignToolsExport __attribute__ ((visibility("default"))) 58 # define _DesignToolsPrivate __attribute__ ((visibility("hidden"))) 57 59 #else 58 60 # define _DesignToolsExport 61 # define _DesignToolsPrivate 59 62 #endif 60 63 -
code/branches/kicklib/src/modules/notifications/NotificationsPrereqs.h
r7403 r8071 53 53 # endif 54 54 # endif 55 #elif defined ( ORXONOX_GCC_VISIBILITY ) 55 # define _NotificationsPrivate 56 #elif defined (ORXONOX_GCC_VISIBILITY) 56 57 # define _NotificationsExport __attribute__ ((visibility("default"))) 58 # define _NotificationsPrivate __attribute__ ((visibility("hidden"))) 57 59 #else 58 60 # define _NotificationsExport 61 # define _NotificationsPrivate 59 62 #endif 60 63 -
code/branches/kicklib/src/modules/objects/ObjectsPrereqs.h
r7601 r8071 53 53 # endif 54 54 # endif 55 #elif defined ( ORXONOX_GCC_VISIBILITY ) 55 # define _ObjectsPrivate 56 #elif defined (ORXONOX_GCC_VISIBILITY) 56 57 # define _ObjectsExport __attribute__ ((visibility("default"))) 58 # define _ObjectsPrivate __attribute__ ((visibility("hidden"))) 57 59 #else 58 60 # define _ObjectsExport 61 # define _ObjectsPrivate 59 62 #endif 60 63 -
code/branches/kicklib/src/modules/overlays/OverlaysPrereqs.h
r7935 r8071 53 53 # endif 54 54 # endif 55 #elif defined ( ORXONOX_GCC_VISIBILITY ) 55 # define _OverlaysPrivate 56 #elif defined (ORXONOX_GCC_VISIBILITY) 56 57 # define _OverlaysExport __attribute__ ((visibility("default"))) 58 # define _OverlaysPrivate __attribute__ ((visibility("hidden"))) 57 59 #else 58 60 # define _OverlaysExport 61 # define _OverlaysPrivate 59 62 #endif 60 63 -
code/branches/kicklib/src/modules/pickup/PickupPrereqs.h
r7163 r8071 53 53 # endif 54 54 # endif 55 #elif defined ( ORXONOX_GCC_VISIBILITY ) 55 # define _PickupPrivate 56 #elif defined (ORXONOX_GCC_VISIBILITY) 56 57 # define _PickupExport __attribute__ ((visibility("default"))) 58 # define _PickupPrivate __attribute__ ((visibility("hidden"))) 57 59 #else 58 60 # define _PickupExport 61 # define _PickupPrivate 59 62 #endif 60 63 -
code/branches/kicklib/src/modules/pong/PongPrereqs.h
r7163 r8071 53 53 # endif 54 54 # endif 55 #elif defined ( ORXONOX_GCC_VISIBILITY ) 55 # define _PongPrivate 56 #elif defined (ORXONOX_GCC_VISIBILITY) 56 57 # define _PongExport __attribute__ ((visibility("default"))) 58 # define _PongPrivate __attribute__ ((visibility("hidden"))) 57 59 #else 58 60 # define _PongExport 61 # define _PongPrivate 59 62 #endif 60 63 -
code/branches/kicklib/src/modules/questsystem/QuestEffect.cc
r7456 r8071 68 68 /*static*/ bool QuestEffect::invokeEffects(PlayerInfo* player, std::list<QuestEffect*> & effects) 69 69 { 70 bool check= true;70 bool temp = true; 71 71 72 72 COUT(4) << "Invoking QuestEffects on player: " << player << " ." << std::endl; 73 73 74 74 for (std::list<QuestEffect*>::iterator effect = effects.begin(); effect != effects.end(); effect++) 75 check = check&& (*effect)->invoke(player);75 temp = temp && (*effect)->invoke(player); 76 76 77 return check;77 return temp; 78 78 } 79 79 -
code/branches/kicklib/src/modules/questsystem/QuestEffectBeacon.cc
r7552 r8071 143 143 COUT(4) << "QuestEffectBeacon executed on player: " << player << " ." << std::endl; 144 144 145 bool check= QuestEffect::invokeEffects(player, this->effects_); // Invoke the QuestEffects on the PlayerInfo.146 if( check)145 bool temp = QuestEffect::invokeEffects(player, this->effects_); // Invoke the QuestEffects on the PlayerInfo. 146 if(temp) 147 147 { 148 148 this->decrementTimes(); // Decrement the number of times the beacon can be used. -
code/branches/kicklib/src/modules/questsystem/QuestsystemPrereqs.h
r7474 r8071 53 53 # endif 54 54 # endif 55 #elif defined ( ORXONOX_GCC_VISIBILITY ) 55 # define _QuestsystemPrivate 56 #elif defined (ORXONOX_GCC_VISIBILITY) 56 57 # define _QuestsystemExport __attribute__ ((visibility("default"))) 58 # define _QuestsystemPrivate __attribute__ ((visibility("hidden"))) 57 59 #else 58 60 # define _QuestsystemExport 61 # define _QuestsystemPrivate 59 62 #endif 60 63 -
code/branches/kicklib/src/modules/questsystem/effects/AddReward.cc
r7456 r8071 105 105 COUT(5) << "AddReward on player: " << player << " ." << std::endl; 106 106 107 bool check= true;107 bool temp = true; 108 108 for ( std::list<Rewardable*>::iterator reward = this->rewards_.begin(); reward != this->rewards_.end(); ++reward ) 109 check = check&& (*reward)->reward(player);109 temp = temp && (*reward)->reward(player); 110 110 111 111 COUT(4) << "Rewardable successfully added to player." << player << " ." << std::endl; 112 112 113 return check;113 return temp; 114 114 } 115 115 -
code/branches/kicklib/src/modules/weapons/WeaponsPrereqs.h
r7846 r8071 53 53 # endif 54 54 # endif 55 #elif defined ( ORXONOX_GCC_VISIBILITY ) 55 # define _WeaponsPrivate 56 #elif defined (ORXONOX_GCC_VISIBILITY) 56 57 # define _WeaponsExport __attribute__ ((visibility("default"))) 58 # define _WeaponsPrivate __attribute__ ((visibility("hidden"))) 57 59 #else 58 60 # define _WeaponsExport 61 # define _WeaponsPrivate 59 62 #endif 60 63 -
code/branches/kicklib/src/orxonox/MoodManager.cc
r7284 r8071 50 50 51 51 // Checking for the existence of the folder for the default mood 52 const std::string& path = "ambient/" + MoodManager::defaultMood_ + "/.";53 if (!Resource::exists(path ))52 const std::string& patha = "ambient/" + MoodManager::defaultMood_ + "/."; 53 if (!Resource::exists(patha)) 54 54 { 55 55 // TODO: Non-fatal error handling (non-critical resource missing) 56 56 COUT(2) << "Mood Warning: Folder for default mood (" << MoodManager::defaultMood_ << ") does not exist!" << std::endl; 57 57 } 58 59 // @TODO 60 // Creating a vector of the available moods to enable easy mood selection by Lua/CEGUI 58 61 } 59 62 -
code/branches/kicklib/src/orxonox/OrxonoxPrereqs.h
r7854 r8071 53 53 # endif 54 54 # endif 55 #elif defined ( ORXONOX_GCC_VISIBILITY ) 55 # define _OrxonoxPrivate 56 #elif defined (ORXONOX_GCC_VISIBILITY) 56 57 # define _OrxonoxExport __attribute__ ((visibility("default"))) 58 # define _OrxonoxPrivate __attribute__ ((visibility("hidden"))) 57 59 #else 58 60 # define _OrxonoxExport 61 # define _OrxonoxPrivate 59 62 #endif 60 63 -
code/branches/kicklib/src/orxonox/sound/AmbientSound.cc
r7929 r8071 42 42 43 43 // Ambient sounds always fade in 44 this->setVolume(0 );44 this->setVolume(0.0f); 45 45 } 46 46 -
code/branches/kicklib/src/orxonox/sound/BaseSound.cc
r7858 r8071 31 31 #include <cassert> 32 32 #include <vector> 33 34 #ifdef ORXONOX_PLATFORM_APPLE 35 #include "openal/al.h" 36 #else 33 37 #include <al.h> 38 #endif 34 39 35 40 #include "util/Math.h" -
code/branches/kicklib/src/orxonox/sound/SoundBuffer.cc
r6502 r8071 30 30 #include "SoundBuffer.h" 31 31 32 #if defined(ORXONOX_PLATFORM_APPLE) 33 #include <ALUT/alut.h> 34 #else 32 35 #include <AL/alut.h> 36 #endif 33 37 #include <vorbis/vorbisfile.h> 34 38 -
code/branches/kicklib/src/orxonox/sound/SoundManager.cc
r7858 r8071 31 31 #include "SoundManager.h" 32 32 33 #if defined(__APPLE__) 34 #include <ALUT/alut.h> 35 #else 33 36 #include <AL/alut.h> 37 #endif 34 38 #include <utility> 35 39 #include <loki/ScopeGuard.h> … … 73 77 this->bDestructorCalled_ = false; 74 78 79 // Clear error messages (might be problematic on some systems) 80 alGetError(); 81 alutGetError(); 82 75 83 // See whether we even want to load 76 84 bool bDisableSound_ = false; 77 85 SetConfigValue(bDisableSound_, false); 78 86 if (bDisableSound_) 79 ThrowException(InitialisationAborted, "Sound: Not loading at all"); 80 87 ThrowException(InitialisationAborted, "Sound: Not loading at all"); 81 88 if (!alutInitWithoutContext(NULL, NULL)) 82 89 ThrowException(InitialisationFailed, "Sound Error: ALUT initialisation failed: " << alutGetErrorString(alutGetError())); … … 126 133 GameMode::setPlaysSound(true); 127 134 Loki::ScopeGuard resetPlaysSoundGuard = Loki::MakeGuard(&GameMode::setPlaysSound, false); 128 135 129 136 // Get some information about the sound 130 137 if (const char* version = alGetString(AL_VERSION)) 131 COUT(4) << "Sound: --- OpenAL Version: " << version << std::endl; 138 COUT(4) << "Sound: --- OpenAL Version: " << version << std::endl; 132 139 if (const char* vendor = alGetString(AL_VENDOR)) 133 140 COUT(4) << "Sound: --- OpenAL Vendor : " << vendor << std::endl; -
code/branches/kicklib/src/orxonox/sound/SoundStreamer.cc
r7163 r8071 27 27 #include "SoundStreamer.h" 28 28 29 #ifdef ORXONOX_PLATFORM_APPLE 30 #include "openal/al.h" 31 #else 29 32 #include <al.h> 33 #endif 34 30 35 #include <vorbis/vorbisfile.h> 31 36 #include "SoundManager.h" -
code/branches/kicklib/src/orxonox/sound/WorldSound.cc
r7284 r8071 30 30 #include "WorldSound.h" 31 31 32 #if defined(__APPLE__) 33 #include <ALUT/alut.h> 34 #else 32 35 #include <AL/alut.h> 36 #endif 33 37 #include "util/Math.h" 34 38 #include "core/CoreIncludes.h"
Note: See TracChangeset
for help on using the changeset viewer.