Panda Bullet

I’d like to try this out and possibly help with development… I’d much rather be using Bullet than PhysX for my projects, especially since they’ve started integrating OpenCL hardware acceleration support.

I’ve downloaded libpandabullet-r9.zip and tried building it; the .pyd included doesn’t work on Linux apparently:

$ ppython 01_Basics.py 
DirectStart: Starting the game.
Known pipe types:
  glxGraphicsPipe
(all display modules loaded.)
Traceback (most recent call last):
  File "01_Basics.py", line 22, in <module>
    from libpandabullet import BulletWorld
ImportError: No module named libpandabullet

$ file libp ppython 01_Basics.py 
DirectStart: Starting the game.
Known pipe types:
  glxGraphicsPipe
(all display modules loaded.)
Traceback (most recent call last):
  File "01_Basics.py", line 22, in <module>
    from libpandabullet import BulletWorld
ImportError: No module named libpandabullet
andabullet.pyd 
libpandabullet.pyd: PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit

So, I tried installing the latest Bullet from SVN (r2243) and building libpandabullet, and the first time running scons seemed to indicate that it was also rather Windows-specific:

$ scons
scons: Reading SConscript files ...
KeyError: 'PROGRAMFILES':
  File "/home/whitelynx/devel/libpandabullet-r9/SConstruct", line 13:
    SConscript([ 'SConscript.%s' % PLATFORM, ])
  File "/usr/lib/python2.7/site-packages/SCons/Script/SConscript.py", line 614:
    return method(*args, **kw)
  File "/usr/lib/python2.7/site-packages/SCons/Script/SConscript.py", line 551:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/usr/lib/python2.7/site-packages/SCons/Script/SConscript.py", line 260:
    exec _file_ in call_stack[-1].globals
  File "/home/whitelynx/devel/libpandabullet-r9/SConscript.VC9", line 4:
    PANDADIR  = os.environ['PROGRAMFILES'] + '/Panda3D-1.7.1'
  File "/usr/lib/python2.7/UserDict.py", line 23:
    raise KeyError(key)

I checked out the SConstruct file, and noticed the PLATFORM line, which seemed to indicate that setting it to ‘Linux’ was valid, but that doesn’t seem to work either:

$ scons
scons: Reading SConscript files ...

scons: warning: Ignoring missing SConscript 'SConscript.Linux'
File "/home/whitelynx/devel/libpandabullet-r9/SConstruct", line 13, in <module>

scons: *** Import of non-existent variable ''env''
File "/home/whitelynx/devel/libpandabullet-r9/SConstruct", line 14, in <module>

Is there currently a way to build this on Linux, or should I hack together a method for doing this? I’m not very familiar with scons aside from reading several articles about it, but I’m very fluent in both Python and waf. (which I prefer over scons from a purely feature-oriented and performance-oriented point of view… we use waf for all of our C/C+±based projects)

If it’d be desirable, I’d also love to write a waf build system for this… but it’s up to you if you’d want that.