From Torben Dannhauer, "I extended the attached CMAKE module to search for the collada libraries of my VS2008 3rdParty package if no other library is found.
No CMAKE should recognize all libraries of the VS2008 3rdParty Package."
This commit is contained in:
@@ -13,7 +13,16 @@
|
||||
#
|
||||
# Created by Robert Osfield.
|
||||
|
||||
SET(COLLADA_DOM_ROOT "$ENV{COLLADA_DIR}/dom" CACHE PATH "Location of Collada DOM directory")
|
||||
|
||||
# Check if COLLADA_DIR is set, otherwise use ACTUAL_3DPARTY_DIR:
|
||||
SET( COLLADA_ENV_VAR_AVAILABLE $ENV{COLLADA_DIR} )
|
||||
IF ( COLLADA_ENV_VAR_AVAILABLE )
|
||||
SET(COLLADA_DOM_ROOT "$ENV{COLLADA_DIR}/dom" CACHE PATH "Location of Collada DOM directory" FORCE)
|
||||
ELSE ( COLLADA_ENV_VAR_AVAILABLE )
|
||||
SET(COLLADA_DOM_ROOT "${ACTUAL_3DPARTY_DIR}/include/1.4/dom" CACHE PATH "Location of Collada DOM directory" FORCE)
|
||||
ENDIF( COLLADA_ENV_VAR_AVAILABLE )
|
||||
|
||||
|
||||
|
||||
IF(APPLE)
|
||||
SET(COLLADA_BUILDNAME "mac")
|
||||
@@ -41,6 +50,7 @@ FIND_PATH(COLLADA_INCLUDE_DIR dae.h
|
||||
/opt/csw/include # Blastwave
|
||||
/opt/include
|
||||
/usr/freeware/include
|
||||
${ACTUAL_3DPARTY_DIR}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_DYNAMIC_LIBRARY
|
||||
@@ -62,6 +72,7 @@ FIND_LIBRARY(COLLADA_DYNAMIC_LIBRARY
|
||||
/opt/csw/lib
|
||||
/opt/lib
|
||||
/usr/freeware/lib64
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_DYNAMIC_LIBRARY_DEBUG
|
||||
@@ -83,6 +94,7 @@ FIND_LIBRARY(COLLADA_DYNAMIC_LIBRARY_DEBUG
|
||||
/opt/csw/lib
|
||||
/opt/lib
|
||||
/usr/freeware/lib64
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_STATIC_LIBRARY
|
||||
@@ -104,6 +116,7 @@ FIND_LIBRARY(COLLADA_STATIC_LIBRARY
|
||||
/opt/csw/lib
|
||||
/opt/lib
|
||||
/usr/freeware/lib64
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_STATIC_LIBRARY_DEBUG
|
||||
@@ -125,13 +138,14 @@ FIND_LIBRARY(COLLADA_STATIC_LIBRARY_DEBUG
|
||||
/opt/csw/lib
|
||||
/opt/lib
|
||||
/usr/freeware/lib64
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
# find extra libraries that the static linking requires
|
||||
|
||||
FIND_PACKAGE(LibXml2)
|
||||
IF (LIBXML2_FOUND)
|
||||
SET(COLLADA_LIBXML_LIBRARY ${LIBXML2_LIBRARIES})
|
||||
SET(COLLADA_LIBXML_LIBRARY "${LIBXML2_LIBRARIES}" CACHE FILEPATH "" FORCE)
|
||||
ELSE(LIBXML2_FOUND)
|
||||
IF(WIN32)
|
||||
FIND_LIBRARY(COLLADA_LIBXML_LIBRARY
|
||||
@@ -139,13 +153,14 @@ FIND_LIBRARY(COLLADA_STATIC_LIBRARY_DEBUG
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/libxml2/win32/lib
|
||||
${COLLADA_DOM_ROOT}/external-libs/libxml2/mingw/lib
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
ENDIF(WIN32)
|
||||
ENDIF(LIBXML2_FOUND)
|
||||
|
||||
FIND_PACKAGE(ZLIB)
|
||||
IF (ZLIB_FOUND)
|
||||
SET(COLLADA_ZLIB_LIBRARY ${ZLIB_LIBRARY})
|
||||
SET(COLLADA_ZLIB_LIBRARY "${ZLIB_LIBRARY}" CACHE FILEPATH "" FORCE)
|
||||
ELSE(ZLIB_FOUND)
|
||||
IF(WIN32)
|
||||
FIND_LIBRARY(COLLADA_ZLIB_LIBRARY
|
||||
@@ -153,6 +168,7 @@ FIND_LIBRARY(COLLADA_STATIC_LIBRARY_DEBUG
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/libxml2/win32/lib
|
||||
${COLLADA_DOM_ROOT}/external-libs/libxml2/mingw/lib
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
ENDIF(WIN32)
|
||||
ENDIF(ZLIB_FOUND)
|
||||
@@ -163,14 +179,16 @@ FIND_LIBRARY(COLLADA_STATIC_LIBRARY_DEBUG
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/${COLLADA_BUILDNAME}
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/mac
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/mingw
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_PCRECPP_LIBRARY_DEBUG
|
||||
NAMES pcrecpp-d
|
||||
NAMES pcrecpp-d pcrecppd
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/${COLLADA_BUILDNAME}
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/mac
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/mingw
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_PCRE_LIBRARY
|
||||
@@ -179,14 +197,16 @@ FIND_LIBRARY(COLLADA_STATIC_LIBRARY_DEBUG
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/${COLLADA_BUILDNAME}
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/mac
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/mingw
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_PCRE_LIBRARY_DEBUG
|
||||
NAMES pcre-d
|
||||
NAMES pcre-d pcred
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/${COLLADA_BUILDNAME}
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/mac
|
||||
${COLLADA_DOM_ROOT}/external-libs/pcre/lib/mingw
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_MINIZIP_LIBRARY
|
||||
@@ -194,41 +214,47 @@ FIND_LIBRARY(COLLADA_STATIC_LIBRARY_DEBUG
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/minizip/win32/lib
|
||||
${COLLADA_DOM_ROOT}/external-libs/minizip/mac
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_MINIZIP_LIBRARY_DEBUG
|
||||
NAMES minizip-d
|
||||
NAMES minizip-d minizipD
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/minizip/win32/lib
|
||||
${COLLADA_DOM_ROOT}/external-libs/minizip/mac
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_BOOST_FILESYSTEM_LIBRARY
|
||||
NAMES libboost_filesystem boost_filesystem
|
||||
NAMES libboost_filesystem boost_filesystem libboost_filesystem-vc90-mt
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/boost/lib/${COLLADA_BUILDNAME}
|
||||
${COLLADA_DOM_ROOT}/external-libs/boost/lib/mingw
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_BOOST_FILESYSTEM_LIBRARY_DEBUG
|
||||
NAMES libboost_filesystem-d boost_filesystem-d
|
||||
NAMES libboost_filesystem-d boost_filesystem-d libboost_filesystem-vc90-mt-gd
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/boost/lib/${COLLADA_BUILDNAME}
|
||||
${COLLADA_DOM_ROOT}/external-libs/boost/lib/mingw
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_BOOST_SYSTEM_LIBRARY
|
||||
NAMES libboost_system boost_system
|
||||
NAMES libboost_system boost_system libboost_system-vc90-mt
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/boost/lib/${COLLADA_BUILDNAME}
|
||||
${COLLADA_DOM_ROOT}/external-libs/boost/lib/mingw
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(COLLADA_BOOST_SYSTEM_LIBRARY_DEBUG
|
||||
NAMES libboost_system-d boost_system-d
|
||||
NAMES libboost_system-d boost_system-d libboost_system-vc90-mt-gd
|
||||
PATHS
|
||||
${COLLADA_DOM_ROOT}/external-libs/boost/lib/${COLLADA_BUILDNAME}
|
||||
${COLLADA_DOM_ROOT}/external-libs/boost/lib/mingw
|
||||
${ACTUAL_3DPARTY_DIR}/lib
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -135,7 +135,8 @@ class OSGVIEWER_EXPORT GraphicsWindowWin32 : public osgViewer::GraphicsWindow, p
|
||||
|
||||
bool setPixelFormat();
|
||||
|
||||
void adaptKey( WPARAM wParam, LPARAM lParam, int& keySymbol, unsigned int& modifierMask );
|
||||
// return true if it handled the key, otherwise return false so that we know it is WM_CHAR job to handle it
|
||||
bool adaptKey( WPARAM wParam, LPARAM lParam, int& keySymbol, unsigned int& modifierMask );
|
||||
|
||||
void transformMouseXY(float& x, float& y);
|
||||
|
||||
@@ -179,6 +180,9 @@ class OSGVIEWER_EXPORT GraphicsWindowWin32 : public osgViewer::GraphicsWindow, p
|
||||
std::map<MouseCursor,HCURSOR> _mouseCursorMap;
|
||||
|
||||
std::map<int, bool> _keyMap;
|
||||
bool _keypresshandled;
|
||||
int _lastkeysymbol;
|
||||
std::map<int, int> _scancode_unicode_Map;
|
||||
|
||||
bool _applyWorkaroundForMultimonitorMultithreadNVidiaWin32Issues;
|
||||
};
|
||||
|
||||
@@ -2212,7 +2212,7 @@ void GraphicsWindowWin32::setSyncToVBlank( bool on )
|
||||
#endif
|
||||
}
|
||||
|
||||
void GraphicsWindowWin32::adaptKey( WPARAM wParam, LPARAM lParam, int& keySymbol, unsigned int& modifierMask )
|
||||
bool GraphicsWindowWin32::adaptKey( WPARAM wParam, LPARAM lParam, int& keySymbol, unsigned int& modifierMask )
|
||||
{
|
||||
modifierMask = 0;
|
||||
|
||||
@@ -2224,7 +2224,7 @@ void GraphicsWindowWin32::adaptKey( WPARAM wParam, LPARAM lParam, int& keySymbol
|
||||
if (virtualKey==0 || !::GetKeyboardState(keyState))
|
||||
{
|
||||
keySymbol = 0;
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (virtualKey)
|
||||
@@ -2280,10 +2280,15 @@ void GraphicsWindowWin32::adaptKey( WPARAM wParam, LPARAM lParam, int& keySymbol
|
||||
}
|
||||
else if ((keySymbol & 0xff00)==0)
|
||||
{
|
||||
char asciiKey[2];
|
||||
int numChars = ::ToAscii(wParam, (lParam>>16)&0xff, keyState, reinterpret_cast<WORD*>(asciiKey), 0);
|
||||
if (numChars>0) keySymbol = asciiKey[0];
|
||||
// store the raw key so to be used later in WM_CHAR event
|
||||
keySymbol = ::MapVirtualKeyEx(HIWORD(lParam), 2, ::GetKeyboardLayout(0));
|
||||
|
||||
// might be an unicode key or dead key so need to be handled by WM_CHAR
|
||||
return false;
|
||||
}
|
||||
|
||||
// it was a special key so event is handled
|
||||
return true;
|
||||
}
|
||||
|
||||
void GraphicsWindowWin32::transformMouseXY( float& x, float& y )
|
||||
@@ -2434,6 +2439,36 @@ LRESULT GraphicsWindowWin32::handleNativeWindowingEvent( HWND hwnd, UINT uMsg, W
|
||||
}
|
||||
}
|
||||
break;
|
||||
/////////////////
|
||||
case WM_CHAR :
|
||||
/////////////////
|
||||
{
|
||||
// if event was not handled by WM_KEYDOWN then we take care of it here
|
||||
// this method gives directly the utf16 char back so just need to add it as it is
|
||||
if(!_keypresshandled)
|
||||
{
|
||||
// first check if key is already registered on the map
|
||||
std::map<int, int>::iterator it = _scancode_unicode_Map.find(_lastkeysymbol);
|
||||
if(it != _scancode_unicode_Map.end())
|
||||
{
|
||||
// map already exist -> key already pressed and not yet released
|
||||
if((it->second != -1) && (it->second != wParam))
|
||||
{
|
||||
// was a different char stored - probably a dead key combinaison
|
||||
// -> we need to release it first
|
||||
_keyMap[it->second] = false;
|
||||
getEventQueue()->keyRelease(it->second, eventTime);
|
||||
}
|
||||
}
|
||||
|
||||
// store the raw key in map so that we know what to release later in WM_KEYUP event
|
||||
_scancode_unicode_Map[_lastkeysymbol] = wParam;
|
||||
|
||||
_keyMap[wParam] = true;
|
||||
getEventQueue()->keyPress(wParam, eventTime);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
////////////////////
|
||||
case WM_KEYDOWN :
|
||||
@@ -2443,10 +2478,19 @@ LRESULT GraphicsWindowWin32::handleNativeWindowingEvent( HWND hwnd, UINT uMsg, W
|
||||
{
|
||||
int keySymbol = 0;
|
||||
unsigned int modifierMask = 0;
|
||||
adaptKey(wParam, lParam, keySymbol, modifierMask);
|
||||
_keyMap[keySymbol] = true;
|
||||
//getEventQueue()->getCurrentEventState()->setModKeyMask(modifierMask);
|
||||
getEventQueue()->keyPress(keySymbol, eventTime);
|
||||
if(adaptKey(wParam, lParam, keySymbol, modifierMask))
|
||||
{
|
||||
// was a special key, we handled it
|
||||
_keypresshandled = true;
|
||||
_keyMap[keySymbol] = true;
|
||||
getEventQueue()->keyPress(keySymbol, eventTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
// was no special key, let WM_CHAR handle it
|
||||
_keypresshandled = false;
|
||||
_lastkeysymbol = keySymbol;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2458,10 +2502,23 @@ LRESULT GraphicsWindowWin32::handleNativeWindowingEvent( HWND hwnd, UINT uMsg, W
|
||||
{
|
||||
int keySymbol = 0;
|
||||
unsigned int modifierMask = 0;
|
||||
adaptKey(wParam, lParam, keySymbol, modifierMask);
|
||||
_keyMap[keySymbol] = false;
|
||||
//getEventQueue()->getCurrentEventState()->setModKeyMask(modifierMask);
|
||||
getEventQueue()->keyRelease(keySymbol, eventTime);
|
||||
if(!adaptKey(wParam, lParam, keySymbol, modifierMask))
|
||||
{
|
||||
// was not a special key - this mean we need to release the unicode key
|
||||
// -> fetch it from the map
|
||||
std::map<int, int>::iterator it = _scancode_unicode_Map.find(keySymbol);
|
||||
if(it != _scancode_unicode_Map.end())
|
||||
{
|
||||
keySymbol = it->second;
|
||||
it->second = -1; // clean the release key from the map
|
||||
}
|
||||
}
|
||||
|
||||
if(keySymbol >= 0)
|
||||
{
|
||||
_keyMap[keySymbol] = false;
|
||||
getEventQueue()->keyRelease(keySymbol, eventTime);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user