add support for setuptools setup.py pybullet for 'pip install pybullet'

rewrite MacOpenGLWindow.mm into .m version, so that setup.py can handle it.
See also test at https://pypi.python.org/pypi/pybullet/0.1.0
This commit is contained in:
Erwin Coumans
2017-04-02 23:00:06 -07:00
parent 1c5e5d2b3f
commit e487bc360b
11 changed files with 1045 additions and 383 deletions

7
MANIFEST.in Normal file
View File

@@ -0,0 +1,7 @@
include MANIFEST.in *.txt
recursive-include examples *.h
recursive-include examples *.hpp
recursive-include Extras *.h
recursive-include Extras *.hpp
recursive-include src *.h
recursive-include src *.hpp

View File

@@ -0,0 +1,47 @@
#ifndef COMMON_CALLBACKS_H
#define COMMON_CALLBACKS_H
typedef void (*b3WheelCallback)(float deltax, float deltay);
typedef void (*b3ResizeCallback)( float width, float height);
typedef void (*b3MouseMoveCallback)( float x, float y);
typedef void (*b3MouseButtonCallback)(int button, int state, float x, float y);
typedef void (*b3KeyboardCallback)(int keycode, int state);
typedef void (*b3RenderCallback) ();
enum {
B3G_ESCAPE = 27,
B3G_F1 = 0xff00,
B3G_F2,
B3G_F3,
B3G_F4,
B3G_F5,
B3G_F6,
B3G_F7,
B3G_F8,
B3G_F9,
B3G_F10,
B3G_F11,
B3G_F12,
B3G_F13,
B3G_F14,
B3G_F15,
B3G_LEFT_ARROW,
B3G_RIGHT_ARROW,
B3G_UP_ARROW,
B3G_DOWN_ARROW,
B3G_PAGE_UP,
B3G_PAGE_DOWN,
B3G_END,
B3G_HOME,
B3G_INSERT,
B3G_DELETE,
B3G_BACKSPACE,
B3G_SHIFT,
B3G_CONTROL,
B3G_ALT,
B3G_RETURN
};
#endif

View File

@@ -1,47 +1,8 @@
#ifndef B3G_WINDOW_INTERFACE_H #ifndef B3G_WINDOW_INTERFACE_H
#define B3G_WINDOW_INTERFACE_H #define B3G_WINDOW_INTERFACE_H
#include "CommonCallbacks.h"
typedef void (*b3WheelCallback)(float deltax, float deltay);
typedef void (*b3ResizeCallback)( float width, float height);
typedef void (*b3MouseMoveCallback)( float x, float y);
typedef void (*b3MouseButtonCallback)(int button, int state, float x, float y);
typedef void (*b3KeyboardCallback)(int keycode, int state);
typedef void (*b3RenderCallback) ();
enum {
B3G_ESCAPE = 27,
B3G_F1 = 0xff00,
B3G_F2,
B3G_F3,
B3G_F4,
B3G_F5,
B3G_F6,
B3G_F7,
B3G_F8,
B3G_F9,
B3G_F10,
B3G_F11,
B3G_F12,
B3G_F13,
B3G_F14,
B3G_F15,
B3G_LEFT_ARROW,
B3G_RIGHT_ARROW,
B3G_UP_ARROW,
B3G_DOWN_ARROW,
B3G_PAGE_UP,
B3G_PAGE_DOWN,
B3G_END,
B3G_HOME,
B3G_INSERT,
B3G_DELETE,
B3G_BACKSPACE,
B3G_SHIFT,
B3G_CONTROL,
B3G_ALT,
B3G_RETURN
};
struct b3gWindowConstructionInfo struct b3gWindowConstructionInfo
{ {

View File

@@ -6,7 +6,8 @@ INCLUDE_DIRECTORIES(
FILE(GLOB OpenGLWindow_HDRS "*.h" ) FILE(GLOB OpenGLWindow_HDRS "*.h" )
FILE(GLOB OpenGLWindowMac_CPP "Mac*.mm") FILE(GLOB OpenGLWindowMac_CPP "Mac*.cpp")
FILE(GLOB OpenGLWindowMacObjC_CPP "Mac*.m")
FILE(GLOB OpenGLWindowWin32_CPP "Win32*.cpp") FILE(GLOB OpenGLWindowWin32_CPP "Win32*.cpp")
FILE(GLOB OpenGLWindowLinux_CPP "X11*.cpp") FILE(GLOB OpenGLWindowLinux_CPP "X11*.cpp")
@@ -16,6 +17,7 @@ LIST(REMOVE_ITEM OpenGLWindowCommon_CPP ${OpenGLWindowMac_CPP} )
LIST(REMOVE_ITEM OpenGLWindowCommon_CPP ${OpenGLWindowWin32_CPP} ) LIST(REMOVE_ITEM OpenGLWindowCommon_CPP ${OpenGLWindowWin32_CPP} )
LIST(REMOVE_ITEM OpenGLWindowCommon_CPP ${OpenGLWindowLinux_CPP} ) LIST(REMOVE_ITEM OpenGLWindowCommon_CPP ${OpenGLWindowLinux_CPP} )
LIST(REMOVE_ITEM OpenGLWindowCommon_CPP X11OpenGLWindow.cpp ) LIST(REMOVE_ITEM OpenGLWindowCommon_CPP X11OpenGLWindow.cpp )
LIST(REMOVE_ITEM OpenGLWindowCommon_CPP MacOpenGLWindow.cpp )
#MESSAGE (${OpenGLWindowCommon_CPP}) #MESSAGE (${OpenGLWindowCommon_CPP})
IF (WIN32) IF (WIN32)
@@ -27,7 +29,7 @@ IF (WIN32)
ENDIF(WIN32) ENDIF(WIN32)
IF (APPLE) IF (APPLE)
SET(OpenGLWindow_SRCS ${OpenGLWindowMac_CPP} ${OpenGLWindowCommon_CPP} ) SET(OpenGLWindow_SRCS ${OpenGLWindowMac_CPP} ${OpenGLWindowMacObjC_CPP} ${OpenGLWindowCommon_CPP} )
ENDIF(APPLE) ENDIF(APPLE)
#no Linux detection? #no Linux detection?

View File

@@ -0,0 +1,192 @@
#include "MacOpenGLWindow.h"
#include "OpenGLInclude.h"
#include "MacOpenGLWindowObjC.h"
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
MacOpenGLWindow::MacOpenGLWindow()
:m_internalData(0)
{
m_internalData = Mac_createData();
}
MacOpenGLWindow::~MacOpenGLWindow()
{
Mac_destroyData(m_internalData);
}
void MacOpenGLWindow::closeWindow()
{
Mac_destroyData(m_internalData);
m_internalData = Mac_createData();
}
bool MacOpenGLWindow::isModifierKeyPressed(int key)
{
return Mac_isModifierKeyPressed(m_internalData, key);
}
float MacOpenGLWindow::getTimeInSeconds()
{
return 0.f;
}
void MacOpenGLWindow::setRenderCallback( b3RenderCallback renderCallback)
{
}
void MacOpenGLWindow::setWindowTitle(const char* windowTitle)
{
Mac_setWindowTitle(m_internalData, windowTitle);
}
void MacOpenGLWindow::createWindow(const b3gWindowConstructionInfo& ci)
{
MacWindowConstructionInfo windowCI;
windowCI.m_width = ci.m_width;
windowCI.m_height = ci.m_height;
windowCI.m_fullscreen = ci.m_fullscreen;
windowCI.m_colorBitsPerPixel = ci.m_colorBitsPerPixel;
windowCI.m_windowHandle = ci.m_windowHandle;
windowCI.m_title = ci.m_title;
windowCI.m_openglVersion = ci.m_openglVersion;
windowCI.m_allowRetina = true;
Mac_createWindow(m_internalData,&windowCI);
}
void MacOpenGLWindow::runMainLoop()
{
}
void MacOpenGLWindow::startRendering()
{
Mac_updateWindow(m_internalData);
}
void MacOpenGLWindow::endRendering()
{
Mac_swapBuffer(m_internalData);
}
bool MacOpenGLWindow::requestedExit() const
{
return Mac_requestedExit(m_internalData);
}
void MacOpenGLWindow::setRequestExit()
{
Mac_setRequestExit(m_internalData);
}
int MacOpenGLWindow::fileOpenDialog(char* filename, int maxNameLength)
{
return Mac_fileOpenDialog(filename, maxNameLength);
}
void MacOpenGLWindow::getMouseCoordinates(int& x, int& y)
{
int* xPtr=&x;
int* yPtr=&y;
Mac_getMouseCoordinates(m_internalData,xPtr,yPtr);
}
int MacOpenGLWindow::getWidth() const
{
return Mac_getWidth(m_internalData);
}
int MacOpenGLWindow::getHeight() const
{
return Mac_getHeight(m_internalData);
}
void MacOpenGLWindow::setResizeCallback(b3ResizeCallback resizeCallback)
{
Mac_setResizeCallback(m_internalData,resizeCallback);
}
b3ResizeCallback MacOpenGLWindow::getResizeCallback()
{
return Mac_getResizeCallback(m_internalData);
}
void MacOpenGLWindow::setMouseButtonCallback(b3MouseButtonCallback mouseCallback)
{
Mac_setMouseButtonCallback(m_internalData, mouseCallback);
}
void MacOpenGLWindow::setMouseMoveCallback(b3MouseMoveCallback mouseCallback)
{
Mac_setMouseMoveCallback(m_internalData,mouseCallback);
}
void MacOpenGLWindow::setKeyboardCallback( b3KeyboardCallback keyboardCallback)
{
Mac_setKeyboardCallback(m_internalData,keyboardCallback);
}
b3MouseMoveCallback MacOpenGLWindow::getMouseMoveCallback()
{
return Mac_getMouseMoveCallback(m_internalData);
}
b3MouseButtonCallback MacOpenGLWindow::getMouseButtonCallback()
{
return Mac_getMouseButtonCallback(m_internalData);
}
void MacOpenGLWindow::setWheelCallback (b3WheelCallback wheelCallback)
{
Mac_setWheelCallback(m_internalData,wheelCallback);
}
b3WheelCallback MacOpenGLWindow::getWheelCallback()
{
return Mac_getWheelCallback(m_internalData);
}
b3KeyboardCallback MacOpenGLWindow::getKeyboardCallback()
{
return Mac_getKeyboardCallback(m_internalData);
}
float MacOpenGLWindow::getRetinaScale() const
{
return Mac_getRetinaScale(m_internalData);
}
void MacOpenGLWindow::setAllowRetina(bool allow)
{
Mac_setAllowRetina(m_internalData, allow);
}

View File

@@ -8,18 +8,6 @@
class MacOpenGLWindow : public CommonWindowInterface class MacOpenGLWindow : public CommonWindowInterface
{ {
struct MacOpenGLWindowInternalData* m_internalData; struct MacOpenGLWindowInternalData* m_internalData;
float m_mouseX;
float m_mouseY;
int m_modifierFlags;
b3MouseButtonCallback m_mouseButtonCallback;
b3MouseMoveCallback m_mouseMoveCallback;
b3WheelCallback m_wheelCallback;
b3KeyboardCallback m_keyboardCallback;
b3RenderCallback m_renderCallback;
float m_retinaScaleFactor;
bool m_allowRetina;
public: public:
@@ -44,57 +32,30 @@ public:
virtual bool isModifierKeyPressed(int key); virtual bool isModifierKeyPressed(int key);
void setMouseButtonCallback(b3MouseButtonCallback mouseCallback) void setMouseButtonCallback(b3MouseButtonCallback mouseCallback);
{
m_mouseButtonCallback = mouseCallback;
}
void setMouseMoveCallback(b3MouseMoveCallback mouseCallback) void setMouseMoveCallback(b3MouseMoveCallback mouseCallback);
{
m_mouseMoveCallback = mouseCallback;
}
void setResizeCallback(b3ResizeCallback resizeCallback); void setResizeCallback(b3ResizeCallback resizeCallback);
void setKeyboardCallback( b3KeyboardCallback keyboardCallback) void setKeyboardCallback( b3KeyboardCallback keyboardCallback);
{
m_keyboardCallback = keyboardCallback; virtual b3MouseMoveCallback getMouseMoveCallback();
}
virtual b3MouseButtonCallback getMouseButtonCallback();
virtual b3MouseMoveCallback getMouseMoveCallback()
{
return m_mouseMoveCallback;
}
virtual b3MouseButtonCallback getMouseButtonCallback()
{
return m_mouseButtonCallback;
}
virtual b3ResizeCallback getResizeCallback(); virtual b3ResizeCallback getResizeCallback();
virtual b3WheelCallback getWheelCallback() virtual b3WheelCallback getWheelCallback();
{
return m_wheelCallback;
}
b3KeyboardCallback getKeyboardCallback() b3KeyboardCallback getKeyboardCallback();
{
return m_keyboardCallback;
}
void setWheelCallback (b3WheelCallback wheelCallback) void setWheelCallback (b3WheelCallback wheelCallback);
{
m_wheelCallback = wheelCallback;
}
float getRetinaScale() const float getRetinaScale() const;
{
return m_retinaScaleFactor; virtual void setAllowRetina(bool allow);
}
virtual void setAllowRetina(bool allow)
{
m_allowRetina = allow;
}
virtual void createWindow(const b3gWindowConstructionInfo& ci); virtual void createWindow(const b3gWindowConstructionInfo& ci);

View File

@@ -0,0 +1,77 @@
#ifndef MAC_OPENGL_WINDOW_OBJC_H
#define MAC_OPENGL_WINDOW_OBJC_H
struct MacOpenGLWindowInternalData;
#include "../CommonInterfaces/CommonCallbacks.h"
struct MacWindowConstructionInfo
{
int m_width;
int m_height;
int m_fullscreen;
int m_colorBitsPerPixel;
void* m_windowHandle;
const char* m_title;
int m_openglVersion;
int m_allowRetina;
};
enum
{
MY_MAC_ALTKEY=1,
MY_MAC_SHIFTKEY=2,
MY_MAC_CONTROL_KEY=4
};
#ifdef __cplusplus
extern "C" {
#endif
struct MacOpenGLWindowInternalData* Mac_createData();
void Mac_destroyData(struct MacOpenGLWindowInternalData* data);
int Mac_createWindow(struct MacOpenGLWindowInternalData* m_internalData,struct MacWindowConstructionInfo* ci);
void Mac_setWindowTitle(struct MacOpenGLWindowInternalData* data, const char* windowTitle);
int Mac_updateWindow(struct MacOpenGLWindowInternalData* m_internalData);
void Mac_swapBuffer(struct MacOpenGLWindowInternalData* m_internalData);
int Mac_requestedExit(struct MacOpenGLWindowInternalData* m_internalData);
void Mac_setRequestExit(struct MacOpenGLWindowInternalData* m_internalData);
float Mac_getRetinaScale(struct MacOpenGLWindowInternalData* m_internalData);
void Mac_setAllowRetina(struct MacOpenGLWindowInternalData* m_internalData, int allow);
int Mac_getWidth(struct MacOpenGLWindowInternalData* m_internalData);
int Mac_getHeight(struct MacOpenGLWindowInternalData* m_internalData);
int Mac_fileOpenDialog(char* filename, int maxNameLength);
void Mac_setKeyboardCallback( struct MacOpenGLWindowInternalData* m_internalData, b3KeyboardCallback keyboardCallback);
b3KeyboardCallback Mac_getKeyboardCallback(struct MacOpenGLWindowInternalData* m_internalData);
int Mac_isModifierKeyPressed(struct MacOpenGLWindowInternalData* m_internalData, int key);
void Mac_setMouseButtonCallback(struct MacOpenGLWindowInternalData* m_internalData, b3MouseButtonCallback mouseCallback);
b3MouseButtonCallback Mac_getMouseButtonCallback(struct MacOpenGLWindowInternalData* m_internalData);
void Mac_getMouseCoordinates(struct MacOpenGLWindowInternalData* m_internalData, int* xPtr, int* yPtr);
void Mac_setMouseMoveCallback(struct MacOpenGLWindowInternalData* m_internalData, b3MouseMoveCallback mouseCallback);
b3MouseMoveCallback Mac_getMouseMoveCallback(struct MacOpenGLWindowInternalData* m_internalData);
void Mac_setWheelCallback(struct MacOpenGLWindowInternalData* m_internalData, b3WheelCallback wheelCallback);
b3WheelCallback Mac_getWheelCallback(struct MacOpenGLWindowInternalData* m_internalData);
void Mac_setResizeCallback(struct MacOpenGLWindowInternalData* m_internalData, b3ResizeCallback resizeCallback);
b3ResizeCallback Mac_getResizeCallback(struct MacOpenGLWindowInternalData* m_internalData);
//void Mac_setRenderCallback(struct MacOpenGLWindowInternalData* m_internalData, b3RenderCallback renderCallback);
#ifdef __cplusplus
}
#endif
#endif //MAC_OPENGL_WINDOW_OBJC_H

View File

@@ -1,4 +1,4 @@
#include "MacOpenGLWindow.h" #include "MacOpenGLWindowObjC.h"
#define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED #define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
@@ -66,12 +66,7 @@
#endif #endif
enum
{
MY_MAC_ALTKEY=1,
MY_MAC_SHIFTKEY=2,
MY_MAC_CONTROL_KEY=4
};
/* report GL errors, if any, to stderr */ /* report GL errors, if any, to stderr */
static void checkError(const char *functionName) static void checkError(const char *functionName)
@@ -118,9 +113,7 @@ void dumpInfo(void)
-(NSOpenGLContext*) getContext; -(NSOpenGLContext*) getContext;
@end @end
float loop;
#define Pi 3.1415
@implementation TestView @implementation TestView
@@ -197,7 +190,6 @@ float loop;
[m_context flushBuffer]; [m_context flushBuffer];
[NSOpenGLContext clearCurrentContext]; [NSOpenGLContext clearCurrentContext];
loop = loop + 0.1;
} }
-(void) MakeContext :(int) openglVersion -(void) MakeContext :(int) openglVersion
@@ -257,101 +249,71 @@ float loop;
struct MacOpenGLWindowInternalData struct MacOpenGLWindowInternalData
{ {
MacOpenGLWindowInternalData()
{
m_myApp = 0;
m_myview = 0;
m_pool = 0;
m_window = 0;
m_exitRequested = false;
}
NSApplication* m_myApp; NSApplication* m_myApp;
TestView* m_myview; TestView* m_myview;
NSAutoreleasePool* m_pool; NSAutoreleasePool* m_pool;
NSWindow* m_window; NSWindow* m_window;
bool m_exitRequested; bool m_exitRequested;
float m_mouseX;
float m_mouseY;
int m_modifierFlags;
b3MouseButtonCallback m_mouseButtonCallback;
b3MouseMoveCallback m_mouseMoveCallback;
b3WheelCallback m_wheelCallback;
b3KeyboardCallback m_keyboardCallback;
b3RenderCallback m_renderCallback;
float m_retinaScaleFactor;
bool m_allowRetina;
}; };
MacOpenGLWindow::MacOpenGLWindow() struct MacOpenGLWindowInternalData* Mac_createData()
:m_internalData(0),
m_mouseX(0),
m_mouseY(0),
m_modifierFlags(0),
m_mouseButtonCallback(0),
m_mouseMoveCallback(0),
m_wheelCallback(0),
m_keyboardCallback(0),
m_retinaScaleFactor(1),
m_allowRetina(true)
{ {
struct MacOpenGLWindowInternalData* data = malloc(sizeof(struct MacOpenGLWindowInternalData));
data->m_myApp = 0;
data->m_myview = 0;
data->m_pool = 0;
data->m_window = 0;
data->m_exitRequested = false;
data->m_mouseX=-1;
data->m_mouseY=-1;
data->m_modifierFlags = 0;
data->m_mouseButtonCallback = 0;
data->m_mouseMoveCallback = 0;;
data->m_wheelCallback =0;
data->m_keyboardCallback =0;
data->m_renderCallback=0;
data->m_allowRetina = true;
data->m_retinaScaleFactor = 1;
return data;
} }
MacOpenGLWindow::~MacOpenGLWindow() void Mac_destroyData(struct MacOpenGLWindowInternalData* data)
{ {
if (m_internalData) free(data);
closeWindow();
} }
void Mac_setWindowTitle(struct MacOpenGLWindowInternalData* data, const char* windowTitle)
bool MacOpenGLWindow::isModifierKeyPressed(int key)
{ {
bool isPressed = false; [data->m_window setTitle:[NSString stringWithCString:windowTitle encoding:NSISOLatin1StringEncoding]] ;
switch (key)
{
case B3G_ALT:
{
isPressed = ((m_modifierFlags & MY_MAC_ALTKEY)!=0);
break;
};
case B3G_SHIFT:
{
isPressed = ((m_modifierFlags & MY_MAC_SHIFTKEY)!=0);
break;
};
case B3G_CONTROL:
{
isPressed = ((m_modifierFlags & MY_MAC_CONTROL_KEY )!=0);
break;
};
default:
{
}
};
return isPressed;
} }
float MacOpenGLWindow::getTimeInSeconds() int Mac_createWindow(struct MacOpenGLWindowInternalData* m_internalData,struct MacWindowConstructionInfo* ci)
{ {
return 0.f;
}
void MacOpenGLWindow::setRenderCallback( b3RenderCallback renderCallback)
{
m_renderCallback = renderCallback;
}
void MacOpenGLWindow::setWindowTitle(const char* windowTitle)
{
[m_internalData->m_window setTitle:[NSString stringWithCString:windowTitle encoding:NSISOLatin1StringEncoding]] ;
}
void MacOpenGLWindow::createWindow(const b3gWindowConstructionInfo& ci)
{
if (m_internalData)
closeWindow();
const char* windowTitle = ci.m_title;
const char* windowTitle = ci->m_title;
m_internalData->m_allowRetina = (ci->m_allowRetina!=0);
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
m_internalData = new MacOpenGLWindowInternalData;
m_internalData->m_pool = [NSAutoreleasePool new]; m_internalData->m_pool = [NSAutoreleasePool new];
m_internalData->m_myApp = [NSApplication sharedApplication]; m_internalData->m_myApp = [NSApplication sharedApplication];
//myApp = [MyApp sharedApplication]; //myApp = [MyApp sharedApplication];
@@ -419,7 +381,7 @@ void MacOpenGLWindow::createWindow(const b3gWindowConstructionInfo& ci)
[newItem release]; [newItem release];
*/ */
NSRect frame = NSMakeRect(0., 0., ci.m_width, ci.m_height); NSRect frame = NSMakeRect(0., 0., ci->m_width, ci->m_height);
m_internalData->m_window = [NSWindow alloc]; m_internalData->m_window = [NSWindow alloc];
[m_internalData->m_window initWithContentRect:frame [m_internalData->m_window initWithContentRect:frame
@@ -438,13 +400,14 @@ void MacOpenGLWindow::createWindow(const b3gWindowConstructionInfo& ci)
[m_internalData->m_myview initWithFrame: frame]; [m_internalData->m_myview initWithFrame: frame];
// OpenGL init! // OpenGL init!
[m_internalData->m_myview MakeContext : ci.m_openglVersion]; [m_internalData->m_myview MakeContext : ci->m_openglVersion];
// https://developer.apple.com/library/mac/#documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/CapturingScreenContents/CapturingScreenContents.html#//apple_ref/doc/uid/TP40012302-CH10-SW1 // https://developer.apple.com/library/mac/#documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/CapturingScreenContents/CapturingScreenContents.html#//apple_ref/doc/uid/TP40012302-CH10-SW1
//support HighResolutionOSX for Retina Macbook //support HighResolutionOSX for Retina Macbook
if (ci.m_openglVersion>=3) if (ci->m_openglVersion>=3)
{ {
if (m_allowRetina)
if (m_internalData->m_allowRetina)
{ {
[m_internalData->m_myview setWantsBestResolutionOpenGLSurface:YES]; [m_internalData->m_myview setWantsBestResolutionOpenGLSurface:YES];
} }
@@ -474,11 +437,11 @@ void MacOpenGLWindow::createWindow(const b3gWindowConstructionInfo& ci)
[NSApp activateIgnoringOtherApps:YES]; [NSApp activateIgnoringOtherApps:YES];
//[m_internalData->m_window setLevel:NSMainMenuWindowLevel]; //[m_internalData->m_window setLevel:NSMainMenuWindowLevel];
// [NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask]; // [NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask];
// [NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent *event) // [NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent *event)
// { // {
//[window setFrameOrigin:[NSEvent mouseLocation]]; //[window setFrameOrigin:[NSEvent mouseLocation]];
// NSPoint eventLocation = [m_internalData->m_window mouseLocationOutsideOfEventStream]; // NSPoint eventLocation = [m_internalData->m_window mouseLocationOutsideOfEventStream];
@@ -496,45 +459,23 @@ void MacOpenGLWindow::createWindow(const b3gWindowConstructionInfo& ci)
// }]; // }];
//see http://stackoverflow.com/questions/8238473/cant-get-nsmousemoved-events-from-nexteventmatchingmask-with-an-nsopenglview //see http://stackoverflow.com/questions/8238473/cant-get-nsmousemoved-events-from-nexteventmatchingmask-with-an-nsopenglview
/* ProcessSerialNumber psn; /* ProcessSerialNumber psn;
GetCurrentProcess(&psn); GetCurrentProcess(&psn);
TransformProcessType(&psn, kProcessTransformToForegroundApplication); TransformProcessType(&psn, kProcessTransformToForegroundApplication);
SetFrontProcess(&psn); SetFrontProcess(&psn);
*/ */
#ifndef NO_OPENGL3
m_retinaScaleFactor = [m_internalData->m_myview convertSizeToBacking:sz].width;
#else
m_retinaScaleFactor=1.f;
#endif
#ifndef NO_OPENGL3
m_internalData->m_retinaScaleFactor = [m_internalData->m_myview convertSizeToBacking:sz].width;
#else
m_internalData->m_retinaScaleFactor=1.f;
#endif
[m_internalData->m_myApp finishLaunching]; [m_internalData->m_myApp finishLaunching];
[pool release]; [pool release];
return 0;
} }
void MacOpenGLWindow::runMainLoop()
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// FILE* dump = fopen ("/Users/erwincoumans/yes.txt","wb");
// fclose(dump);
[pool release];
}
void MacOpenGLWindow::closeWindow()
{
delete m_internalData;
m_internalData = 0;
}
extern float m_azi;
extern float m_ele;
extern float m_cameraDistance;
/* /*
@@ -809,7 +750,7 @@ int getAsciiCodeFromVirtualKeycode(int virtualKeyCode)
} }
void MacOpenGLWindow::startRendering() int Mac_updateWindow(struct MacOpenGLWindowInternalData* m_internalData)
{ {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
@@ -838,42 +779,43 @@ void MacOpenGLWindow::startRendering()
if ([event type] == MyNSEventTypeFlagsChanged) if ([event type] == MyNSEventTypeFlagsChanged)
{ {
int modifiers = [event modifierFlags]; int modifiers = [event modifierFlags];
if (m_keyboardCallback)
if (m_internalData->m_keyboardCallback)
{ {
if ((modifiers & MyNSEventModifierFlagShift)) if ((modifiers & MyNSEventModifierFlagShift))
{ {
m_keyboardCallback(B3G_SHIFT,1); m_internalData->m_keyboardCallback(B3G_SHIFT,1);
m_modifierFlags |= MY_MAC_SHIFTKEY; m_internalData->m_modifierFlags |= MY_MAC_SHIFTKEY;
}else }else
{ {
if (m_modifierFlags& MY_MAC_SHIFTKEY) if (m_internalData->m_modifierFlags& MY_MAC_SHIFTKEY)
{ {
m_keyboardCallback(B3G_SHIFT,0); m_internalData->m_keyboardCallback(B3G_SHIFT,0);
m_modifierFlags &= ~MY_MAC_SHIFTKEY; m_internalData->m_modifierFlags &= ~MY_MAC_SHIFTKEY;
} }
} }
if (modifiers & MyNSEventModifierFlagControl) if (modifiers & MyNSEventModifierFlagControl)
{ {
m_keyboardCallback(B3G_CONTROL,1); m_internalData->m_keyboardCallback(B3G_CONTROL,1);
m_modifierFlags |= MY_MAC_CONTROL_KEY; m_internalData->m_modifierFlags |= MY_MAC_CONTROL_KEY;
} else } else
{ {
if (m_modifierFlags&MY_MAC_CONTROL_KEY) if (m_internalData->m_modifierFlags&MY_MAC_CONTROL_KEY)
{ {
m_keyboardCallback(B3G_CONTROL,0); m_internalData->m_keyboardCallback(B3G_CONTROL,0);
m_modifierFlags &= ~MY_MAC_CONTROL_KEY; m_internalData->m_modifierFlags &= ~MY_MAC_CONTROL_KEY;
} }
} }
if (modifiers & MyNSEventModifierFlagOption) if (modifiers & MyNSEventModifierFlagOption)
{ {
m_keyboardCallback(B3G_ALT,1); m_internalData->m_keyboardCallback(B3G_ALT,1);
m_modifierFlags |= MY_MAC_ALTKEY; m_internalData->m_modifierFlags |= MY_MAC_ALTKEY;
} else } else
{ {
if (m_modifierFlags&MY_MAC_ALTKEY) if (m_internalData->m_modifierFlags&MY_MAC_ALTKEY)
{ {
m_keyboardCallback(B3G_ALT,0); m_internalData->m_keyboardCallback(B3G_ALT,0);
m_modifierFlags &= ~MY_MAC_ALTKEY; m_internalData->m_modifierFlags &= ~MY_MAC_ALTKEY;
} }
} }
@@ -890,10 +832,10 @@ void MacOpenGLWindow::startRendering()
int keycode = getAsciiCodeFromVirtualKeycode(virtualKeycode); int keycode = getAsciiCodeFromVirtualKeycode(virtualKeycode);
// printf("keycode = %d\n", keycode); // printf("keycode = %d\n", keycode);
if (m_keyboardCallback) if (m_internalData->m_keyboardCallback)
{ {
int state = 0; int state = 0;
m_keyboardCallback(keycode,state); m_internalData->m_keyboardCallback(keycode,state);
} }
} }
@@ -909,10 +851,10 @@ void MacOpenGLWindow::startRendering()
int keycode = getAsciiCodeFromVirtualKeycode(virtualKeycode); int keycode = getAsciiCodeFromVirtualKeycode(virtualKeycode);
//printf("keycode = %d\n", keycode); //printf("keycode = %d\n", keycode);
if (m_keyboardCallback) if (m_internalData->m_keyboardCallback)
{ {
int state = 1; int state = 1;
m_keyboardCallback(keycode,state); m_internalData->m_keyboardCallback(keycode,state);
} }
} }
} }
@@ -926,8 +868,8 @@ void MacOpenGLWindow::startRendering()
NSPoint eventLocation = [event locationInWindow]; NSPoint eventLocation = [event locationInWindow];
NSPoint center = [m_internalData->m_myview convertPoint:eventLocation fromView:nil]; NSPoint center = [m_internalData->m_myview convertPoint:eventLocation fromView:nil];
m_mouseX = center.x; m_internalData->m_mouseX = center.x;
m_mouseY = [m_internalData->m_myview GetWindowHeight] - center.y; m_internalData->m_mouseY = [m_internalData->m_myview GetWindowHeight] - center.y;
int button=0; int button=0;
switch ([event type]) switch ([event type])
{ {
@@ -952,10 +894,10 @@ void MacOpenGLWindow::startRendering()
} }
}; };
// printf("mouse coord = %f, %f\n",mouseX,mouseY); // printf("mouse coord = %f, %f\n",mouseX,mouseY);
if (m_mouseButtonCallback) if (m_internalData->m_mouseButtonCallback)
{ {
//handledEvent = true; //handledEvent = true;
(*m_mouseButtonCallback)(button,1,m_mouseX,m_mouseY); (*m_internalData->m_mouseButtonCallback)(button,1,m_internalData->m_mouseX,m_internalData->m_mouseY);
} }
} }
@@ -967,8 +909,8 @@ void MacOpenGLWindow::startRendering()
NSPoint eventLocation = [event locationInWindow]; NSPoint eventLocation = [event locationInWindow];
NSPoint center = [m_internalData->m_myview convertPoint:eventLocation fromView:nil]; NSPoint center = [m_internalData->m_myview convertPoint:eventLocation fromView:nil];
m_mouseX = center.x; m_internalData->m_mouseX = center.x;
m_mouseY = [m_internalData->m_myview GetWindowHeight] - center.y; m_internalData->m_mouseY = [m_internalData->m_myview GetWindowHeight] - center.y;
int button=0; int button=0;
switch ([event type]) switch ([event type])
@@ -995,8 +937,8 @@ void MacOpenGLWindow::startRendering()
}; };
// printf("mouse coord = %f, %f\n",mouseX,mouseY); // printf("mouse coord = %f, %f\n",mouseX,mouseY);
if (m_mouseButtonCallback) if (m_internalData->m_mouseButtonCallback)
(*m_mouseButtonCallback)(button,0,m_mouseX,m_mouseY); (*m_internalData->m_mouseButtonCallback)(button,0,m_internalData->m_mouseX,m_internalData->m_mouseY);
} }
@@ -1006,15 +948,15 @@ void MacOpenGLWindow::startRendering()
NSPoint eventLocation = [event locationInWindow]; NSPoint eventLocation = [event locationInWindow];
NSPoint center = [m_internalData->m_myview convertPoint:eventLocation fromView:nil]; NSPoint center = [m_internalData->m_myview convertPoint:eventLocation fromView:nil];
m_mouseX = center.x; m_internalData->m_mouseX = center.x;
m_mouseY = [m_internalData->m_myview GetWindowHeight] - center.y; m_internalData->m_mouseY = [m_internalData->m_myview GetWindowHeight] - center.y;
// printf("mouse coord = %f, %f\n",m_mouseX,m_mouseY); // printf("mouse coord = %f, %f\n",m_mouseX,m_mouseY);
if (m_mouseMoveCallback) if (m_internalData->m_mouseMoveCallback)
{ {
//handledEvent = true; //handledEvent = true;
(*m_mouseMoveCallback)(m_mouseX,m_mouseY); (*m_internalData->m_mouseMoveCallback)(m_internalData->m_mouseX,m_internalData->m_mouseY);
} }
} }
@@ -1026,13 +968,13 @@ void MacOpenGLWindow::startRendering()
NSPoint eventLocation = [event locationInWindow]; NSPoint eventLocation = [event locationInWindow];
NSPoint center = [m_internalData->m_myview convertPoint:eventLocation fromView:nil]; NSPoint center = [m_internalData->m_myview convertPoint:eventLocation fromView:nil];
m_mouseX = center.x; m_internalData->m_mouseX = center.x;
m_mouseY = [m_internalData->m_myview GetWindowHeight] - center.y; m_internalData->m_mouseY = [m_internalData->m_myview GetWindowHeight] - center.y;
if (m_mouseMoveCallback) if (m_internalData->m_mouseMoveCallback)
{ {
//handledEvent = true; //handledEvent = true;
(*m_mouseMoveCallback)(m_mouseX,m_mouseY); (*m_internalData->m_mouseMoveCallback)(m_internalData->m_mouseX,m_internalData->m_mouseY);
} }
// printf("mouse coord = %f, %f\n",m_mouseX,m_mouseY); // printf("mouse coord = %f, %f\n",m_mouseX,m_mouseY);
@@ -1044,16 +986,17 @@ void MacOpenGLWindow::startRendering()
dy = [ event deltaY ]; dy = [ event deltaY ];
dx = [ event deltaX ]; dx = [ event deltaX ];
if (m_wheelCallback) if (m_internalData->m_wheelCallback)
{ {
handledEvent = true; handledEvent = true;
(*m_wheelCallback)(dx,dy); (*m_internalData->m_wheelCallback)(dx,dy);
} }
// m_cameraDistance -= dy*0.1; // m_cameraDistance -= dy*0.1;
// m_azi -= dx*0.1; // m_azi -= dx*0.1;
} }
if (!handledEvent) if (!handledEvent)
[m_internalData->m_myApp sendEvent:event]; [m_internalData->m_myApp sendEvent:event];
@@ -1080,26 +1023,50 @@ void MacOpenGLWindow::startRendering()
err = glGetError(); err = glGetError();
assert(err==GL_NO_ERROR); assert(err==GL_NO_ERROR);
float aspect;
//b3Vector3 extents;
if (getWidth() > getHeight())
{
aspect = (float)getWidth() / (float)getHeight();
//extents.setValue(aspect * 1.0f, 1.0f,0);
} else
{
aspect = (float)getHeight() / (float)getWidth();
//extents.setValue(1.0f, aspect*1.f,0);
}
err = glGetError(); err = glGetError();
assert(err==GL_NO_ERROR); assert(err==GL_NO_ERROR);
[pool release]; [pool release];
return 0;
} }
void MacOpenGLWindow::endRendering() int Mac_isModifierKeyPressed(struct MacOpenGLWindowInternalData* m_internalData, int key)
{
int isPressed = 0;
switch (key)
{
case B3G_ALT:
{
isPressed = ((m_internalData->m_modifierFlags & MY_MAC_ALTKEY)!=0);
break;
};
case B3G_SHIFT:
{
isPressed = ((m_internalData->m_modifierFlags & MY_MAC_SHIFTKEY)!=0);
break;
};
case B3G_CONTROL:
{
isPressed = ((m_internalData->m_modifierFlags & MY_MAC_CONTROL_KEY )!=0);
break;
};
default:
{
}
};
return isPressed;
}
//void Mac_setRenderCallback(struct MacOpenGLWindowInternalData* m_internalData, b3RenderCallback renderCallback)
//{
// m_internalData->m_renderCallback = renderCallback;
//}
void Mac_swapBuffer(struct MacOpenGLWindowInternalData* m_internalData)
{ {
[m_internalData->m_myview MakeCurrent]; [m_internalData->m_myview MakeCurrent];
//#ifndef NO_OPENGL3 //#ifndef NO_OPENGL3
@@ -1110,19 +1077,74 @@ void MacOpenGLWindow::endRendering()
} }
bool MacOpenGLWindow::requestedExit() const int Mac_requestedExit(struct MacOpenGLWindowInternalData* m_internalData)
{ {
bool closeme = m_internalData->m_myview.GetRequestClose; int closeme = m_internalData->m_myview.GetRequestClose;
return m_internalData->m_exitRequested || closeme; return m_internalData->m_exitRequested || closeme;
} }
void MacOpenGLWindow::setRequestExit() void Mac_setRequestExit(struct MacOpenGLWindowInternalData* m_internalData)
{ {
m_internalData->m_exitRequested = true; m_internalData->m_exitRequested = true;
} }
#include <string.h>
int MacOpenGLWindow::fileOpenDialog(char* filename, int maxNameLength)
void Mac_setMouseButtonCallback(struct MacOpenGLWindowInternalData* m_internalData, b3MouseButtonCallback mouseCallback)
{
m_internalData->m_mouseButtonCallback = mouseCallback;
}
b3MouseButtonCallback Mac_getMouseButtonCallback(struct MacOpenGLWindowInternalData* m_internalData)
{
return m_internalData->m_mouseButtonCallback;
}
void Mac_setWheelCallback(struct MacOpenGLWindowInternalData* m_internalData, b3WheelCallback wheelCallback)
{
m_internalData->m_wheelCallback = wheelCallback;
}
b3WheelCallback Mac_getWheelCallback(struct MacOpenGLWindowInternalData* m_internalData)
{
return m_internalData->m_wheelCallback;
}
void Mac_setMouseMoveCallback(struct MacOpenGLWindowInternalData* m_internalData, b3MouseMoveCallback mouseCallback)
{
m_internalData->m_mouseMoveCallback = mouseCallback;
}
b3MouseMoveCallback Mac_getMouseMoveCallback(struct MacOpenGLWindowInternalData* m_internalData)
{
return m_internalData->m_mouseMoveCallback;
}
b3KeyboardCallback Mac_getKeyboardCallback(struct MacOpenGLWindowInternalData* m_internalData)
{
return m_internalData->m_keyboardCallback;
}
void Mac_setKeyboardCallback( struct MacOpenGLWindowInternalData* m_internalData, b3KeyboardCallback keyboardCallback)
{
m_internalData->m_keyboardCallback = keyboardCallback;
}
float Mac_getRetinaScale(struct MacOpenGLWindowInternalData* m_internalData)
{
return m_internalData->m_retinaScaleFactor;
}
void Mac_setAllowRetina(struct MacOpenGLWindowInternalData* m_internalData, int allow)
{
m_internalData->m_allowRetina = allow;
}
int Mac_fileOpenDialog(char* filename, int maxNameLength)
{ {
//save/restore the OpenGL context, NSOpenPanel can mess it up //save/restore the OpenGL context, NSOpenPanel can mess it up
//http://stackoverflow.com/questions/13987148/nsopenpanel-breaks-my-sdl-opengl-app //http://stackoverflow.com/questions/13987148/nsopenpanel-breaks-my-sdl-opengl-app
@@ -1145,7 +1167,7 @@ int MacOpenGLWindow::fileOpenDialog(char* filename, int maxNameLength)
{ {
//without the file:// //without the file://
NSString *myString = [zUrl absoluteString]; NSString *myString = [zUrl absoluteString];
int slen = [myString length]; int slen = (int)[myString length];
if (slen < maxNameLength) if (slen < maxNameLength)
{ {
const char *cfilename=[myString UTF8String]; const char *cfilename=[myString UTF8String];
@@ -1153,7 +1175,7 @@ int MacOpenGLWindow::fileOpenDialog(char* filename, int maxNameLength)
const char* p = strstr(cfilename, "file://"); const char* p = strstr(cfilename, "file://");
if (p==cfilename) if (p==cfilename)
{ {
int actualLen = strlen(cfilename)-7; int actualLen = (int)strlen(cfilename)-7;
memcpy(filename, cfilename+7,actualLen); memcpy(filename, cfilename+7,actualLen);
filename[actualLen]=0; filename[actualLen]=0;
return actualLen; return actualLen;
@@ -1164,23 +1186,20 @@ int MacOpenGLWindow::fileOpenDialog(char* filename, int maxNameLength)
return 0; return 0;
} }
void Mac_getMouseCoordinates(struct MacOpenGLWindowInternalData* m_internalData, int* xPtr, int* yPtr)
void MacOpenGLWindow::getMouseCoordinates(int& x, int& y)
{ {
NSPoint pt = [m_internalData->m_window mouseLocationOutsideOfEventStream]; NSPoint pt = [m_internalData->m_window mouseLocationOutsideOfEventStream];
m_mouseX = pt.x; m_internalData->m_mouseX = pt.x;
m_mouseY = pt.y; m_internalData->m_mouseY = pt.y;
x = m_mouseX; *xPtr = m_internalData->m_mouseX;
//our convention is x,y is upper left hand side //our convention is x,y is upper left hand side
y = [m_internalData->m_myview GetWindowHeight]-m_mouseY; *yPtr = [m_internalData->m_myview GetWindowHeight]-m_internalData->m_mouseY;
} }
int MacOpenGLWindow::getWidth() const int Mac_getWidth(struct MacOpenGLWindowInternalData* m_internalData)
{ {
if (m_internalData && m_internalData->m_myview && m_internalData->m_myview.GetWindowWidth) if (m_internalData && m_internalData->m_myview && m_internalData->m_myview.GetWindowWidth)
return m_internalData->m_myview.GetWindowWidth; return m_internalData->m_myview.GetWindowWidth;
@@ -1188,25 +1207,23 @@ int MacOpenGLWindow::getWidth() const
return 0; return 0;
} }
int MacOpenGLWindow::getHeight() const int Mac_getHeight(struct MacOpenGLWindowInternalData* m_internalData)
{ {
if (m_internalData && m_internalData->m_myview && m_internalData->m_myview.GetWindowHeight) if (m_internalData && m_internalData->m_myview && m_internalData->m_myview.GetWindowHeight)
return m_internalData->m_myview.GetWindowHeight; return m_internalData->m_myview.GetWindowHeight;
return 0; return 0;
} }
void Mac_setResizeCallback(struct MacOpenGLWindowInternalData* m_internalData, b3ResizeCallback resizeCallback)
void MacOpenGLWindow::setResizeCallback(b3ResizeCallback resizeCallback)
{ {
[m_internalData->m_myview setResizeCallback:resizeCallback]; [m_internalData->m_myview setResizeCallback:resizeCallback];
if (resizeCallback) if (resizeCallback)
{ {
(resizeCallback)(getWidth(), getHeight()); (resizeCallback)(Mac_getWidth(m_internalData), Mac_getHeight(m_internalData));
} }
} }
b3ResizeCallback MacOpenGLWindow::getResizeCallback() b3ResizeCallback Mac_getResizeCallback(struct MacOpenGLWindowInternalData* m_internalData)
{ {
return [m_internalData->m_myview getResizeCallback]; return [m_internalData->m_myview getResizeCallback];
} }

View File

@@ -41,10 +41,17 @@
"X11OpenGLWindows.h" "X11OpenGLWindows.h"
} }
end end
if not os.is("MacoSX") then
excludes {
"MacOpenGLWindow.cpp"
}
end
if os.is("MacOSX") then if os.is("MacOSX") then
files files
{ {
"../OpenGLWindow/MacOpenGLWindow.h", "MacOpenGLWindow.h",
"../OpenGLWindow/MacOpenGLWindow.mm", "MacOpenGLWindow.cpp",
"MacOpenGLWindowObjC.m",
"MacOpenGLWindowObjC.h",
} }
end end

389
setup.py Normal file
View File

@@ -0,0 +1,389 @@
from setuptools import find_packages
from sys import platform as _platform
import sys
import glob
from distutils.core import setup
from distutils.extension import Extension
from distutils.util import get_platform
from glob import glob
#see http://stackoverflow.com/a/8719066/295157
import os
os.environ['LDFLAGS'] = '-framework Cocoa -framework OpenGL'
platform = get_platform()
print(platform)
CXX_FLAGS = ''
CXX_FLAGS += '-DGWEN_COMPILE_STATIC '
CXX_FLAGS += '-DBT_ENABLE_ENET '
CXX_FLAGS += '-DBT_ENABLE_CLSOCKET '
# libraries += [current_python]
sources = ["examples/pybullet/pybullet.c"]\
+["examples/ExampleBrowser/InProcessExampleBrowser.cpp"]\
+["examples/TinyRenderer/geometry.cpp"]\
+["examples/TinyRenderer/model.cpp"]\
+["examples/TinyRenderer/tgaimage.cpp"]\
+["examples/TinyRenderer/our_gl.cpp"]\
+["examples/TinyRenderer/TinyRenderer.cpp"]\
+["examples/SharedMemory/IKTrajectoryHelper.cpp"]\
+["examples/SharedMemory/InProcessMemory.cpp"]\
+["examples/SharedMemory/PhysicsClient.cpp"]\
+["examples/SharedMemory/PhysicsServer.cpp"]\
+["examples/SharedMemory/PhysicsServerExample.cpp"]\
+["examples/SharedMemory/SharedMemoryInProcessPhysicsC_API.cpp"]\
+["examples/SharedMemory/PhysicsServerSharedMemory.cpp"]\
+["examples/SharedMemory/PhysicsDirect.cpp"]\
+["examples/SharedMemory/PhysicsDirectC_API.cpp"]\
+["examples/SharedMemory/PhysicsServerCommandProcessor.cpp"]\
+["examples/SharedMemory/PhysicsClientSharedMemory.cpp"]\
+["examples/SharedMemory/PhysicsClientSharedMemory_C_API.cpp"]\
+["examples/SharedMemory/PhysicsClientC_API.cpp"]\
+["examples/SharedMemory/Win32SharedMemory.cpp"]\
+["examples/SharedMemory/PosixSharedMemory.cpp"]\
+["examples/SharedMemory/TinyRendererVisualShapeConverter.cpp"]\
+["examples/Utils/b3ResourcePath.cpp"]\
+["examples/Utils/RobotLoggingUtil.cpp"]\
+["examples/Utils/ChromeTraceUtil.cpp"]\
+["examples/Utils/b3Clock.cpp"]\
+["examples/Utils/b3Quickprof.cpp"]\
+["examples/ThirdPartyLibs/tinyxml/tinystr.cpp"]\
+["examples/ThirdPartyLibs/tinyxml/tinyxml.cpp"]\
+["examples/ThirdPartyLibs/tinyxml/tinyxmlerror.cpp"]\
+["examples/ThirdPartyLibs/tinyxml/tinyxmlparser.cpp"]\
+["examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.cpp"]\
+["examples/ThirdPartyLibs/stb_image/stb_image.cpp"]\
+["examples/Importers/ImportColladaDemo/LoadMeshFromCollada.cpp"]\
+["examples/Importers/ImportObjDemo/LoadMeshFromObj.cpp"]\
+["examples/Importers/ImportObjDemo/Wavefront2GLInstanceGraphicsShape.cpp"]\
+["examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp"]\
+["examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp"]\
+["examples/Importers/ImportURDFDemo/MyMultiBodyCreator.cpp"]\
+["examples/Importers/ImportURDFDemo/URDF2Bullet.cpp"]\
+["examples/Importers/ImportURDFDemo/UrdfParser.cpp"]\
+["examples/Importers/ImportURDFDemo/urdfStringSplit.cpp"]\
+["examples/Importers/ImportMeshUtility/b3ImportMeshUtility.cpp"]\
+["examples/MultiThreading/b3PosixThreadSupport.cpp"]\
+["examples/MultiThreading/b3Win32ThreadSupport.cpp"]\
+["examples/MultiThreading/b3ThreadSupportInterface.cpp"]\
+["examples/ThirdPartyLibs/enet/callbacks.c"]\
+["examples/ThirdPartyLibs/enet/compress.c"]\
+["examples/ThirdPartyLibs/enet/host.c"]\
+["examples/ThirdPartyLibs/enet/list.c"]\
+["examples/ThirdPartyLibs/enet/packet.c"]\
+["examples/ThirdPartyLibs/enet/peer.c"]\
+["examples/ThirdPartyLibs/enet/protocol.c"]\
+["examples/ExampleBrowser/OpenGLGuiHelper.cpp"]\
+["examples/ExampleBrowser/OpenGLExampleBrowser.cpp"]\
+["examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp"]\
+["examples/ExampleBrowser/GL_ShapeDrawer.cpp"]\
+["examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp"]\
+["examples/OpenGLWindow/GLInstancingRenderer.cpp"]\
+["examples/OpenGLWindow/SimpleOpenGL3App.cpp"]\
+["examples/OpenGLWindow/GLPrimitiveRenderer.cpp"]\
+["examples/OpenGLWindow/TwFonts.cpp"]\
+["examples/OpenGLWindow/GLRenderToTexture.cpp"]\
+["examples/OpenGLWindow/LoadShader.cpp"]\
+["examples/OpenGLWindow/OpenSans.cpp"]\
+["examples/OpenGLWindow/SimpleCamera.cpp"]\
+["examples/OpenGLWindow/fontstash.cpp"]\
+["examples/OpenGLWindow/SimpleOpenGL2App.cpp"]\
+["examples/OpenGLWindow/opengl_fontstashcallbacks.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/GraphingTexture.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/GwenProfileWindow.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/gwenUserInterface.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/GwenParameterInterface.cpp"]\
+["examples/ExampleBrowser/GwenGUISupport/GwenTextureWindow.cpp"]\
+["src/LinearMath/btAlignedAllocator.cpp"]\
+["src/LinearMath/btGeometryUtil.cpp"]\
+["src/LinearMath/btSerializer.cpp"]\
+["src/LinearMath/btVector3.cpp"]\
+["src/LinearMath/btConvexHull.cpp"]\
+["src/LinearMath/btPolarDecomposition.cpp"]\
+["src/LinearMath/btSerializer64.cpp"]\
+["src/LinearMath/btConvexHullComputer.cpp"]\
+["src/LinearMath/btQuickprof.cpp"]\
+["src/LinearMath/btThreads.cpp"]\
+["src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp"]\
+["src/BulletCollision/BroadphaseCollision/btDbvt.cpp"]\
+["src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp"]\
+["src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp"]\
+["src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp"]\
+["src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp"]\
+["src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp"]\
+["src/BulletCollision/BroadphaseCollision/btDispatcher.cpp"]\
+["src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp"]\
+["src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp"]\
+["src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp"]\
+["src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp"]\
+["src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btManifoldResult.cpp"]\
+["src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp"]\
+["src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp"]\
+["src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp"]\
+["src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btCollisionObject.cpp"]\
+["src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp"]\
+["src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp"]\
+["src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp"]\
+["src/BulletCollision/CollisionDispatch/btUnionFind.cpp"]\
+["src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp"]\
+["src/BulletCollision/CollisionDispatch/btGhostObject.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btContinuousConvexCollision.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btGjkEpaPenetrationDepthSolver.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btPolyhedralContactClipping.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btConvexCast.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btGjkPairDetector.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btRaycastCallback.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btGjkConvexCast.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btMinkowskiPenetrationDepthSolver.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btSubSimplexConvexCast.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btGjkEpa2.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btPersistentManifold.cpp"]\
+["src/BulletCollision/NarrowphaseCollision/btVoronoiSimplexSolver.cpp"]\
+["src/BulletCollision/CollisionShapes/btBox2dShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp"]\
+["src/BulletCollision/CollisionShapes/btShapeHull.cpp"]\
+["src/BulletCollision/CollisionShapes/btBoxShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btSphereShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btCapsuleShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btCylinderShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp"]\
+["src/BulletCollision/CollisionShapes/btCollisionShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btEmptyShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btCompoundShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp"]\
+["src/BulletCollision/CollisionShapes/btConcaveShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btTriangleCallback.cpp"]\
+["src/BulletCollision/CollisionShapes/btConeShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvex2dShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexHullShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp"]\
+["src/BulletCollision/CollisionShapes/btTriangleMesh.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp"]\
+["src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp"]\
+["src/BulletCollision/Gimpact/btContactProcessing.cpp"]\
+["src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp"]\
+["src/BulletCollision/Gimpact/btTriangleShapeEx.cpp"]\
+["src/BulletCollision/Gimpact/gim_memory.cpp"]\
+["src/BulletCollision/Gimpact/btGImpactBvh.cpp"]\
+["src/BulletCollision/Gimpact/btGImpactShape.cpp"]\
+["src/BulletCollision/Gimpact/gim_box_set.cpp"]\
+["src/BulletCollision/Gimpact/gim_tri_collision.cpp"]\
+["src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp"]\
+["src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp"]\
+["src/BulletCollision/Gimpact/gim_contact.cpp"]\
+["src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp"]\
+["src/BulletDynamics/Dynamics/btRigidBody.cpp"]\
+["src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp"]\
+["src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp"]\
+["src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btGearConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp"]\
+["src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp"]\
+["src/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp"]\
+["src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp"]\
+["src/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp"]\
+["src/BulletDynamics/Featherstone/btMultiBody.cpp"]\
+["src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp"]\
+["src/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp"]\
+["src/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp"]\
+["src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp"]\
+["src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp"]\
+["src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp"]\
+["src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp"]\
+["src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp"]\
+["src/BulletDynamics/Vehicle/btRaycastVehicle.cpp"]\
+["src/BulletDynamics/Vehicle/btWheelInfo.cpp"]\
+["src/BulletDynamics/Character/btKinematicCharacterController.cpp"]\
+["src/Bullet3Common/b3AlignedAllocator.cpp"]\
+["src/Bullet3Common/b3Logging.cpp"]\
+["src/Bullet3Common/b3Vector3.cpp"]\
+["examples/ThirdPartyLibs/clsocket/src/ActiveSocket.cpp"]\
+["examples/ThirdPartyLibs/clsocket/src/PassiveSocket.cpp"]\
+["examples/ThirdPartyLibs/clsocket/src/SimpleSocket.cpp"]\
+["Extras/Serialize/BulletFileLoader/bChunk.cpp"]\
+["Extras/Serialize/BulletFileLoader/bDNA.cpp"]\
+["Extras/Serialize/BulletFileLoader/bFile.cpp"]\
+["Extras/Serialize/BulletFileLoader/btBulletFile.cpp"]\
+["Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp"]\
+["Extras/Serialize/BulletWorldImporter/btWorldImporter.cpp"]\
+["Extras/InverseDynamics/CloneTreeCreator.cpp"]\
+["Extras/InverseDynamics/IDRandomUtil.cpp"]\
+["Extras/InverseDynamics/MultiBodyTreeDebugGraph.cpp"]\
+["Extras/InverseDynamics/User2InternalIndex.cpp"]\
+["Extras/InverseDynamics/CoilCreator.cpp"]\
+["Extras/InverseDynamics/MultiBodyNameMap.cpp"]\
+["Extras/InverseDynamics/RandomTreeCreator.cpp"]\
+["Extras/InverseDynamics/btMultiBodyTreeCreator.cpp"]\
+["Extras/InverseDynamics/DillCreator.cpp"]\
+["Extras/InverseDynamics/MultiBodyTreeCreator.cpp"]\
+["Extras/InverseDynamics/SimpleTreeCreator.cpp"]\
+["Extras/InverseDynamics/invdyn_bullet_comparison.cpp"]\
+["src/BulletSoftBody/btDefaultSoftBodySolver.cpp"]\
+["src/BulletSoftBody/btSoftBodyHelpers.cpp"]\
+["src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp"]\
+["src/BulletSoftBody/btSoftBody.cpp"]\
+["src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp"]\
+["src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp"]\
+["src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp"]\
+["src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp"]\
+["src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp"]\
+["src/BulletInverseDynamics/IDMath.cpp"]\
+["src/BulletInverseDynamics/MultiBodyTree.cpp"]\
+["src/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp"]\
+["src/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp"]\
+["examples/ThirdPartyLibs/BussIK/Jacobian.cpp"]\
+["examples/ThirdPartyLibs/BussIK/LinearR2.cpp"]\
+["examples/ThirdPartyLibs/BussIK/LinearR3.cpp"]\
+["examples/ThirdPartyLibs/BussIK/LinearR4.cpp"]\
+["examples/ThirdPartyLibs/BussIK/MatrixRmn.cpp"]\
+["examples/ThirdPartyLibs/BussIK/Misc.cpp"]\
+["examples/ThirdPartyLibs/BussIK/Node.cpp"]\
+["examples/ThirdPartyLibs/BussIK/Tree.cpp"]\
+["examples/ThirdPartyLibs/BussIK/VectorRn.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Anim.cpp"]\
+["examples/ThirdPartyLibs/Gwen/DragAndDrop.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Hook.cpp"]\
+["examples/ThirdPartyLibs/Gwen/ToolTip.cpp"]\
+["examples/ThirdPartyLibs/Gwen/events.cpp"]\
+["examples/ThirdPartyLibs/Gwen/BaseRender.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Gwen.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Skin.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Utility.cpp"]\
+["examples/ThirdPartyLibs/Gwen/inputhandler.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Base.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Button.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Canvas.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/CheckBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ColorControls.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ColorPicker.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ComboBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/CrossSplitter.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/DockBase.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/DockedTabControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Dragger.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/GroupBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/HSVColorPicker.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/HorizontalScrollBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ImagePanel.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/HorizontalSlider.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Label.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/LabelClickable.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ListBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/MenuItem.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Menu.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/MenuStrip.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/NumericUpDown.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/PanelListPanel.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ProgressBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Properties.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/RadioButton.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/RadioButtonController.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ResizableControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Resizer.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/RichLabel.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ScrollBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ScrollBarBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ScrollBarButton.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/ScrollControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Slider.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/SplitterBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TabButton.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TabControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TabStrip.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Text.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TextBox.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TextBoxNumeric.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TreeControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/TreeNode.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/VerticalScrollBar.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/VerticalSlider.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/WindowControl.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Dialog/FileOpen.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Dialog/FileSave.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Controls/Dialog/Query.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Platforms/Null.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Platforms/Windows.cpp"]\
+["examples/ThirdPartyLibs/Gwen/Renderers/OpenGL_DebugFont.cpp"]\
if _platform == "linux" or _platform == "linux2":
libraries += ['dl']
CXX_FLAGS += '-D_LINUX '
CXX_FLAGS += '-DHAS_SOCKLEN_T '
CXX_FLAGS += '-fno-inline-functions-called-once'
elif _platform == "darwin":
print("darwin!")
CXX_FLAGS += '-DHAS_SOCKLEN_T '
CXX_FLAGS += '-D_DARWIN '
# CXX_FLAGS += '-framework Cocoa '
sources = sources + ["examples/ThirdPartyLibs/enet/unix.c"]\
+["examples/OpenGLWindow/MacOpenGLWindow.cpp"]\
+["examples/OpenGLWindow/MacOpenGLWindowObjC.m"]
setup(
name = 'pybullet',
version='0.1.0',
description='Official Python Interface for the Bullet Physics SDK Robotics Simulator',
long_description='pybullet is an easy to use Python module for physics simulation, robotics and machine learning based on the Bullet Physics SDK. With pybullet you can load articulated bodies from URDF, SDF and other file formats. pybullet provides forward dynamics simulation, inverse dynamics computation, forward and inverse kinematics and collision detection and ray intersection queries. Aside from physics simulation, pybullet supports to rendering, with a CPU renderer and OpenGL visualization and support for virtual reality headsets.',
url='https://github.com/bulletphysics/bullet3',
author='Erwin Coumans, Yunfei Bai, Jasmine Hsu',
author_email='erwincoumans@google.com',
license='zlib',
platforms='any',
keywords=['physics', 'robotics', 'collision detection', 'simulation'],
ext_modules = [Extension("pybullet",
sources = sources
,
extra_compile_args=CXX_FLAGS.split(),
include_dirs = ["src","examples/ThirdPartyLibs","examples/ThirdPartyLibs/Glew", "examples/ThirdPartyLibs/enet/include","examples/ThirdPartyLibs/clsocket/src"]
) ],
package_data = {
'pybullet': ['data/*'],
},
)

View File

@@ -63,7 +63,9 @@
links{"Cocoa.framework"} links{"Cocoa.framework"}
print("hello!") print("hello!")
files{ files{
"../../examples/OpenGLWindow/MacOpenGLWindow.mm", "../../examples/OpenGLWindow/MacOpenGLWindow.cpp",
"../../examples/OpenGLWindow/MacOpenGLWindow.h", "../../examples/OpenGLWindow/MacOpenGLWindow.h",
"../../examples/OpenGLWindow/MacOpenGLWindowObjC.m",
"../../examples/OpenGLWindow/MacOpenGLWindowObjC.h",
} }
end end