Browse Source

physx: remove support for NVIDIA PhysX

Our support was stuck on an ancient version that has not been available for a while.  If we were to continue support it should be done around the new PhysX 5.0 API, not 2.8.4.
rdb 6 years ago
parent
commit
09bddf4315
100 changed files with 1 additions and 9678 deletions
  1. 0 1
      doc/INSTALL
  2. 0 26
      makepanda/installer.nsi
  3. 1 74
      makepanda/makepanda.py
  4. 0 356
      makepanda/makepanda.vcproj
  5. 0 50
      makepanda/makepandacore.py
  6. 0 19
      panda/metalibs/pandaphysx/pandaphysx.cxx
  7. 0 14
      panda/metalibs/pandaphysx/pandaphysx.h
  8. 0 8
      panda/src/pandabase/pandasymbols.h
  9. 0 178
      panda/src/physx/config_physx.cxx
  10. 0 38
      panda/src/physx/config_physx.h
  11. 0 129
      panda/src/physx/p3physx_composite.cxx
  12. 0 60
      panda/src/physx/physxActor.I
  13. 0 1412
      panda/src/physx/physxActor.cxx
  14. 0 222
      panda/src/physx/physxActor.h
  15. 0 48
      panda/src/physx/physxActorDesc.I
  16. 0 138
      panda/src/physx/physxActorDesc.cxx
  17. 0 61
      panda/src/physx/physxActorDesc.h
  18. 0 46
      panda/src/physx/physxBodyDesc.I
  19. 0 330
      panda/src/physx/physxBodyDesc.cxx
  20. 0 77
      panda/src/physx/physxBodyDesc.h
  21. 0 28
      panda/src/physx/physxBounds3.I
  22. 0 229
      panda/src/physx/physxBounds3.cxx
  23. 0 64
      panda/src/physx/physxBounds3.h
  24. 0 28
      panda/src/physx/physxBox.I
  25. 0 115
      panda/src/physx/physxBox.cxx
  26. 0 54
      panda/src/physx/physxBox.h
  27. 0 28
      panda/src/physx/physxBoxController.I
  28. 0 75
      panda/src/physx/physxBoxController.cxx
  29. 0 67
      panda/src/physx/physxBoxController.h
  30. 0 47
      panda/src/physx/physxBoxControllerDesc.I
  31. 0 36
      panda/src/physx/physxBoxControllerDesc.cxx
  32. 0 46
      panda/src/physx/physxBoxControllerDesc.h
  33. 0 28
      panda/src/physx/physxBoxForceFieldShape.I
  34. 0 83
      panda/src/physx/physxBoxForceFieldShape.cxx
  35. 0 70
      panda/src/physx/physxBoxForceFieldShape.h
  36. 0 48
      panda/src/physx/physxBoxForceFieldShapeDesc.I
  37. 0 37
      panda/src/physx/physxBoxForceFieldShapeDesc.cxx
  38. 0 46
      panda/src/physx/physxBoxForceFieldShapeDesc.h
  39. 0 28
      panda/src/physx/physxBoxShape.I
  40. 0 83
      panda/src/physx/physxBoxShape.cxx
  41. 0 79
      panda/src/physx/physxBoxShape.h
  42. 0 48
      panda/src/physx/physxBoxShapeDesc.I
  43. 0 37
      panda/src/physx/physxBoxShapeDesc.cxx
  44. 0 46
      panda/src/physx/physxBoxShapeDesc.h
  45. 0 37
      panda/src/physx/physxCapsule.I
  46. 0 141
      panda/src/physx/physxCapsule.cxx
  47. 0 53
      panda/src/physx/physxCapsule.h
  48. 0 28
      panda/src/physx/physxCapsuleController.I
  49. 0 94
      panda/src/physx/physxCapsuleController.cxx
  50. 0 80
      panda/src/physx/physxCapsuleController.h
  51. 0 47
      panda/src/physx/physxCapsuleControllerDesc.I
  52. 0 50
      panda/src/physx/physxCapsuleControllerDesc.cxx
  53. 0 47
      panda/src/physx/physxCapsuleControllerDesc.h
  54. 0 28
      panda/src/physx/physxCapsuleForceFieldShape.I
  55. 0 96
      panda/src/physx/physxCapsuleForceFieldShape.cxx
  56. 0 74
      panda/src/physx/physxCapsuleForceFieldShape.h
  57. 0 48
      panda/src/physx/physxCapsuleForceFieldShapeDesc.I
  58. 0 50
      panda/src/physx/physxCapsuleForceFieldShapeDesc.cxx
  59. 0 47
      panda/src/physx/physxCapsuleForceFieldShapeDesc.h
  60. 0 28
      panda/src/physx/physxCapsuleShape.I
  61. 0 96
      panda/src/physx/physxCapsuleShape.cxx
  62. 0 85
      panda/src/physx/physxCapsuleShape.h
  63. 0 48
      panda/src/physx/physxCapsuleShapeDesc.I
  64. 0 50
      panda/src/physx/physxCapsuleShapeDesc.cxx
  65. 0 47
      panda/src/physx/physxCapsuleShapeDesc.h
  66. 0 47
      panda/src/physx/physxCcdSkeleton.I
  67. 0 66
      panda/src/physx/physxCcdSkeleton.cxx
  68. 0 72
      panda/src/physx/physxCcdSkeleton.h
  69. 0 52
      panda/src/physx/physxCcdSkeletonDesc.I
  70. 0 177
      panda/src/physx/physxCcdSkeletonDesc.cxx
  71. 0 54
      panda/src/physx/physxCcdSkeletonDesc.h
  72. 0 54
      panda/src/physx/physxCloth.I
  73. 0 568
      panda/src/physx/physxCloth.cxx
  74. 0 132
      panda/src/physx/physxCloth.h
  75. 0 48
      panda/src/physx/physxClothDesc.I
  76. 0 298
      panda/src/physx/physxClothDesc.cxx
  77. 0 77
      panda/src/physx/physxClothDesc.h
  78. 0 47
      panda/src/physx/physxClothMesh.I
  79. 0 66
      panda/src/physx/physxClothMesh.cxx
  80. 0 71
      panda/src/physx/physxClothMesh.h
  81. 0 82
      panda/src/physx/physxClothMeshDesc.I
  82. 0 193
      panda/src/physx/physxClothMeshDesc.cxx
  83. 0 59
      panda/src/physx/physxClothMeshDesc.h
  84. 0 45
      panda/src/physx/physxClothNode.I
  85. 0 215
      panda/src/physx/physxClothNode.cxx
  86. 0 85
      panda/src/physx/physxClothNode.h
  87. 0 46
      panda/src/physx/physxConstraintDominance.I
  88. 0 50
      panda/src/physx/physxConstraintDominance.cxx
  89. 0 53
      panda/src/physx/physxConstraintDominance.h
  90. 0 29
      panda/src/physx/physxContactPair.I
  91. 0 136
      panda/src/physx/physxContactPair.cxx
  92. 0 77
      panda/src/physx/physxContactPair.h
  93. 0 29
      panda/src/physx/physxContactPoint.I
  94. 0 96
      panda/src/physx/physxContactPoint.cxx
  95. 0 78
      panda/src/physx/physxContactPoint.h
  96. 0 29
      panda/src/physx/physxContactReport.I
  97. 0 91
      panda/src/physx/physxContactReport.cxx
  98. 0 43
      panda/src/physx/physxContactReport.h
  99. 0 69
      panda/src/physx/physxController.I
  100. 0 333
      panda/src/physx/physxController.cxx

+ 0 - 1
doc/INSTALL

@@ -146,7 +146,6 @@ it will show you the available command-line options:
   --use-swscale     --no-swscale   (enable/disable use of SWSCALE)
   --use-swscale     --no-swscale   (enable/disable use of SWSCALE)
   --use-swresample   --no-swresample (enable/disable use of SWRESAMPLE)
   --use-swresample   --no-swresample (enable/disable use of SWRESAMPLE)
   --use-ode         --no-ode       (enable/disable use of ODE)
   --use-ode         --no-ode       (enable/disable use of ODE)
-  --use-physx       --no-physx     (enable/disable use of PHYSX)
   --use-bullet      --no-bullet    (enable/disable use of BULLET)
   --use-bullet      --no-bullet    (enable/disable use of BULLET)
   --use-pandaphysics   --no-pandaphysics (enable/disable use of PANDAPHYSICS)
   --use-pandaphysics   --no-pandaphysics (enable/disable use of PANDAPHYSICS)
   --use-speedtree   --no-speedtree (enable/disable use of SPEEDTREE)
   --use-speedtree   --no-speedtree (enable/disable use of SPEEDTREE)

+ 0 - 26
makepanda/installer.nsi

@@ -78,7 +78,6 @@ LangString DESC_SecFMOD ${LANG_ENGLISH} "Support for decoding and playing audio
 LangString DESC_SecFFMpeg ${LANG_ENGLISH} "Support for decoding video and audio via the FFMpeg library.  Without this option, Panda3D will only be able to play .wav and .ogg audio files."
 LangString DESC_SecFFMpeg ${LANG_ENGLISH} "Support for decoding video and audio via the FFMpeg library.  Without this option, Panda3D will only be able to play .wav and .ogg audio files."
 LangString DESC_SecBullet ${LANG_ENGLISH} "Support for the Bullet physics engine."
 LangString DESC_SecBullet ${LANG_ENGLISH} "Support for the Bullet physics engine."
 LangString DESC_SecODE ${LANG_ENGLISH} "Support for the Open Dynamics Engine to implement physics."
 LangString DESC_SecODE ${LANG_ENGLISH} "Support for the Open Dynamics Engine to implement physics."
-LangString DESC_SecPhysX ${LANG_ENGLISH} "Support for NVIDIA PhysX to implement physics."
 LangString DESC_SecTools ${LANG_ENGLISH} "Useful tools and model converters to help with Panda3D development.  Recommended."
 LangString DESC_SecTools ${LANG_ENGLISH} "Useful tools and model converters to help with Panda3D development.  Recommended."
 LangString DESC_SecGroupPython ${LANG_ENGLISH} "Contains modules that provide Python support for Panda3D."
 LangString DESC_SecGroupPython ${LANG_ENGLISH} "Contains modules that provide Python support for Panda3D."
 LangString DESC_SecPyShared ${LANG_ENGLISH} "Contains the common Python code used by the Panda3D Python bindings."
 LangString DESC_SecPyShared ${LANG_ENGLISH} "Contains the common Python code used by the Panda3D Python bindings."
@@ -114,7 +113,6 @@ var MANPAGE
 !insertmacro !defineifexist HAVE_FFMPEG "${BUILT}\bin\libp3ffmpeg.dll"
 !insertmacro !defineifexist HAVE_FFMPEG "${BUILT}\bin\libp3ffmpeg.dll"
 !insertmacro !defineifexist HAVE_BULLET "${BUILT}\bin\libpandabullet.dll"
 !insertmacro !defineifexist HAVE_BULLET "${BUILT}\bin\libpandabullet.dll"
 !insertmacro !defineifexist HAVE_ODE "${BUILT}\bin\libpandaode.dll"
 !insertmacro !defineifexist HAVE_ODE "${BUILT}\bin\libpandaode.dll"
-!insertmacro !defineifexist HAVE_PHYSX "${BUILT}\bin\libpandaphysx.dll"
 !insertmacro !defineifexist HAVE_SAMPLES "${SOURCE}\samples"
 !insertmacro !defineifexist HAVE_SAMPLES "${SOURCE}\samples"
 !insertmacro !defineifexist HAVE_MAX_PLUGINS "${BUILT}\plugins\*.dlo"
 !insertmacro !defineifexist HAVE_MAX_PLUGINS "${BUILT}\plugins\*.dlo"
 !insertmacro !defineifexist HAVE_MAYA_PLUGINS "${BUILT}\plugins\*.mll"
 !insertmacro !defineifexist HAVE_MAYA_PLUGINS "${BUILT}\plugins\*.mll"
@@ -172,14 +170,6 @@ var MANPAGE
             SkipODEPyd:
             SkipODEPyd:
         !endif
         !endif
 
 
-        !ifdef HAVE_PHYSX
-            SectionGetFlags ${SecPhysX} $R0
-            IntOp $R0 $R0 & ${SF_SELECTED}
-            StrCmp $R0 ${SF_SELECTED} 0 SkipPhysXPyd
-            File /nonfatal /r "${BUILT}\panda3d\physx${EXT_SUFFIX}"
-            SkipPhysXPyd:
-        !endif
-
         SetOutPath $INSTDIR\pandac\input
         SetOutPath $INSTDIR\pandac\input
         File /r "${BUILT}\pandac\input\*"
         File /r "${BUILT}\pandac\input\*"
         SetOutPath $INSTDIR\Pmw
         SetOutPath $INSTDIR\Pmw
@@ -319,19 +309,6 @@ SectionGroup "Panda3D Libraries"
         File "${BUILT}\bin\libpandaode.dll"
         File "${BUILT}\bin\libpandaode.dll"
     SectionEnd
     SectionEnd
     !endif
     !endif
-
-    !ifdef HAVE_PHYSX
-    Section "NVIDIA PhysX" SecPhysX
-        ; Only enable in "Full"
-        SectionIn 2
-
-        SetOutPath "$INSTDIR\bin"
-        File "${BUILT}\bin\libpandaphysx.dll"
-        File /nonfatal /r "${BUILT}\bin\PhysX*.dll"
-        File /nonfatal /r "${BUILT}\bin\NxCharacter*.dll"
-        File /nonfatal /r "${BUILT}\bin\cudart*.dll"
-    SectionEnd
-    !endif
 SectionGroupEnd
 SectionGroupEnd
 
 
 Section "Tools and utilities" SecTools
 Section "Tools and utilities" SecTools
@@ -892,9 +869,6 @@ SectionEnd
   !ifdef HAVE_ODE
   !ifdef HAVE_ODE
     !insertmacro MUI_DESCRIPTION_TEXT ${SecODE} $(DESC_SecODE)
     !insertmacro MUI_DESCRIPTION_TEXT ${SecODE} $(DESC_SecODE)
   !endif
   !endif
-  !ifdef HAVE_PHYSX
-    !insertmacro MUI_DESCRIPTION_TEXT ${SecPhysX} $(DESC_SecPhysX)
-  !endif
   !insertmacro MUI_DESCRIPTION_TEXT ${SecTools} $(DESC_SecTools)
   !insertmacro MUI_DESCRIPTION_TEXT ${SecTools} $(DESC_SecTools)
   !insertmacro MUI_DESCRIPTION_TEXT ${SecGroupPython} $(DESC_SecGroupPython)
   !insertmacro MUI_DESCRIPTION_TEXT ${SecGroupPython} $(DESC_SecGroupPython)
   !insertmacro MUI_DESCRIPTION_TEXT ${SecPyShared} $(DESC_SecPyShared)
   !insertmacro MUI_DESCRIPTION_TEXT ${SecPyShared} $(DESC_SecPyShared)

+ 1 - 74
makepanda/makepanda.py

@@ -75,7 +75,7 @@ PkgListSet(["PYTHON", "DIRECT",                        # Python support
   "EIGEN",                                             # Linear algebra acceleration
   "EIGEN",                                             # Linear algebra acceleration
   "OPENAL", "FMODEX",                                  # Audio playback
   "OPENAL", "FMODEX",                                  # Audio playback
   "VORBIS", "OPUS", "FFMPEG", "SWSCALE", "SWRESAMPLE", # Audio decoding
   "VORBIS", "OPUS", "FFMPEG", "SWSCALE", "SWRESAMPLE", # Audio decoding
-  "ODE", "PHYSX", "BULLET", "PANDAPHYSICS",            # Physics
+  "ODE", "BULLET", "PANDAPHYSICS",                     # Physics
   "SPEEDTREE",                                         # SpeedTree
   "SPEEDTREE",                                         # SpeedTree
   "ZLIB", "PNG", "JPEG", "TIFF", "OPENEXR", "SQUISH",  # 2D Formats support
   "ZLIB", "PNG", "JPEG", "TIFF", "OPENEXR", "SQUISH",  # 2D Formats support
   ] + MAYAVERSIONS + MAXVERSIONS + [ "FCOLLADA", "ASSIMP", "EGG", # 3D Formats support
   ] + MAYAVERSIONS + MAXVERSIONS + [ "FCOLLADA", "ASSIMP", "EGG", # 3D Formats support
@@ -464,14 +464,12 @@ SdkLocateMax()
 SdkLocateMacOSX(OSXTARGET)
 SdkLocateMacOSX(OSXTARGET)
 SdkLocatePython(False)
 SdkLocatePython(False)
 SdkLocateWindows(WINDOWS_SDK)
 SdkLocateWindows(WINDOWS_SDK)
-SdkLocatePhysX()
 SdkLocateSpeedTree()
 SdkLocateSpeedTree()
 SdkLocateAndroid()
 SdkLocateAndroid()
 
 
 SdkAutoDisableDirectX()
 SdkAutoDisableDirectX()
 SdkAutoDisableMaya()
 SdkAutoDisableMaya()
 SdkAutoDisableMax()
 SdkAutoDisableMax()
-SdkAutoDisablePhysX()
 SdkAutoDisableSpeedTree()
 SdkAutoDisableSpeedTree()
 
 
 if not PkgSkip("PYTHON") and SDK["PYTHONVERSION"] == "python2.7":
 if not PkgSkip("PYTHON") and SDK["PYTHONVERSION"] == "python2.7":
@@ -707,20 +705,6 @@ if (COMPILER == "MSVC"):
             LibName(pkg, SDK[pkg] +  '/lib/mesh.lib')
             LibName(pkg, SDK[pkg] +  '/lib/mesh.lib')
             LibName(pkg, SDK[pkg] +  '/lib/maxutil.lib')
             LibName(pkg, SDK[pkg] +  '/lib/maxutil.lib')
             LibName(pkg, SDK[pkg] +  '/lib/paramblk2.lib')
             LibName(pkg, SDK[pkg] +  '/lib/paramblk2.lib')
-    if (PkgSkip("PHYSX")==0):
-        if GetTargetArch() == 'x64':
-            LibName("PHYSX",  SDK["PHYSXLIBS"] + "/PhysXLoader64.lib")
-            LibName("PHYSX",  SDK["PHYSXLIBS"] + "/NxCharacter64.lib")
-        else:
-            LibName("PHYSX",  SDK["PHYSXLIBS"] + "/PhysXLoader.lib")
-            LibName("PHYSX",  SDK["PHYSXLIBS"] + "/NxCharacter.lib")
-
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/Physics/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/PhysXLoader/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/NxCharacter/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/NxExtensions/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/Foundation/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/Cooking/include")
 
 
     if (PkgSkip("SPEEDTREE")==0):
     if (PkgSkip("SPEEDTREE")==0):
         if GetTargetArch() == 'x64':
         if GetTargetArch() == 'x64':
@@ -959,21 +943,6 @@ if (COMPILER=="GCC"):
             else:
             else:
                 LibName(pkg, "-dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib")
                 LibName(pkg, "-dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib")
 
 
-    if (PkgSkip("PHYSX")==0):
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/Physics/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/PhysXLoader/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/NxCharacter/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/NxExtensions/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/Foundation/include")
-        IncDirectory("PHYSX", SDK["PHYSX"] + "/Cooking/include")
-        LibDirectory("PHYSX", SDK["PHYSXLIBS"])
-        if (GetHost() == "darwin"):
-            LibName("PHYSX", SDK["PHYSXLIBS"] + "/osxstatic/PhysXCooking.a")
-            LibName("PHYSX", SDK["PHYSXLIBS"] + "/osxstatic/PhysXCore.a")
-        else:
-            LibName("PHYSX", "-lPhysXLoader")
-            LibName("PHYSX", "-lNxCharacter")
-
 DefSymbol("WITHINPANDA", "WITHIN_PANDA", "1")
 DefSymbol("WITHINPANDA", "WITHIN_PANDA", "1")
 if GetLinkAllStatic():
 if GetLinkAllStatic():
     DefSymbol("ALWAYS", "LINK_ALL_STATIC")
     DefSymbol("ALWAYS", "LINK_ALL_STATIC")
@@ -3045,10 +3014,6 @@ CopyAllHeaders('panda/metalibs/pandagles2')
 CopyAllHeaders('panda/metalibs/pandaphysics')
 CopyAllHeaders('panda/metalibs/pandaphysics')
 CopyAllHeaders('panda/src/testbed')
 CopyAllHeaders('panda/src/testbed')
 
 
-if (PkgSkip("PHYSX")==0):
-    CopyAllHeaders('panda/src/physx')
-    CopyAllHeaders('panda/metalibs/pandaphysx')
-
 if (PkgSkip("BULLET")==0):
 if (PkgSkip("BULLET")==0):
     CopyAllHeaders('panda/src/bullet')
     CopyAllHeaders('panda/src/bullet')
     CopyAllHeaders('panda/metalibs/pandabullet')
     CopyAllHeaders('panda/metalibs/pandabullet')
@@ -4562,44 +4527,6 @@ if (PkgSkip("BULLET")==0):
   PyTargetAdd('bullet.pyd', input=COMMON_PANDA_LIBS)
   PyTargetAdd('bullet.pyd', input=COMMON_PANDA_LIBS)
   PyTargetAdd('bullet.pyd', opts=['WINUSER', 'BULLET'])
   PyTargetAdd('bullet.pyd', opts=['WINUSER', 'BULLET'])
 
 
-#
-# DIRECTORY: panda/src/physx/
-#
-
-if (PkgSkip("PHYSX")==0):
-  OPTS=['DIR:panda/src/physx', 'BUILDING:PANDAPHYSX', 'PHYSX']
-  TargetAdd('p3physx_composite.obj', opts=OPTS, input='p3physx_composite.cxx')
-
-  OPTS=['DIR:panda/src/physx', 'PHYSX']
-  IGATEFILES=GetDirectoryContents('panda/src/physx', ["*.h", "*_composite*.cxx"])
-  TargetAdd('libpandaphysx.in', opts=OPTS, input=IGATEFILES)
-  TargetAdd('libpandaphysx.in', opts=['IMOD:panda3d.physx', 'ILIB:libpandaphysx', 'SRCDIR:panda/src/physx'])
-
-#
-# DIRECTORY: panda/metalibs/pandaphysx/
-#
-
-if (PkgSkip("PHYSX")==0):
-  OPTS=['DIR:panda/metalibs/pandaphysx', 'BUILDING:PANDAPHYSX', 'PHYSX', 'PYTHON']
-  TargetAdd('pandaphysx_pandaphysx.obj', opts=OPTS, input='pandaphysx.cxx')
-
-  TargetAdd('libpandaphysx.dll', input='pandaphysx_pandaphysx.obj')
-  TargetAdd('libpandaphysx.dll', input='p3physx_composite.obj')
-  TargetAdd('libpandaphysx.dll', input=COMMON_PANDA_LIBS)
-  TargetAdd('libpandaphysx.dll', opts=['WINUSER', 'PHYSX', 'PYTHON'])
-
-  OPTS=['DIR:panda/metalibs/pandaphysx', 'PHYSX']
-  PyTargetAdd('physx_module.obj', input='libpandaphysx.in')
-  PyTargetAdd('physx_module.obj', opts=OPTS)
-  PyTargetAdd('physx_module.obj', opts=['IMOD:panda3d.physx', 'ILIB:physx', 'IMPORT:panda3d.core'])
-
-  PyTargetAdd('physx.pyd', input='physx_module.obj')
-  PyTargetAdd('physx.pyd', input='libpandaphysx_igate.obj')
-  PyTargetAdd('physx.pyd', input='libpandaphysx.dll')
-  PyTargetAdd('physx.pyd', input='libp3interrogatedb.dll')
-  PyTargetAdd('physx.pyd', input=COMMON_PANDA_LIBS)
-  PyTargetAdd('physx.pyd', opts=['WINUSER', 'PHYSX'])
-
 #
 #
 # DIRECTORY: panda/src/physics/
 # DIRECTORY: panda/src/physics/
 #
 #

+ 0 - 356
makepanda/makepanda.vcproj

@@ -3125,362 +3125,6 @@
 				<File RelativePath="..\panda\src\vrpn\vrpnClient.cxx"></File>
 				<File RelativePath="..\panda\src\vrpn\vrpnClient.cxx"></File>
 				<File RelativePath="..\panda\src\vrpn\vrpnClient.I"></File>
 				<File RelativePath="..\panda\src\vrpn\vrpnClient.I"></File>
 			</Filter>
 			</Filter>
-			<Filter Name="physx">
-				<File RelativePath="..\panda\src\physx\physxMask.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxDistanceJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightFieldShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPlaneShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxConstraintDominance.h"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexMeshDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxFileStream.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxContactPoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxSphericalJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxJointLimitSoftDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxSphericalJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPointOnLineJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightFieldShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBox.I"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxForceFieldShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxForceFieldShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleForceFieldShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPlaneShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxD6JointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxWheelDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightFieldShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxForceField.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxVehicleDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxObject.h"></File>
-				<File RelativePath="..\panda\src\physx\physxClothNode.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPrismaticJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxControllerReport.h"></File>
-				<File RelativePath="..\panda\src\physx\physxClothMesh.I"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxController.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxVehicleDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMesh.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightField.I"></File>
-				<File RelativePath="..\panda\src\physx\physxOverlapReport.I"></File>
-				<File RelativePath="..\panda\src\physx\physxContactReport.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxJointDriveDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPointInPlaneJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxKitchen.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxUtilLib.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxForceFieldShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPrismaticJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxMeshPool.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxSphere.h"></File>
-				<File RelativePath="..\panda\src\physx\physxObject.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPointOnLineJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleForceFieldShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxRevoluteJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxRaycastReport.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxFixedJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSphericalJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxD6JointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxConstraintDominance.I"></File>
-				<File RelativePath="..\panda\src\physx\physxJointDriveDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightField.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxDistanceJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxClothDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxController.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPointOnLineJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxJointLimitSoftDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMeshShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSceneDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxRaycastHit.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShapeGroup.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSegment.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxForceFieldShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxDistanceJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxRay.I"></File>
-				<File RelativePath="..\panda\src\physx\physxActor.h"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMeshShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxRevoluteJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxDistanceJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPointInPlaneJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleForceFieldShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxOverlapReport.h"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShapeGroup.h"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSceneDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxActor.I"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCylindricalJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxWheelShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPlane.I"></File>
-				<File RelativePath="..\panda\src\physx\physxContactPair.I"></File>
-				<File RelativePath="..\panda\src\physx\physxUtilLib.h"></File>
-				<File RelativePath="..\panda\src\physx\physxBodyDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxControllerReport.I"></File>
-				<File RelativePath="..\panda\src\physx\physxMeshPool.h"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleForceFieldShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCylindricalJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShapeGroupDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSpringDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxContactReport.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPulleyJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightFieldDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxController.I"></File>
-				<File RelativePath="..\panda\src\physx\physxKitchen.h"></File>
-				<File RelativePath="..\panda\src\physx\physxMemoryReadBuffer.h"></File>
-				<File RelativePath="..\panda\src\physx\physxManager.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxSceneStats2.I"></File>
-				<File RelativePath="..\panda\src\physx\physxFileStream.h"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexForceFieldShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxControllerDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxLinearInterpolationValues.I"></File>
-				<File RelativePath="..\panda\src\physx\physxRaycastReport.h"></File>
-				<File RelativePath="..\panda\src\physx\physxD6Joint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxClothMesh.h"></File>
-				<File RelativePath="..\panda\src\physx\physxObjectCollection.I"></File>
-				<File RelativePath="..\panda\src\physx\physxControllerDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPlaneShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxMaterialDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxControllerReport.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxClothNode.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexMesh.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPulleyJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxMaterial.h"></File>
-				<File RelativePath="..\panda\src\physx\config_physx.h"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightFieldShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxVehicle.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxRaycastHit.h"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMesh.h"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxClothMeshDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPointInPlaneJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMeshDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereForceFieldShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxJointLimitDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxScene.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphericalJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSegment.I"></File>
-				<File RelativePath="..\panda\src\physx\physxRaycastReport.I"></File>
-				<File RelativePath="..\panda\src\physx\physxRay.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphericalJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxForceFieldShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPrismaticJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxControllerDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxController.h"></File>
-				<File RelativePath="..\panda\src\physx\physxBox.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPulleyJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxActor.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxClothMeshDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPointOnLineJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxClothMeshDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxObject.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxSpringDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxControllerDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxContactReport.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPrismaticJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShapeGroupDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxTriggerReport.h"></File>
-				<File RelativePath="..\panda\src\physx\physxForceField.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxBounds3.h"></File>
-				<File RelativePath="..\panda\src\physx\physxWheel.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexMesh.h"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsule.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxGroupsMask.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCylindricalJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxCloth.I"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexMeshDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxFixedJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleControllerDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxControllerDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBodyDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxGroupsMask.I"></File>
-				<File RelativePath="..\panda\src\physx\physxRaycastHit.I"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightFieldShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereForceFieldShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxDebugGeomNode.h"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleForceFieldShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxControllerDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexMeshDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCloth.h"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleController.h"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleControllerDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightField.h"></File>
-				<File RelativePath="..\panda\src\physx\physxContactPoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxObjectCollection.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereForceFieldShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxWheelDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCylindricalJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleForceFieldShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexMesh.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPointInPlaneJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxContactPair.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxClothDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxActorDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxMotorDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxDebugGeomNode.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxDistanceJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxBounds3.I"></File>
-				<File RelativePath="..\panda\src\physx\physxActorDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSphere.I"></File>
-				<File RelativePath="..\panda\src\physx\physxShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxMeshPool.I"></File>
-				<File RelativePath="..\panda\src\physx\physxMemoryReadBuffer.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPlaneShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxFixedJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxSphericalJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxRevoluteJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShapeGroupDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxVehicle.h"></File>
-				<File RelativePath="..\panda\src\physx\physxWheel.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightFieldShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxGroupsMask.h"></File>
-				<File RelativePath="..\panda\src\physx\physxJointLimitSoftDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMeshShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxVehicle.I"></File>
-				<File RelativePath="..\panda\src\physx\physxJointLimitDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMeshShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physx_composite.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsule.I"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMeshShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPlaneShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxLinearInterpolationValues.h"></File>
-				<File RelativePath="..\panda\src\physx\physxActorDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMeshDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPulleyJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexForceFieldShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxMaterial.I"></File>
-				<File RelativePath="..\panda\src\physx\physxKitchen.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxFixedJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxSpringDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBox.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSceneStats2.h"></File>
-				<File RelativePath="..\panda\src\physx\physxShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereForceFieldShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxRevoluteJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxVehicleDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\config_physx.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxTriggerReport.I"></File>
-				<File RelativePath="..\panda\src\physx\physxD6Joint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxLinearInterpolationValues.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxRay.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCylindricalJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxJointLimitDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxTriggerReport.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightFieldDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexForceFieldShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxDebugGeomNode.I"></File>
-				<File RelativePath="..\panda\src\physx\physxHeightFieldDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxMotorDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxWheelShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxMemoryWriteBuffer.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxScene.I"></File>
-				<File RelativePath="..\panda\src\physx\physxClothNode.h"></File>
-				<File RelativePath="..\panda\src\physx\physxJointDriveDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSceneStats2.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexForceFieldShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxSphere.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxMask.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleControllerDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxManager.h"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMeshDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPointOnLineJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxOverlapReport.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxClothMesh.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxEnums.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxClothDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPlane.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPrismaticJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPointOnLineJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxFixedJointDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxScene.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCloth.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxForceFieldShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleController.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxForceField.h"></File>
-				<File RelativePath="..\panda\src\physx\physxWheelShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxController.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMesh.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxContactPoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxObjectCollection.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxWheelShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPlane.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPulleyJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCylindricalJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxBodyDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxTriangleMeshShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxMask.h"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxShape.I"></File>
-				<File RelativePath="..\panda\src\physx\physxPrismaticJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxManager.I"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleController.I"></File>
-				<File RelativePath="..\panda\src\physx\physxWheelShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxMotorDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSceneDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexForceFieldShape.h"></File>
-				<File RelativePath="..\panda\src\physx\physxDistanceJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxBoxShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxConstraintDominance.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsuleShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxController.I"></File>
-				<File RelativePath="..\panda\src\physx\physxFixedJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPointInPlaneJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxWheelShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShapeGroup.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxMaterialDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxContactPair.h"></File>
-				<File RelativePath="..\panda\src\physx\physxForceFieldShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxCapsule.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPulleyJointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexForceFieldShapeDesc.h"></File>
-				<File RelativePath="..\panda\src\physx\physxMemoryWriteBuffer.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereForceFieldShapeDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxWheel.h"></File>
-				<File RelativePath="..\panda\src\physx\physxPointInPlaneJoint.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxRevoluteJoint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxUtilLib.I"></File>
-				<File RelativePath="..\panda\src\physx\physxSphereForceFieldShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxMaterial.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxWheelDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxD6Joint.h"></File>
-				<File RelativePath="..\panda\src\physx\physxSegment.h"></File>
-				<File RelativePath="..\panda\src\physx\physxRevoluteJoint.I"></File>
-				<File RelativePath="..\panda\src\physx\physxJointDesc.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxD6JointDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxEnums.h"></File>
-				<File RelativePath="..\panda\src\physx\physx_includes.h"></File>
-				<File RelativePath="..\panda\src\physx\physxBounds3.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxPlaneShape.cxx"></File>
-				<File RelativePath="..\panda\src\physx\physxConvexShapeDesc.I"></File>
-				<File RelativePath="..\panda\src\physx\physxMaterialDesc.h"></File>
-			</Filter>
 			<Filter Name="net">
 			<Filter Name="net">
 				<File RelativePath="..\panda\src\net\queuedConnectionReader.cxx"></File>
 				<File RelativePath="..\panda\src\net\queuedConnectionReader.cxx"></File>
 				<File RelativePath="..\panda\src\net\datagramGeneratorNet.I"></File>
 				<File RelativePath="..\panda\src\net\datagramGeneratorNet.I"></File>

+ 0 - 50
makepanda/makepandacore.py

@@ -2407,50 +2407,6 @@ def SdkLocateMacOSX(osxtarget = None):
     else:
     else:
         SDK["MACOSX"] = ""
         SDK["MACOSX"] = ""
 
 
-# Latest first
-PHYSXVERSIONINFO = [
-    ("PHYSX284", "v2.8.4"),
-    ("PHYSX283", "v2.8.3"),
-    ("PHYSX281", "v2.8.1"),
-]
-
-def SdkLocatePhysX():
-    # First check for a physx directory in sdks.
-    dir = GetSdkDir("physx")
-    if (dir and os.path.isdir(dir)):
-        SDK["PHYSX"] = dir
-        SDK["PHYSXLIBS"] = dir + "/lib"
-        return
-
-    if CrossCompiling():
-        return
-
-    # Try to find a PhysX installation on the system.
-    for (ver, key) in PHYSXVERSIONINFO:
-        if (GetHost() == "windows"):
-            folders = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\Folders"
-            for folder in ListRegistryValues(folders):
-                if folder.endswith("NVIDIA PhysX SDK\\%s\\SDKs\\" % key) or \
-                   folder.endswith("NVIDIA PhysX SDK\\%s_win\\SDKs\\" % key):
-
-                    SDK["PHYSX"] = folder
-                    if GetTargetArch() == 'x64':
-                        SDK["PHYSXLIBS"] = folder + "/lib/win64"
-                        AddToPathEnv("PATH", folder + "/../Bin/win64/")
-                    else:
-                        SDK["PHYSXLIBS"] = folder + "/lib/win32"
-                        AddToPathEnv("PATH", folder + "/../Bin/win32/")
-
-                    return
-
-        elif (GetHost() == "linux"):
-            incpath = "/usr/include/PhysX/%s/SDKs" % key
-            libpath = "/usr/lib/PhysX/%s" % key
-            if (os.path.isdir(incpath) and os.path.isdir(libpath)):
-                SDK["PHYSX"] = incpath
-                SDK["PHYSXLIBS"] = libpath
-                return
-
 def SdkLocateSpeedTree():
 def SdkLocateSpeedTree():
     # Look for all of the SpeedTree SDK directories within the
     # Look for all of the SpeedTree SDK directories within the
     # sdks/win32/speedtree dir, and pick the highest-numbered one.
     # sdks/win32/speedtree dir, and pick the highest-numbered one.
@@ -2661,12 +2617,6 @@ def SdkAutoDisableMax():
                 WARNINGS.append("I have automatically added this command-line option: --no-"+version.lower())
                 WARNINGS.append("I have automatically added this command-line option: --no-"+version.lower())
             PkgDisable(version)
             PkgDisable(version)
 
 
-def SdkAutoDisablePhysX():
-    if ("PHYSX" not in SDK) and (PkgSkip("PHYSX")==0):
-        PkgDisable("PHYSX")
-        WARNINGS.append("I cannot locate SDK for PhysX")
-        WARNINGS.append("I have automatically added this command-line option: --no-physx")
-
 def SdkAutoDisableSpeedTree():
 def SdkAutoDisableSpeedTree():
     if ("SPEEDTREE" not in SDK) and (PkgSkip("SPEEDTREE")==0):
     if ("SPEEDTREE" not in SDK) and (PkgSkip("SPEEDTREE")==0):
         PkgDisable("SPEEDTREE")
         PkgDisable("SPEEDTREE")

+ 0 - 19
panda/metalibs/pandaphysx/pandaphysx.cxx

@@ -1,19 +0,0 @@
-/**
- * @file pandaphysx.cxx
- * @author pratt
- * @date 2006-04-20
- */
-
-#include "pandaphysx.h"
-#include "config_physx.h"
-
-/**
- * Initializes the library.  This must be called at least once before any of
- * the functions or classes in this library can be used.  Normally it will be
- * called by the static initializers and need not be called explicitly, but
- * special cases exist.
- */
-void
-init_libpandaphysx() {
-  init_libphysx();
-}

+ 0 - 14
panda/metalibs/pandaphysx/pandaphysx.h

@@ -1,14 +0,0 @@
-/**
- * @file pandaphysx.h
- * @author pratt
- * @date 2006-04-20
- */
-
-#ifndef PANDAPHYSX_H
-#define PANDAPHYSX_H
-
-#include "pandabase.h"
-
-EXPCL_PANDAPHYSX void init_libpandaphysx();
-
-#endif

+ 0 - 8
panda/src/pandabase/pandasymbols.h

@@ -531,14 +531,6 @@
   #define EXPTP_PANDAPHYSICS IMPORT_TEMPL
   #define EXPTP_PANDAPHYSICS IMPORT_TEMPL
 #endif
 #endif
 
 
-#ifdef BUILDING_PANDAPHYSX
-  #define EXPCL_PANDAPHYSX EXPORT_CLASS
-  #define EXPTP_PANDAPHYSX EXPORT_TEMPL
-#else
-  #define EXPCL_PANDAPHYSX IMPORT_CLASS
-  #define EXPTP_PANDAPHYSX IMPORT_TEMPL
-#endif
-
 #ifdef BUILDING_PANDASKEL
 #ifdef BUILDING_PANDASKEL
   #define EXPCL_PANDASKEL EXPORT_CLASS
   #define EXPCL_PANDASKEL EXPORT_CLASS
   #define EXPTP_PANDASKEL EXPORT_TEMPL
   #define EXPTP_PANDASKEL EXPORT_TEMPL

+ 0 - 178
panda/src/physx/config_physx.cxx

@@ -1,178 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file config_physx.cxx
- * @author enn0x
- * @date 2009-09-01
- */
-
-#include "config_physx.h"
-#include "pandaSystem.h"
-
-#include "physxActor.h"
-#include "physxBoxController.h"
-#include "physxBoxForceFieldShape.h"
-#include "physxBoxShape.h"
-#include "physxCapsuleController.h"
-#include "physxCapsuleForceFieldShape.h"
-#include "physxCapsuleShape.h"
-#include "physxCcdSkeleton.h"
-#include "physxCloth.h"
-#include "physxClothMesh.h"
-#include "physxClothNode.h"
-#include "physxContactPair.h"
-#include "physxContactPoint.h"
-#include "physxController.h"
-#include "physxControllerReport.h"
-#include "physxControllerShapeHit.h"
-#include "physxControllersHit.h"
-#include "physxConvexMesh.h"
-#include "physxConvexForceFieldShape.h"
-#include "physxConvexShape.h"
-#include "physxCylindricalJoint.h"
-#include "physxD6Joint.h"
-#include "physxDebugGeomNode.h"
-#include "physxDistanceJoint.h"
-#include "physxFixedJoint.h"
-#include "physxForceField.h"
-#include "physxForceFieldShape.h"
-#include "physxForceFieldShapeGroup.h"
-#include "physxHeightField.h"
-#include "physxHeightFieldShape.h"
-#include "physxJoint.h"
-#include "physxMaterial.h"
-#include "physxObject.h"
-#include "physxPlaneShape.h"
-#include "physxPointInPlaneJoint.h"
-#include "physxPointOnLineJoint.h"
-#include "physxPrismaticJoint.h"
-#include "physxPulleyJoint.h"
-#include "physxRevoluteJoint.h"
-#include "physxScene.h"
-#include "physxShape.h"
-#include "physxSoftBody.h"
-#include "physxSoftBodyMesh.h"
-#include "physxSoftBodyNode.h"
-#include "physxSphereForceFieldShape.h"
-#include "physxSphereShape.h"
-#include "physxSphericalJoint.h"
-#include "physxTriangleMesh.h"
-#include "physxTriangleMeshShape.h"
-#include "physxVehicle.h"
-#include "physxWheel.h"
-#include "physxWheelShape.h"
-
-#if !defined(CPPPARSER) && !defined(LINK_ALL_STATIC) && !defined(BUILDING_PANDAPHYSX)
-  #error Buildsystem error: BUILDING_PANDAPHYSX not defined
-#endif
-
-ConfigureDef(config_physx);
-NotifyCategoryDef(physx, "");
-
-ConfigureFn(config_physx) {
-  init_libphysx();
-}
-
-ConfigVariableBool physx_want_vrd
-("physx-want-vrd", false,
-PRC_DESC("Specified wether the manager should try to connect to the NVIDIA "
-         "PhysX visual debugger or not. Connection is established when "
-         "the first instance of PhysxManager is created."));
-
-ConfigVariableString physx_vrd_host
-("physx-vrd-host", "localhost",
-PRC_DESC("Specified the host where the NVIDIA PhysX visual debugger is running "
-         "on. Only used if the config-varibale 'physx-want-visual-debugger' "
-         "is set to 'true'."));
-
-ConfigVariableInt physx_vrd_port
-("physx-visual-debugger-port", 5425,
-PRC_DESC("Specified the port where the NVIDIA PhysX visual debugger is running "
-         "on. Only used if the config-varibale 'physx-want-visual-debugger' "
-         "is set to 'true'."));
-
-ConfigVariableEnum<PhysxEnums::PhysxUpAxis> physx_up_axis
-("physx-up-axis", PhysxEnums::Z_up,
-PRC_DESC("Set the up direction for controllers and heightfields."));
-
-ConfigVariableInt physx_internal_threads
-("physx-internal-threads", 0,
-PRC_DESC("Specified the number of internal threads to be created by the "
-         "PhysX engine. The threads will be moved to different cores, if "
-         "possible. Default value is '0'. PhysX then runs in an external "
-         "thread, but no additional internal threads will be created."));
-
-/**
- * Initializes the library.  This must be called at least once before any of
- * the functions or classes in this library can be used.  Normally it will be
- * called by the static initializers and need not be called explicitly, but
- * special cases exist.
- */
-void
-init_libphysx() {
-  static bool initialized = false;
-  if (initialized) {
-    return;
-  }
-  initialized = true;
-
-  PhysxActor::init_type();
-  PhysxBoxController::init_type();
-  PhysxBoxForceFieldShape::init_type();
-  PhysxBoxShape::init_type();
-  PhysxCapsuleController::init_type();
-  PhysxCapsuleForceFieldShape::init_type();
-  PhysxCapsuleShape::init_type();
-  PhysxCcdSkeleton::init_type();
-  PhysxCloth::init_type();
-  PhysxClothMesh::init_type();
-  PhysxClothNode::init_type();
-  PhysxContactPair::init_type();
-  PhysxContactPoint::init_type();
-  PhysxController::init_type();
-  PhysxControllerShapeHit::init_type();
-  PhysxControllersHit::init_type();
-  PhysxConvexMesh::init_type();
-  PhysxConvexForceFieldShape::init_type();
-  PhysxConvexShape::init_type();
-  PhysxCylindricalJoint::init_type();
-  PhysxD6Joint::init_type();
-  PhysxDebugGeomNode::init_type();
-  PhysxDistanceJoint::init_type();
-  PhysxFixedJoint::init_type();
-  PhysxForceField::init_type();
-  PhysxForceFieldShape::init_type();
-  PhysxForceFieldShapeGroup::init_type();
-  PhysxHeightField::init_type();
-  PhysxHeightFieldShape::init_type();
-  PhysxJoint::init_type();
-  PhysxMaterial::init_type();
-  PhysxObject::init_type();
-  PhysxPlaneShape::init_type();
-  PhysxPointInPlaneJoint::init_type();
-  PhysxPointOnLineJoint::init_type();
-  PhysxPrismaticJoint::init_type();
-  PhysxPulleyJoint::init_type();
-  PhysxRevoluteJoint::init_type();
-  PhysxScene::init_type();
-  PhysxShape::init_type();
-  PhysxSoftBody::init_type();
-  PhysxSoftBodyMesh::init_type();
-  PhysxSoftBodyNode::init_type();
-  PhysxSphereForceFieldShape::init_type();
-  PhysxSphereShape::init_type();
-  PhysxSphericalJoint::init_type();
-  PhysxTriangleMesh::init_type();
-  PhysxTriangleMeshShape::init_type();
-  PhysxVehicle::init_type();
-  PhysxWheel::init_type();
-  PhysxWheelShape::init_type();
-
-  PandaSystem *ps = PandaSystem::get_global_ptr();
-  ps->add_system("PhysX");
-}

+ 0 - 38
panda/src/physx/config_physx.h

@@ -1,38 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file config_physx.h
- * @author enn0x
- * @date 2009-09-01
- */
-
-#ifndef CONFIG_PHYSX_H
-#define CONFIG_PHYSX_H
-
-#include "pandabase.h"
-#include "notifyCategoryProxy.h"
-#include "configVariableBool.h"
-#include "configVariableEnum.h"
-#include "configVariableInt.h"
-#include "configVariableString.h"
-#include "dconfig.h"
-
-#include "physxEnums.h"
-
-ConfigureDecl(config_physx, EXPCL_PANDAPHYSX, EXPTP_PANDAPHYSX);
-NotifyCategoryDecl(physx, EXPCL_PANDAPHYSX, EXPTP_PANDAPHYSX);
-
-extern EXPCL_PANDAPHYSX ConfigVariableBool physx_want_vrd;
-extern EXPCL_PANDAPHYSX ConfigVariableString physx_vrd_host;
-extern EXPCL_PANDAPHYSX ConfigVariableInt physx_vrd_port;
-extern EXPCL_PANDAPHYSX ConfigVariableInt physx_internal_threads;
-extern EXPCL_PANDAPHYSX ConfigVariableEnum<PhysxEnums::PhysxUpAxis> physx_up_axis;
-
-extern EXPCL_PANDAPHYSX void init_libphysx();
-
-#endif // CONFIG_PHYSX_H

+ 0 - 129
panda/src/physx/p3physx_composite.cxx

@@ -1,129 +0,0 @@
-#include "config_physx.cxx"
-#include "physxActor.cxx"
-#include "physxActorDesc.cxx"
-#include "physxBodyDesc.cxx"
-#include "physxBounds3.cxx"
-#include "physxBox.cxx"
-#include "physxBoxController.cxx"
-#include "physxBoxControllerDesc.cxx"
-#include "physxBoxForceFieldShape.cxx"
-#include "physxBoxForceFieldShapeDesc.cxx"
-#include "physxBoxShape.cxx"
-#include "physxBoxShapeDesc.cxx"
-#include "physxCapsule.cxx"
-#include "physxCapsuleController.cxx"
-#include "physxCapsuleControllerDesc.cxx"
-#include "physxCapsuleForceFieldShape.cxx"
-#include "physxCapsuleForceFieldShapeDesc.cxx"
-#include "physxCapsuleShape.cxx"
-#include "physxCapsuleShapeDesc.cxx"
-#include "physxCcdSkeleton.cxx"
-#include "physxCcdSkeletonDesc.cxx"
-#include "physxCloth.cxx"
-#include "physxClothDesc.cxx"
-#include "physxClothMesh.cxx"
-#include "physxClothMeshDesc.cxx"
-#include "physxClothNode.cxx"
-#include "physxContactPair.cxx"
-#include "physxContactPoint.cxx"
-#include "physxContactReport.cxx"
-#include "physxController.cxx"
-#include "physxControllerDesc.cxx"
-#include "physxControllerReport.cxx"
-#include "physxControllerShapeHit.cxx"
-#include "physxControllersHit.cxx"
-#include "physxConstraintDominance.cxx"
-#include "physxConvexForceFieldShape.cxx"
-#include "physxConvexForceFieldShapeDesc.cxx"
-#include "physxConvexMesh.cxx"
-#include "physxConvexMeshDesc.cxx"
-#include "physxConvexShape.cxx"
-#include "physxConvexShapeDesc.cxx"
-#include "physxCylindricalJoint.cxx"
-#include "physxCylindricalJointDesc.cxx"
-#include "physxD6Joint.cxx"
-#include "physxD6JointDesc.cxx"
-#include "physxDebugGeomNode.cxx"
-#include "physxDistanceJoint.cxx"
-#include "physxDistanceJointDesc.cxx"
-#include "physxEnums.cxx"
-#include "physxFileStream.cxx"
-#include "physxFixedJoint.cxx"
-#include "physxFixedJointDesc.cxx"
-#include "physxForceField.cxx"
-#include "physxForceFieldDesc.cxx"
-#include "physxForceFieldShape.cxx"
-#include "physxForceFieldShapeDesc.cxx"
-#include "physxForceFieldShapeGroup.cxx"
-#include "physxForceFieldShapeGroupDesc.cxx"
-#include "physxGroupsMask.cxx"
-#include "physxHeightField.cxx"
-#include "physxHeightFieldDesc.cxx"
-#include "physxHeightFieldShape.cxx"
-#include "physxHeightFieldShapeDesc.cxx"
-#include "physxJoint.cxx"
-#include "physxJointDesc.cxx"
-#include "physxJointDriveDesc.cxx"
-#include "physxJointLimitDesc.cxx"
-#include "physxJointLimitSoftDesc.cxx"
-#include "physxKitchen.cxx"
-#include "physxLinearInterpolationValues.cxx"
-#include "physxManager.cxx"
-#include "physxMask.cxx"
-#include "physxMaterial.cxx"
-#include "physxMaterialDesc.cxx"
-#include "physxMemoryReadBuffer.cxx"
-#include "physxMemoryWriteBuffer.cxx"
-#include "physxMeshHash.cxx"
-#include "physxMeshPool.cxx"
-#include "physxMotorDesc.cxx"
-#include "physxObject.cxx"
-#include "physxObjectCollection.cxx"
-#include "physxOverlapReport.cxx"
-#include "physxPlane.cxx"
-#include "physxPlaneShape.cxx"
-#include "physxPlaneShapeDesc.cxx"
-#include "physxPointInPlaneJoint.cxx"
-#include "physxPointInPlaneJointDesc.cxx"
-#include "physxPointOnLineJoint.cxx"
-#include "physxPointOnLineJointDesc.cxx"
-#include "physxPrismaticJoint.cxx"
-#include "physxPrismaticJointDesc.cxx"
-#include "physxPulleyJoint.cxx"
-#include "physxPulleyJointDesc.cxx"
-#include "physxRay.cxx"
-#include "physxRaycastHit.cxx"
-#include "physxRaycastReport.cxx"
-#include "physxRevoluteJoint.cxx"
-#include "physxRevoluteJointDesc.cxx"
-#include "physxScene.cxx"
-#include "physxSceneDesc.cxx"
-#include "physxSceneStats2.cxx"
-#include "physxSegment.cxx"
-#include "physxShape.cxx"
-#include "physxShapeDesc.cxx"
-#include "physxSoftBody.cxx"
-#include "physxSoftBodyDesc.cxx"
-#include "physxSoftBodyMesh.cxx"
-#include "physxSoftBodyMeshDesc.cxx"
-#include "physxSoftBodyNode.cxx"
-#include "physxSphere.cxx"
-#include "physxSphereForceFieldShape.cxx"
-#include "physxSphereForceFieldShapeDesc.cxx"
-#include "physxSphereShape.cxx"
-#include "physxSphereShapeDesc.cxx"
-#include "physxSphericalJoint.cxx"
-#include "physxSphericalJointDesc.cxx"
-#include "physxSpringDesc.cxx"
-#include "physxTriangleMesh.cxx"
-#include "physxTriangleMeshDesc.cxx"
-#include "physxTriangleMeshShape.cxx"
-#include "physxTriangleMeshShapeDesc.cxx"
-#include "physxTriggerReport.cxx"
-#include "physxUtilLib.cxx"
-#include "physxVehicle.cxx"
-#include "physxVehicleDesc.cxx"
-#include "physxWheel.cxx"
-#include "physxWheelDesc.cxx"
-#include "physxWheelShape.cxx"
-#include "physxWheelShapeDesc.cxx"

+ 0 - 60
panda/src/physx/physxActor.I

@@ -1,60 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxActor.I
- * @author enn0x
- * @date 2009-09-14
- */
-
-/**
- *
- */
-INLINE PhysxActor::
-PhysxActor() : PhysxObject() {
-
-}
-
-/**
- *
- */
-INLINE PhysxActor::
-~PhysxActor() {
-
-}
-
-/**
- *
- */
-INLINE void PhysxActor::
-ls() const {
-
-  ls(nout);
-}
-
-/**
- *
- */
-INLINE void PhysxActor::
-ls(std::ostream &out, int indent_level) const {
-
-  indent(out, indent_level) << get_type().get_name()
-                            << " " << _name
-                            << " (at 0x" << this << ")";
-
-  if (!_np.is_empty()) {
-    out << " NP:" << _np;
-  }
-
-  if (_controller) {
-    out << " C:0x" << _controller;
-  }
-
-  out << "\n";
-
-  _shapes.ls(out, indent_level);
-}

+ 0 - 1412
panda/src/physx/physxActor.cxx

@@ -1,1412 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxActor.cxx
- * @author enn0x
- * @date 2009-09-14
- */
-
-#include "physxActor.h"
-#include "physxActorDesc.h"
-#include "physxBodyDesc.h"
-#include "physxShapeDesc.h"
-#include "physxManager.h"
-
-TypeHandle PhysxActor::_type_handle;
-
-/**
- *
- */
-void PhysxActor::
-link(NxActor *actorPtr) {
-
-  // Link self
-  _ptr = actorPtr;
-  _ptr->userData = this;
-  _error_type = ET_ok;
-
-  set_name(actorPtr->getName());
-
-  PhysxScene *scene = (PhysxScene *)_ptr->getScene().userData;
-  scene->_actors.add(this);
-
-  // Link shapes
-  NxShape * const *shapes = _ptr->getShapes();
-  NxU32 nShapes = _ptr->getNbShapes();
-
-  for (NxU32 i=0; i < nShapes; i++) {
-    PhysxShape *shape = PhysxShape::factory(shapes[i]->getType());
-    shape->link(shapes[i]);
-  }
-}
-
-/**
- *
- */
-void PhysxActor::
-unlink() {
-
-  // Unlink shapes
-  NxShape * const *shapes = _ptr->getShapes();
-  NxU32 nShapes = _ptr->getNbShapes();
-
-  for (NxU32 i=0; i < nShapes; i++) {
-    PhysxShape *shape = (PhysxShape *)shapes[i]->userData;
-    shape->unlink();
-  }
-
-  // Unlink self
-  _ptr->userData = nullptr;
-  _error_type = ET_released;
-
-  PhysxScene *scene = (PhysxScene *)_ptr->getScene().userData;
-  scene->_actors.remove(this);
-}
-
-/**
- *
- */
-void PhysxActor::
-release() {
-
-  nassertv(_error_type == ET_ok);
-
-  unlink();
-  _ptr->getScene().releaseActor(*_ptr);
-  _ptr = nullptr;
-}
-
-/**
- *
- */
-void PhysxActor::
-link_controller(PhysxController *controller) {
-
-  _controller = controller;
-}
-
-/**
- * Saves the body information of a dynamic actor to the passed body
- * descriptor.
- */
-bool PhysxActor::
-save_body_to_desc(PhysxBodyDesc &bodyDesc) const {
-
-  nassertr(_error_type == ET_ok, false);
-  return _ptr->saveBodyToDesc(bodyDesc._desc);
-}
-
-/**
- * Saves the state of the actor to the passed descriptor.
- */
-void PhysxActor::
-save_to_desc(PhysxActorDesc &actorDesc) const {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->saveToDesc(actorDesc._desc);
-}
-
-/**
- * Sets a name string for the object that can be retrieved with get_name().
- * This is for debugging and is not used by the engine.
- */
-void PhysxActor::
-set_name(const char *name) {
-
-  nassertv(_error_type == ET_ok);
-
-  _name = name ? name : "";
-  _ptr->setName(_name.c_str());
-}
-
-/**
- * Retrieves the name string.
- */
-const char *PhysxActor::
-get_name() const {
-
-  nassertr(_error_type == ET_ok, "");
-  return _ptr->getName();
-}
-
-/**
- * Updates the transform of an assigned NodePath.  If the actor has been
- * created by a PhysxController then this method will update the NodePath's
- * transform from the controller's transform.
- */
-void PhysxActor::
-update_transform(const LMatrix4f &m) {
-
-  // Active transforms are update AFTER scene.fetchResults() has been called,
-  // and thus can contain removed objects.  So either update transforms after
-  // scene.fetchResults() - which means poor performance - or check if an
-  // actor has been removed here in this method.
-  if (_error_type != ET_ok) return;
-
-  if (_np.is_empty()) return;
-
-  if (_controller) {
-    LVector3f hpr(_controller->get_h(), 0.0f, 0.0f);
-    LPoint3f pos = _controller->get_pos();
-    _np.set_transform(_np.get_top(), TransformState::make_pos_hpr(pos, hpr));
-  }
-  else {
-    _np.set_transform(_np.get_top(), TransformState::make_mat(m));
-  }
-}
-
-/**
- * Retrieves the actors world space position.
- */
-LPoint3f PhysxActor::
-get_global_pos() const {
-
-  nassertr(_error_type == ET_ok, LPoint3f::zero());
-  return PhysxManager::nxVec3_to_point3(_ptr->getGlobalPosition());
-}
-
-/**
- * Retrieves the actors world space transform.
- */
-LMatrix4f PhysxActor::
-get_global_mat() const {
-
-  nassertr(_error_type == ET_ok, LMatrix4f::zeros_mat());
-  return PhysxManager::nxMat34_to_mat4(_ptr->getGlobalPose());
-}
-
-/**
- * Retrieves the actors world space orientation.
- */
-LQuaternionf PhysxActor::
-get_global_quat() const {
-
-  nassertr(_error_type == ET_ok, LQuaternionf::zero());
-  return PhysxManager::nxQuat_to_quat(_ptr->getGlobalOrientation());
-}
-
-/**
- * Method for setting a dynamic actor's position in the world.  Please see
- * set_global_mat for some caveats.
- */
-void PhysxActor::
-set_global_pos(const LPoint3f &pos) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!pos.is_nan());
-
-  _ptr->setGlobalPosition(PhysxManager::point3_to_nxVec3(pos));
-}
-
-/**
- * Method for setting a dynamic actor's transform matrix in the world.
- *
- * This method instantaneously changes the actor space to world space
- * transformation.
- *
- * One should exercise restraint in making use of these methods.
- *
- * Static actors should not be moved at all.  There are various internal data
- * structures for static actors which may need to be recomputed when one
- * moves.  Also, moving static actors will not interact correctly with dynamic
- * actors or joints.  If you would like to directly control an actor's
- * position and would like to have it correctly interact with dynamic bodies
- * and joints, you should create a dynamic body with the BF_kinematic flag,
- * and then use the move_global_*() commands to move it along a path!
- *
- * When briefly moving dynamic actors, one should not: - Move actors into
- * other actors, thus causing interpenetration (an invalid physical state). -
- * Move an actor that is connected by a joint to another away from the other
- * (thus causing joint error). - When moving jointed actors the joints' cached
- * transform information is destroyed and recreated next frame; thus this call
- * is expensive for jointed actors.
- */
-void PhysxActor::
-set_global_mat(const LMatrix4f &mat) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!mat.is_nan());
-
-  _ptr->setGlobalPose(PhysxManager::mat4_to_nxMat34(mat));
-}
-
-/**
- * Method for setting a dynamic actor's orientation in the world.  Please see
- * set_global_mat for some caveats.
- */
-void PhysxActor::
-set_global_hpr(float h, float p, float r) {
-
-  nassertv(_error_type == ET_ok);
-
-  LQuaternionf q;
-  q.set_hpr(LVector3f(h, p, r));
-  _ptr->setGlobalOrientationQuat(PhysxManager::quat_to_nxQuat(q));
-}
-
-/**
- * The move_global_* calls serve to move kinematically controlled dynamic
- * actors through the game world.
- *
- * See move_global_mat() for more information.
- *
- * This call wakes the actor if it is sleeping.
- */
-void PhysxActor::
-move_global_pos(const LPoint3f &pos) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!pos.is_nan());
-
-  _ptr->moveGlobalPosition(PhysxManager::point3_to_nxVec3(pos));
-}
-
-/**
- * The move_global_* calls serve to move kinematically controlled dynamic
- * actors through the game world.
- *
- * You set a dynamic actor to be kinematic using the BF_KINEMATIC body flag,
- * used either in the PhysBodyDesc or with set_body_flag().
- *
- * The move command will result in a velocity that, when successfully carried
- * out (i.e.  the motion is not blocked due to joints or collisions) inside
- * run*(), will move the body into the desired pose.  After the move is
- * carried out during a single time step, the velocity is returned to zero.
- * Thus, you must continuously call this in every time step for kinematic
- * actors so that they move along a path.
- *
- * These functions simply store the move destination until run*() is called,
- * so consecutive calls will simply overwrite the stored target variable.
- *
- * This call wakes the actor if it is sleeping.
- */
-void PhysxActor::
-move_global_mat(const LMatrix4f &mat) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!mat.is_nan());
-
-  _ptr->moveGlobalPose(PhysxManager::mat4_to_nxMat34(mat));
-}
-
-/**
- * The move_global_* calls serve to move kinematically controlled dynamic
- * actors through the game world.
- *
- * See move_global_mat() for more information.
- *
- * This call wakes the actor if it is sleeping.
- */
-void PhysxActor::
-move_global_hpr(float h, float p, float r) {
-
-  nassertv(_error_type == ET_ok);
-
-  LQuaternionf q;
-  q.set_hpr(LVector3f(h, p, r));
-  _ptr->moveGlobalOrientationQuat(PhysxManager::quat_to_nxQuat(q));
-}
-
-/**
- * Attaches a node path to this actor.  The node path's transform will be
- * updated automatically if the actor's transform changes (and only then).
- *
- * Note: any non-uniform scale or shear set on the NodePath's transform will
- * be overwritten at the time of the first update.
- */
-void PhysxActor::
-attach_node_path(const NodePath &np) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!np.is_empty());
-
-  _np = NodePath(np);
-}
-
-/**
- * Detaches a previously assigned NodePath from this actor.  The NodePath's
- * transform will no longer be updated from the actor's transform.
- */
-void PhysxActor::
-detach_node_path() {
-
-  nassertv(_error_type == ET_ok);
-
-  _np = NodePath();
-}
-
-/**
- * Retrieves a previously attached NodePath.  An empty NodePath will be
- * returned if no NodePath has been attached to this actor.
- */
-NodePath PhysxActor::
-get_node_path() const {
-
-  nassertr(_error_type == ET_ok, NodePath::fail());
-
-  return _np;
-}
-
-/**
- * Retrieves the scene which this actor belongs to.
- */
-PhysxScene *PhysxActor::
-get_scene() const {
-
-  nassertr(_error_type == ET_ok, nullptr);
-
-  NxScene *scenePtr = &(_ptr->getScene());
-  PhysxScene *scene = (PhysxScene *)(scenePtr->userData);
-
-  return scene;
-}
-
-/**
- * Returns the number of shapes assigned to the actor.
- */
-unsigned int PhysxActor::
-get_num_shapes() const {
-
-  nassertr(_error_type == ET_ok, -1);
-
-  return _ptr->getNbShapes();
-}
-
-/**
- * Creates a new shape and adds it to the list of shapes of this actor.
- *
- * Mass properties of dynamic actors will not automatically be recomputed to
- * reflect the new mass distribution implied by the shape.  Follow this call
- * with a call to update_mass_from_shapes() to do that.
- */
-PhysxShape *PhysxActor::
-create_shape(PhysxShapeDesc &desc) {
-
-  nassertr(_error_type == ET_ok, nullptr);
-  nassertr(desc.is_valid(),nullptr);
-
-  PhysxShape *shape = PhysxShape::factory(desc.ptr()->getType());
-  nassertr(shape, nullptr);
-
-  NxShape *shapePtr = _ptr->createShape(*desc.ptr());
-  nassertr(shapePtr, nullptr);
-
-  shape->link(shapePtr);
-
-  return shape;
-}
-
-/**
- * Retrieves an individual shape from the actor's array of shapes.  Index must
- * be in the range from zero to (number-of-shapes minus 1).
- */
-PhysxShape *PhysxActor::
-get_shape(unsigned int idx) const {
-
-  nassertr(_error_type == ET_ok, nullptr);
-  nassertr_always(idx < _ptr->getNbShapes(), nullptr);
-
-  NxShape * const *shapes = _ptr->getShapes();
-  NxShape *shapePtr = shapes[idx];
-  PhysxShape *shape = (PhysxShape *)(shapePtr->userData);
-
-  return shape;
-}
-
-/**
- * Retrieves an individual shape from the actor's array of shapes.  The first
- * shape for which the shape's name matches the specified name is returned, or
- * NULL if no shape has a matching name.
- */
-PhysxShape *PhysxActor::
-get_shape_by_name(const char *name) const {
-
-  nassertr(_error_type == ET_ok, nullptr);
-
-  NxShape * const *shapes = _ptr->getShapes();
-  NxShape *shapePtr = nullptr;
-  NxU32 nShapes = _ptr->getNbShapes();
-
-  for (NxU32 i=0; i < nShapes; i++) {
-    shapePtr = shapes[i];
-
-    if (strcmp(shapePtr->getName(), name) == 0) {
-      return (PhysxShape *) shapePtr->userData;
-    }
-  }
-
-  return nullptr;
-}
-
-/**
- * Applies a force (or impulse) defined in the global coordinate frame to the
- * actor.
- *
- * This will not induce a torque.
- *
- * Mode determines if the torque is to be conventional or impulsive.
- *
- * The actor must be dynamic.  This call wakes the actor if it is sleeping and
- * the wakeup parameter is true (default).
- */
-void PhysxActor::
-add_force(const LVector3f force, PhysxForceMode mode, bool wakeup) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!force.is_nan());
-
-  _ptr->addForce(PhysxManager::vec3_to_nxVec3(force), (NxForceMode)mode, wakeup);
-}
-
-/**
- * Applies a force (or impulse) defined in the global coordinate frame, acting
- * at a particular point in global coordinates, to the actor.
- *
- * Note that if the force does not act along the center of mass of the actor,
- * this will also add the corresponding torque.  Because forces are reset at
- * the end of every timestep, you can maintain a total external force on an
- * object by calling this once every frame.
- *
- * Mode determines if the torque is to be conventional or impulsive.
- *
- * The actor must be dynamic.  This call wakes the actor if it is sleeping and
- * the wakeup parameter is true (default).
- */
-void PhysxActor::
-add_force_at_pos(const LVector3f force, const LPoint3f &pos, PhysxForceMode mode, bool wakeup) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!force.is_nan());
-  nassertv_always(!pos.is_nan());
-
-  _ptr->addForceAtPos(PhysxManager::vec3_to_nxVec3(force), PhysxManager::point3_to_nxVec3(pos), (NxForceMode)mode, wakeup);
-}
-
-/**
- * Applies a force (or impulse) defined in the global coordinate frame, acting
- * at a particular point in local coordinates, to the actor.
- *
- * Note that if the force does not act along the center of mass of the actor,
- * this will also add the corresponding torque.  Because forces are reset at
- * the end of every timestep, you can maintain a total external force on an
- * object by calling this once every frame.
- *
- * Mode determines if the torque is to be conventional or impulsive.
- *
- * The actor must be dynamic.  This call wakes the actor if it is sleeping and
- * the wakeup parameter is true (default).
- */
-void PhysxActor::
-add_force_at_local_pos(const LVector3f force, const LPoint3f &pos, PhysxForceMode mode, bool wakeup) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!force.is_nan());
-  nassertv_always(!pos.is_nan());
-
-  _ptr->addForceAtLocalPos(PhysxManager::vec3_to_nxVec3(force), PhysxManager::point3_to_nxVec3(pos), (NxForceMode)mode, wakeup);
-}
-
-/**
- * Applies an impulsive torque defined in the global coordinate frame to the
- * actor.
- *
- * Mode determines if the torque is to be conventional or impulsive.
- *
- * The actor must be dynamic.  This call wakes the actor if it is sleeping and
- * the wakeup parameter is true (default).
- */
-void PhysxActor::
-add_torque(const LVector3f torque, PhysxForceMode mode, bool wakeup) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!torque.is_nan());
-
-  _ptr->addTorque(PhysxManager::vec3_to_nxVec3(torque), (NxForceMode)mode, wakeup);
-}
-
-/**
- * Applies a force (or impulse) defined in the actor local coordinate frame to
- * the actor.  This will not induce a torque.
- *
- * Mode determines if the torque is to be conventional or impulsive.
- *
- * The actor must be dynamic.  This call wakes the actor if it is sleeping and
- * the wakeup parameter is true (default).
- */
-void PhysxActor::
-add_local_force(const LVector3f force, PhysxForceMode mode, bool wakeup) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!force.is_nan());
-
-  _ptr->addLocalForce(PhysxManager::vec3_to_nxVec3(force), (NxForceMode)mode, wakeup);
-}
-
-/**
- * Applies a force (or impulse) defined in the actor local coordinate frame,
- * acting at a particular point in global coordinates, to the actor.
- *
- * Note that if the force does not act along the center of mass of the actor,
- * this will also add the corresponding torque.  Because forces are reset at
- * the end of every timestep, you can maintain a total external force on an
- * object by calling this once every frame.
- *
- * Mode determines if the torque is to be conventional or impulsive.
- *
- * The actor must be dynamic.  This call wakes the actor if it is sleeping and
- * the wakeup parameter is true (default).
- */
-void PhysxActor::
-add_local_force_at_pos(const LVector3f force, const LPoint3f &pos, PhysxForceMode mode, bool wakeup) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!force.is_nan());
-  nassertv_always(!pos.is_nan());
-
-  _ptr->addLocalForceAtPos(PhysxManager::vec3_to_nxVec3(force), PhysxManager::point3_to_nxVec3(pos), (NxForceMode)mode, wakeup);
-}
-
-/**
- * Applies a force (or impulse) defined in the actor local coordinate frame,
- * acting at a particular point in local coordinates, to the actor.
- *
- * Note that if the force does not act along the center of mass of the actor,
- * this will also add the corresponding torque.  Because forces are reset at
- * the end of every timestep, you can maintain a total external force on an
- * object by calling this once every frame.
- *
- * Mode determines if the torque is to be conventional or impulsive.
- *
- * The actor must be dynamic.  This call wakes the actor if it is sleeping and
- * the wakeup parameter is true (default).
- */
-void PhysxActor::
-add_local_force_at_local_pos(const LVector3f force, const LPoint3f &pos, PhysxForceMode mode, bool wakeup) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!force.is_nan());
-  nassertv_always(!pos.is_nan());
-
-  _ptr->addLocalForceAtLocalPos(PhysxManager::vec3_to_nxVec3(force), PhysxManager::point3_to_nxVec3(pos), (NxForceMode)mode, wakeup);
-}
-
-/**
- * Applies an impulsive torque defined in the actor local coordinate frame to
- * the actor.
- *
- * Mode determines if the torque is to be conventional or impulsive.
- *
- * The actor must be dynamic.  This call wakes the actor if it is sleeping and
- * the wakeup parameter is true (default).
- */
-void PhysxActor::
-add_local_torque(const LVector3f torque, PhysxForceMode mode, bool wakeup) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!torque.is_nan());
-
-  _ptr->addLocalTorque(PhysxManager::vec3_to_nxVec3(torque), (NxForceMode)mode, wakeup);
-}
-
-/**
- * Recomputes a dynamic actor's mass properties from its shapes.
- *
- * Given a constant density or total mass, the actors mass properties can be
- * recomputed using the shapes attached to the actor.  If the actor has no
- * shapes, then only the totalMass parameter can be used.  If all shapes in
- * the actor are trigger shapes (non-physical), the call will fail.
- *
- * The mass of each shape is either the shape's local density (as specified in
- * the PhysxShapeDesc; default 1.0) multiplied by the shape's volume or a
- * directly specified shape mass.
- *
- * The inertia tensor, mass frame and center of mass will always be
- * recomputed.  If there are no shapes in the actor, the mass will be
- * totalMass, and the mass frame will be set to the center of the actor.
- *
- * If you supply a non-zero total mass, the actor's mass and inertia will
- * first be computed as above and then scaled to fit this total mass.
- *
- * If you supply a non-zero density, the actor's mass and inertia will first
- * be computed as above and then scaled by this factor.
- *
- * Either totalMass or density must be non-zero.
- *
- * The actor must be dynamic.
- */
-bool PhysxActor::
-update_mass_from_shapes(float density, float totalMass) {
-
-  nassertr(_error_type == ET_ok, false);
-  return _ptr->updateMassFromShapes(density, totalMass);
-}
-
-/**
- * Computes the total kinetic (rotational and translational) energy of the
- * object.  The actor must be dynamic.
- */
-float PhysxActor::
-compute_kinetic_energy() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->computeKineticEnergy();
-}
-
-/**
- * Returns true if the actor is dynamic.
- */
-bool PhysxActor::
-is_dynamic() const {
-
-  nassertr(_error_type == ET_ok, false);
-  return _ptr->isDynamic();
-}
-
-/**
- * Sets the collision group for all shapes of this actor.  See
- * PhysxShape.setGroup().
- */
-void PhysxActor::
-set_shape_group(unsigned int group) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(group >= 0 && group < 32);
-
-  NxShape * const *shapes = _ptr->getShapes();
-  NxU32 nShapes = _ptr->getNbShapes();
-
-  for (NxU32 i=0; i < nShapes; i++) {
-    shapes[i]->setGroup( group );
-  }
-}
-
-/**
- * Raise or lower individual BodyFlag flags.
- */
-void PhysxActor::
-set_body_flag(PhysxBodyFlag flag, bool value) {
-
-  if (value == true) {
-    _ptr->raiseBodyFlag((NxBodyFlag)flag);
-  }
-  else {
-    _ptr->clearBodyFlag((NxBodyFlag)flag);
-  }
-}
-
-/**
- * Return the specified BodyFlag flag.
- */
-bool PhysxActor::
-get_body_flag(PhysxBodyFlag flag) const {
-
-  nassertr(_error_type == ET_ok, false);
-  return ptr()->readBodyFlag((NxBodyFlag)flag);
-}
-
-/**
- * Raise or lower individual ActorFlag flags.
- */
-void PhysxActor::
-set_actor_flag(PhysxActorFlag flag, bool value) {
-
-  if (value == true) {
-    _ptr->raiseActorFlag((NxActorFlag)flag);
-  }
-  else {
-    _ptr->clearActorFlag((NxActorFlag)flag);
-  }
-}
-
-/**
- * Return the specified ActorFlag flag.
- */
-bool PhysxActor::
-get_actor_flag(PhysxActorFlag flag) const {
-
-  nassertr(_error_type == ET_ok, false);
-  return ptr()->readActorFlag((NxActorFlag)flag);
-}
-
-/**
- * Sets the actor's contact report flags.
- *
- * These flags are used to determine the kind of report that is generated for
- * interactions with other actors.
- *
- * Please note: If the actor is part of an interacting pair for which the
- * contact report generation is controlled already through any other mechanism
- * (for example by use of PhysxScene::set_actor_pair_flags) then the union of
- * all the specified contact report flags will be used to generate the report.
- */
-void PhysxActor::
-set_contact_report_flag(PhysxContactPairFlag flag, bool value) {
-
-  nassertv(_error_type == ET_ok);
-
-  NxU32 flags = _ptr->getContactReportFlags();
-
-  if (value == true) {
-    flags |= flag;
-  }
-  else {
-    flags &= ~(flag);
-  }
-
-  _ptr->setContactReportFlags(flags);
-}
-
-/**
- * Sets the force threshold for contact reports.  The actor must be dynamic.
- */
-void PhysxActor::
-set_contact_report_threshold(float threshold) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(threshold >= 0.0f);
-
-  _ptr->setContactReportThreshold(threshold);
-}
-
-/**
- * Assigns the actor to a user defined group of actors.  The actor group must
- * be an integer in between 0 and 0x7fff (32767).
- *
- * This is similar to NxShape groups, except those are only five bits and
- * serve a different purpose.
- *
- * The PhysxScene::set_actor_group_pair_flags() lets you set certain behaviors
- * for pairs of actor groups.
- *
- * By default every actor is created in group 0.
- */
-void PhysxActor::
-set_group(unsigned int group) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(group >= 0 && group < 0x8000);
-
-  ptr()->setGroup(group);
-}
-
-/**
- * Retrieves the actor group this actor is assigned to.
- */
-unsigned int PhysxActor::
-get_group() const {
-
-  nassertr(_error_type == ET_ok, 0);
-
-  return ptr()->getGroup();
-}
-
-/**
- * Assigns dynamic actors a dominance group identifier.  Dominance groups are
- * integere in the range from 0 to 31.
- *
- * This is similar to shape groups, except those serve a different purpose.
- *
- * The PhysxScene::set_dominance_group_pair() lets you set certain behaviors
- * for pairs of dominance groups.
- *
- * By default every actor is created in group 0. Static actors must stay in
- * group 0; thus you can only call this on dynamic actors.
- */
-void PhysxActor::
-set_dominance_group(unsigned int group) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(group >= 0 && group < 32);
-  nassertv(is_dynamic() == true);
-
-  _ptr->setDominanceGroup(group);
-}
-
-/**
- * Retrieves the dominance group of this actor.
- */
-unsigned int PhysxActor::
-get_dominance_group() const {
-
-  nassertr(_error_type == ET_ok, 0);
-
-  return ptr()->getDominanceGroup();
-}
-
-/**
- * Sets the angular damping coefficient.  Zero represents no damping.  The
- * angular damping coefficient must be nonnegative.  The actor must be
- * dynamic.  Default: 0.05
- */
-void PhysxActor::
-set_angular_damping(float angDamp) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(angDamp >= 0.0f);
-
-  _ptr->setAngularDamping(angDamp);
-}
-
-/**
- * Returns the angular damping coefficient.  The actor must be dynamic.
- */
-float PhysxActor::
-get_angular_damping() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getAngularDamping();
-}
-
-/**
- * Sets the linear damping coefficient.  Zero represents no damping.  The
- * damping coefficient must be nonnegative.  The actor must be dynamic.
- * Default: 0
- */
-void PhysxActor::
-set_linear_damping(float linDamp) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(linDamp >= 0.0f);
-
-  _ptr->setLinearDamping(linDamp);
-}
-
-/**
- * Retrieves the linear damping coefficient.  The actor must be dynamic.
- */
-float PhysxActor::
-get_linear_damping() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getLinearDamping();
-}
-
-/**
- * Sets the linear velocity of the actor.
- *
- * Note that if you continuously set the velocity of an actor yourself, forces
- * such as gravity or friction will not be able to manifest themselves,
- * because forces directly influence only the velocity/momentum of an actor.
- *
- * The actor must be dynamic.
- */
-void PhysxActor::
-set_linear_velocity(const LVector3f &linVel) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(_ptr->isDynamic());
-
-  _ptr->setLinearVelocity(PhysxManager::vec3_to_nxVec3(linVel));
-}
-
-/**
- * Sets the angular velocity of the actor.
- *
- * Note that if you continuously set the angular velocity of an actor
- * yourself, forces such as friction will not be able to rotate the actor,
- * because forces directly influence only the velocity/momentum.
- *
- * The actor must be dynamic.
- */
-void PhysxActor::
-set_angular_velocity(const LVector3f &angVel) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(_ptr->isDynamic());
-
-  _ptr->setAngularVelocity(PhysxManager::vec3_to_nxVec3(angVel));
-}
-
-/**
- * Lets you set the maximum angular velocity permitted for this actor.
- *
- * Because for various internal computations, very quickly rotating actors
- * introduce error into the simulation, which leads to undesired results.
- *
- * With PhysxManager::set_parameter(PP_max_angular_velocity) you can set the
- * default maximum velocity for actors created after the call.  Bodies' high
- * angular velocities are clamped to this value.
- *
- * However, because some actors, such as car wheels, should be able to rotate
- * quickly, you can override the default setting on a per-actor basis with the
- * below call.  Note that objects such as wheels which are approximated with
- * spherical or other smooth collision primitives can be simulated with
- * stability at a much higher angular velocity than, say, a box that has
- * corners.
- *
- * The actor must be dynamic.
- */
-void PhysxActor::
-set_max_angular_velocity(float maxAngVel) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(_ptr->isDynamic());
-
-  _ptr->setMaxAngularVelocity(maxAngVel);
-}
-
-/**
- * Returns the linear velocity of an actor.  The actor must be dynamic.
- */
-LVector3f PhysxActor::
-get_linear_velocity() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getLinearVelocity());
-}
-
-/**
- * Returns the angular velocity of the actor.  The actor must be dynamic.
- */
-LVector3f PhysxActor::
-get_angular_velocity() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getAngularVelocity());
-}
-
-/**
- * Returns the maximum angular velocity permitted for this actor.
- */
-float PhysxActor::
-get_max_angular_velocity() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getMaxAngularVelocity();
-}
-
-/**
- * Computes the velocity of a point given in world coordinates if it were
- * attached to the actor and moving with it.
- *
- * The actor must be dynamic.
- */
-LVector3f PhysxActor::
-get_point_velocity(const LPoint3f &point) const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  nassertr_always(!point.is_nan(), LVector3f::zero());
-
-  NxVec3 nPoint = PhysxManager::point3_to_nxVec3(point);
-  return PhysxManager::nxVec3_to_vec3(_ptr->getPointVelocity(nPoint));
-}
-
-/**
- * Computes the velocity of a point given in body local coordinates as if it
- * were attached to the actor and moving with it.
- *
- * The actor must be dynamic.
- */
-LVector3f PhysxActor::
-get_local_point_velocity(const LPoint3f &point) const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  nassertr_always(!point.is_nan(), LVector3f::zero());
-
-  NxVec3 nPoint = PhysxManager::point3_to_nxVec3(point);
-  return PhysxManager::nxVec3_to_vec3(_ptr->getLocalPointVelocity(nPoint));
-}
-
-/**
- * Sets the linear momentum of the actor.  Note that if you continuously set
- * the linear momentum of an actor yourself, forces such as gravity or
- * friction will not be able to manifest themselves, because forces directly
- * influence only the velocity/momentum of a actor.  The actor must be
- * dynamic.
- */
-void PhysxActor::
-set_linear_momentum(const LVector3f &momentum) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setLinearMomentum(PhysxManager::vec3_to_nxVec3(momentum));
-}
-
-/**
- * Sets the angular momentum of the actor.  Note that if you continuously set
- * the angular velocity of an actor yourself, forces such as friction will not
- * be able to rotate the actor, because forces directly influence only the
- * velocity of actor.  The actor must be dynamic.
- */
-void PhysxActor::
-set_angular_momentum(const LVector3f &momentum) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setAngularMomentum(PhysxManager::vec3_to_nxVec3(momentum));
-}
-
-/**
- * Retrieves the linear momentum of an actor.  The momentum is equal to the
- * velocity times the mass.  The actor must be dynamic.
- */
-LVector3f PhysxActor::
-get_linear_momentum() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getLinearMomentum());
-}
-
-/**
- * Retrieves the angular momentum of an actor.  The angular momentum is equal
- * to the angular velocity times the global space inertia tensor.  The actor
- * must be dynamic.
- */
-LVector3f PhysxActor::
-get_angular_momentum() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getAngularMomentum());
-}
-
-/**
- * Sets the linear velocity below which an actor may go to sleep.  Actors
- * whose linear velocity is above this threshold will not be put to sleep.
- *
- * Setting the sleep angular/linear velocity only makes sense when the
- * BF_energy_sleep_test is not set.
- *
- * The actor must be dynamic.
- */
-void PhysxActor::
-set_sleep_linear_velocity(float threshold) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setSleepLinearVelocity(threshold);
-}
-
-/**
- * Sets the angular velocity below which an actor may go to sleep.  Actors
- * whose angular velocity is above this threshold will not be put to sleep.
- *
- * Setting the sleep angular/linear velocity only makes sense when the
- * BF_energy_sleep_test is not set.
- *
- * The actor must be dynamic.
- */
-void PhysxActor::
-set_sleep_angular_velocity(float threshold) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setSleepAngularVelocity(threshold);
-}
-
-/**
- * Sets the energy threshold below which an actor may go to sleep.  Actors
- * whose kinematic energy is above this threshold will not be put to sleep.
- *
- * Setting the sleep energy threshold only makes sense when the
- * BF_energy_sleep_test is set.  There are also other types of sleeping that
- * uses the linear and angular velocities directly instead of the energy.
- *
- * The actor must be dynamic.
- */
-void PhysxActor::
-set_sleep_energy_threshold(float threshold) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setSleepEnergyThreshold(threshold);
-}
-
-/**
- * Returns the linear velocity below which an actor may go to sleep.  Actors
- * whose linear velocity is above this threshold will not be put to sleep.
- * The actor must be dynamic.
- */
-float PhysxActor::
-get_sleep_linear_velocity() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getSleepLinearVelocity();
-}
-
-/**
- * Returns the angular velocity below which an actor may go to sleep.  Actors
- * whose angular velocity is above this threshold will not be put to sleep.
- * The actor must be dynamic.
- */
-float PhysxActor::
-get_sleep_angular_velocity() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getSleepAngularVelocity();
-}
-
-/**
- * Returns the energy below which an actor may go to sleep.  Actors whose
- * energy is above this threshold will not be put to sleep.  The actor must be
- * dynamic.
- */
-float PhysxActor::
-get_sleep_energy_threshold() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getSleepEnergyThreshold();
-}
-
-/**
- * Returns true if this body is sleeping.
- *
- * When an actor does not move for a period of time, it is no longer simulated
- * in order to save time.  This state is called sleeping.  However, because
- * the object automatically wakes up when it is either touched by an awake
- * object, or one of its properties is changed by the user, the entire sleep
- * mechanism should be transparent to the user.
- *
- * The actor must be dynamic.
- */
-bool PhysxActor::
-is_sleeping() const {
-
-  nassertr(_error_type == ET_ok, false);
-  return _ptr->isSleeping();
-}
-
-/**
- * Wakes up the actor if it is sleeping.
- *
- * The wakeCounterValue determines how long until the body is put to sleep, a
- * value of zero means that the body is sleeping.  wake_up(0) is equivalent to
- * PhysxActor::put_to_sleep().
- *
- * The actor must be dynamic.
- */
-void PhysxActor::
-wake_up(float wakeCounterValue) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->wakeUp(wakeCounterValue);
-}
-
-/**
- * Forces the actor to sleep.
- *
- * The actor will stay asleep until the next call to simulate, and will not
- * wake up until then even when otherwise it would (for example a force is
- * applied to it). It can however wake up during the next do_physics call.
- *
- * The actor must be dynamic.
- */
-void PhysxActor::
-put_to_sleep() {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->putToSleep();
-}
-
-/**
- * Sets the mass of a dynamic actor.
- */
-void PhysxActor::
-set_mass(float mass) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setMass(mass);
-}
-
-/**
- * Returns the mass of the actor.
- */
-float PhysxActor::
-get_mass() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getMass();
-}
-
-/**
- * Sets the matrix of the center of mass relative to the actor.
- */
-void PhysxActor::
-set_c_mass_offset_local_mat(const LMatrix4f &mat) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setCMassOffsetLocalPose(PhysxManager::mat4_to_nxMat34(mat));
-}
-
-/**
- * Sets the position of the center of mass relative to the actor.
- */
-void PhysxActor::
-set_c_mass_offset_local_pos(const LPoint3f &pos) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setCMassOffsetLocalPosition(PhysxManager::point3_to_nxVec3(pos));
-}
-
-/**
- * Sets the orientation of the center of mass relative to the actor.
- */
-void PhysxActor::
-set_c_mass_offset_local_orientation(const LMatrix3f &mat) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setCMassOffsetLocalOrientation(PhysxManager::mat3_to_nxMat33(mat));
-}
-
-/**
- * Sets the matrix of the center of mass relative to world space.
- */
-void PhysxActor::
-set_c_mass_offset_global_mat(const LMatrix4f &mat) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setCMassOffsetGlobalPose(PhysxManager::mat4_to_nxMat34(mat));
-}
-
-/**
- * Sets the position of the center of mass relative to world space.
- */
-void PhysxActor::
-set_c_mass_offset_global_pos(const LPoint3f &pos) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setCMassOffsetGlobalPosition(PhysxManager::point3_to_nxVec3(pos));
-}
-
-/**
- * Sets the orientation of the center of mass relative to world space.
- */
-void PhysxActor::
-set_c_mass_offset_global_orientation(const LMatrix3f &mat) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setCMassOffsetGlobalOrientation(PhysxManager::mat3_to_nxMat33(mat));
-}
-
-/**
- * Moves the actor by setting the transform of the center of mass.
- */
-void PhysxActor::
-set_c_mass_global_mat(const LMatrix4f &mat) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setCMassGlobalPose(PhysxManager::mat4_to_nxMat34(mat));
-}
-
-/**
- * Moves the actor by setting the position of the center of mass.
- */
-void PhysxActor::
-set_c_mass_global_pos(const LPoint3f &pos) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setCMassGlobalPosition(PhysxManager::point3_to_nxVec3(pos));
-}
-
-/**
- * Moves the actor by setting the orientation of the center of mass.
- */
-void PhysxActor::
-set_c_mass_global_orientation(const LMatrix3f &mat) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setCMassGlobalOrientation(PhysxManager::mat3_to_nxMat33(mat));
-}
-
-/**
- * Sets the inertia tensor, using a parameter specified in mass space
- * coordinates.
- */
-void PhysxActor::
-set_mass_space_inertia_tensor(const LVector3f &m) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setMassSpaceInertiaTensor(PhysxManager::vec3_to_nxVec3(m));
-}
-
-/**
- * Returns the center of mass transform in world space.
- */
-LMatrix4f PhysxActor::
-get_c_mass_global_mat() const {
-
-  nassertr(_error_type == ET_ok, LMatrix4f::zeros_mat());
-  return PhysxManager::nxMat34_to_mat4(_ptr->getCMassGlobalPose());
-}
-
-/**
- * Returns the center of mass position in world space.
- */
-LPoint3f PhysxActor::
-get_c_mass_global_pos() const {
-
-  nassertr(_error_type == ET_ok, LPoint3f::zero());
-  return PhysxManager::nxVec3_to_point3(_ptr->getCMassGlobalPosition());
-}
-
-/**
- * Returns the center of mass orientation in world space.
- */
-LMatrix3f PhysxActor::
-get_c_mass_global_orientation() const {
-
-  nassertr(_error_type == ET_ok, LMatrix3f::ident_mat());
-  return PhysxManager::nxMat33_to_mat3(_ptr->getCMassGlobalOrientation());
-}
-
-/**
- * Returns the center of mass transform relative to the actor.
- */
-LMatrix4f PhysxActor::
-get_c_mass_local_mat() const {
-
-  nassertr(_error_type == ET_ok, LMatrix4f::zeros_mat());
-  return PhysxManager::nxMat34_to_mat4(_ptr->getCMassLocalPose());
-}
-
-/**
- * Returns the center of mass position relative to the actor.
- */
-LPoint3f PhysxActor::
-get_c_mass_local_pos() const {
-
-  nassertr(_error_type == ET_ok, LPoint3f::zero());
-  return PhysxManager::nxVec3_to_point3(_ptr->getCMassLocalPosition());
-}
-
-/**
- * Returns the center of mass orientation relative to the actor.
- */
-LMatrix3f PhysxActor::
-get_c_mass_local_orientation() const {
-
-  nassertr(_error_type == ET_ok, LMatrix3f::ident_mat());
-  return PhysxManager::nxMat33_to_mat3(_ptr->getCMassLocalOrientation());
-}
-
-/**
- * Returns the diagonal inertia tensor of the actor relative to the mass
- * coordinate frame.
- */
-LVector3f PhysxActor::
-get_mass_space_inertia_tensor() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getMassSpaceInertiaTensor());
-}
-
-/**
- * Returns the inertia tensor of the actor relative to the world coordinate
- * frame.
- */
-LMatrix3f PhysxActor::
-get_global_inertia_tensor() const {
-
-  nassertr(_error_type == ET_ok, LMatrix3f::ident_mat());
-  return PhysxManager::nxMat33_to_mat3(_ptr->getGlobalInertiaTensor());
-}
-
-/**
- * Returns the inverse of the inertia tensor of the actor relative to the
- * world coordinate frame.
- */
-LMatrix3f PhysxActor::
-get_global_inertia_tensor_inverse() const {
-
-  nassertr(_error_type == ET_ok, LMatrix3f::ident_mat());
-  return PhysxManager::nxMat33_to_mat3(_ptr->getGlobalInertiaTensorInverse());
-}

+ 0 - 222
panda/src/physx/physxActor.h

@@ -1,222 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxActor.h
- * @author enn0x
- * @date 2009-09-14
- */
-
-#ifndef PHYSXACTOR_H
-#define PHYSXACTOR_H
-
-#include "pandabase.h"
-#include "nodePath.h"
-#include "luse.h"
-
-#include "physxObject.h"
-#include "physxObjectCollection.h"
-#include "physxEnums.h"
-#include "physx_includes.h"
-
-class PhysxController;
-class PhysxScene;
-class PhysxShape;
-class PhysxShapeDesc;
-class PhysxActorDesc;
-class PhysxBodyDesc;
-
-/**
- * Actors are the main simulation objects.  Actors are owned by a scene
- * (PhysxScene).
- *
- * An actor may optionally encapsulate a dynamic rigid body by setting the
- * body member of the actor's descriptor when it is created.  Otherwise the
- * actor will be static (fixed in the world).
- *
- * Instances of PhysxActor are created by calling PhysxScene::create_actor()
- * and destroyed by calling PhysxActor::release().
- */
-class EXPCL_PANDAPHYSX PhysxActor : public PhysxObject, public PhysxEnums {
-
-PUBLISHED:
-  INLINE PhysxActor();
-  INLINE ~PhysxActor();
-
-  bool save_body_to_desc(PhysxBodyDesc &bodyDesc) const;
-  void save_to_desc(PhysxActorDesc &actorDesc) const;
-
-  void set_name(const char *name);
-  void set_global_pos(const LPoint3f &pos);
-  void set_global_mat(const LMatrix4f &mat);
-  void set_global_hpr(float h, float p, float r);
-  void set_body_flag(PhysxBodyFlag flag, bool value);
-  void set_actor_flag(PhysxActorFlag flag, bool value);
-  void set_contact_report_flag(PhysxContactPairFlag flag, bool value);
-  void set_contact_report_threshold(float threshold);
-  void set_group(unsigned int group);
-  void set_dominance_group(unsigned int group);
-  void set_shape_group( unsigned int group );
-
-  const char *get_name() const;
-  LPoint3f get_global_pos() const;
-  LMatrix4f get_global_mat() const;
-  LQuaternionf get_global_quat() const;
-  bool get_body_flag(PhysxBodyFlag flag) const;
-  bool get_actor_flag(PhysxActorFlag flag) const;
-  unsigned int get_group() const;
-  unsigned int get_dominance_group() const;
-
-  bool is_dynamic() const;
-  float compute_kinetic_energy() const;
-  bool update_mass_from_shapes(float density, float totalMass);
-
-  PhysxScene *get_scene() const;
-
-  // NodePath
-  void attach_node_path(const NodePath &np);
-  void detach_node_path();
-  NodePath get_node_path() const;
-
-  // Shapes
-  unsigned int get_num_shapes() const;
-  PhysxShape *create_shape(PhysxShapeDesc &desc);
-  PhysxShape *get_shape(unsigned int idx) const;
-  PhysxShape *get_shape_by_name(const char *name) const;
-  MAKE_SEQ(get_shapes, get_num_shapes, get_shape);
-
-  // Forces
-  void add_force(const LVector3f force,
-     PhysxForceMode mode=FM_force, bool wakeup=true);
-  void add_force_at_pos(const LVector3f force, const LPoint3f &pos,
-     PhysxForceMode mode=FM_force, bool wakeup=true);
-  void add_force_at_local_pos(const LVector3f force, const LPoint3f &pos,
-     PhysxForceMode mode=FM_force, bool wakeup=true);
-  void add_torque(const LVector3f torque,
-     PhysxForceMode mode=FM_force, bool wakeup=true);
-  void add_local_force(const LVector3f force,
-     PhysxForceMode mode=FM_force, bool wakeup=true);
-  void add_local_force_at_pos(const LVector3f force, const LPoint3f &pos,
-     PhysxForceMode mode=FM_force, bool wakeup=true);
-  void add_local_force_at_local_pos(const LVector3f force, const LPoint3f &pos,
-     PhysxForceMode mode=FM_force, bool wakeup=true);
-  void add_local_torque(const LVector3f torque,
-     PhysxForceMode mode=FM_force, bool wakeup=true);
-
-  // Mass manipulation
-  void set_mass(float mass);
-  void set_c_mass_offset_local_mat(const LMatrix4f &mat);
-  void set_c_mass_offset_local_pos(const LPoint3f &pos);
-  void set_c_mass_offset_local_orientation(const LMatrix3f &mat);
-  void set_c_mass_offset_global_mat(const LMatrix4f &mat);
-  void set_c_mass_offset_global_pos(const LPoint3f &pos);
-  void set_c_mass_offset_global_orientation(const LMatrix3f &mat);
-  void set_c_mass_global_mat(const LMatrix4f &mat);
-  void set_c_mass_global_pos(const LPoint3f &pos);
-  void set_c_mass_global_orientation(const LMatrix3f &mat);
-  void set_mass_space_inertia_tensor(const LVector3f &m);
-
-  float get_mass() const;
-  LMatrix4f get_c_mass_global_mat() const;
-  LPoint3f get_c_mass_global_pos() const;
-  LMatrix3f get_c_mass_global_orientation() const;
-  LMatrix4f get_c_mass_local_mat() const;
-  LPoint3f get_c_mass_local_pos() const;
-  LMatrix3f get_c_mass_local_orientation() const;
-  LVector3f get_mass_space_inertia_tensor() const;
-  LMatrix3f get_global_inertia_tensor() const;
-  LMatrix3f get_global_inertia_tensor_inverse() const;
-
-  // Damping
-  void set_linear_damping(float linDamp);
-  void set_angular_damping(float angDamp);
-  float get_linear_damping() const;
-  float get_angular_damping() const;
-
-  // Velocity
-  void set_linear_velocity(const LVector3f &linVel);
-  void set_angular_velocity(const LVector3f &angVel);
-  void set_max_angular_velocity(float maxAngVel);
-
-  LVector3f get_linear_velocity() const;
-  LVector3f get_angular_velocity() const;
-  float get_max_angular_velocity() const;
-
-  // Point Velocity
-  LVector3f get_point_velocity(const LPoint3f &point) const;
-  LVector3f get_local_point_velocity(const LPoint3f &point) const;
-
-  // Momentum
-  void set_linear_momentum(const LVector3f &momentum);
-  void set_angular_momentum(const LVector3f &momentum);
-  LVector3f get_linear_momentum() const;
-  LVector3f get_angular_momentum() const;
-
-  // Sleeping
-  void set_sleep_linear_velocity(float threshold);
-  void set_sleep_angular_velocity(float threshold);
-  void set_sleep_energy_threshold(float threshold);
-  float get_sleep_linear_velocity() const;
-  float get_sleep_angular_velocity() const;
-  float get_sleep_energy_threshold() const;
-  bool is_sleeping() const;
-  void wake_up(float wakeCounterValue=NX_SLEEP_INTERVAL);
-  void put_to_sleep();
-
-  // Kinematic
-  void move_global_pos(const LPoint3f &pos);
-  void move_global_mat(const LMatrix4f &mat);
-  void move_global_hpr(float h, float p, float r);
-
-  INLINE void ls() const;
-  INLINE void ls(std::ostream &out, int indent_level=0) const;
-
-public:
-  void update_transform(const LMatrix4f &m);
-
-PUBLISHED:
-  void release();
-
-public:
-  INLINE NxActor *ptr() const { return _ptr; };
-
-  void link_controller(PhysxController *controller);
-  void link(NxActor *ptr);
-  void unlink();
-
-  PhysxObjectCollection<PhysxShape> _shapes;
-
-private:
-  NxActor *_ptr;
-  NodePath _np;
-  PT(PhysxController) _controller;
-  std::string _name;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxObject::init_type();
-    register_type(_type_handle, "PhysxActor",
-                  PhysxObject::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxActor.I"
-
-#endif // PHYSXACTOR_H

+ 0 - 48
panda/src/physx/physxActorDesc.I

@@ -1,48 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxActorDesc.I
- * @author enn0x
- * @date 2009-09-05
- */
-
-/**
- *
- */
-INLINE PhysxActorDesc::
-PhysxActorDesc() {
-
-  set_to_default();
-}
-
-/**
- *
- */
-INLINE PhysxActorDesc::
-~PhysxActorDesc() {
-
-}
-
-/**
- * (re)sets the structure to the default.
- */
-INLINE void PhysxActorDesc::
-set_to_default() {
-
-  _desc.setToDefault();
-  set_name("");
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxActorDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 138
panda/src/physx/physxActorDesc.cxx

@@ -1,138 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxActorDesc.cxx
- * @author enn0x
- * @date 2009-09-05
- */
-
-#include "physxActorDesc.h"
-#include "physxBodyDesc.h"
-#include "physxManager.h"
-
-/**
- * Adds a shape to the list of collision shapes composing this actor.
- */
-void PhysxActorDesc::
-add_shape(PhysxShapeDesc &desc) {
-
-  _desc.shapes.push_back(desc.ptr());
-}
-
-/**
- * Sets the optional debug name for the actor.
- */
-void PhysxActorDesc::
-set_name(const char *name) {
-
-  _name = name ? name : "";
-  _desc.name = _name.c_str();
-}
-
-/**
- * Set the density used during mass/intertia computation.  This value is used
- * if the actor's shapes do not have a mass asigned.
- */
-void PhysxActorDesc::
-set_density(float density) {
-
-  _desc.density = density;
-}
-
-/**
- * Set the position of the actor in global space.
- */
-void PhysxActorDesc::
-set_global_pos(const LPoint3f &pos) {
-
-  _desc.globalPose.t = PhysxManager::point3_to_nxVec3(pos);
-}
-
-/**
- * Set the position and orientation of the actor in global space.  Scaling and
- * shear arenot supported, even if the matrix contains a scale or shear.
- */
-void PhysxActorDesc::
-set_global_mat(const LMatrix4f &mat) {
-
-  _desc.globalPose = PhysxManager::mat4_to_nxMat34(mat);
-}
-
-/**
- * Sets the orientation of the actor in global space by providing angles for
- * heading, pitch and roll.
- */
-void PhysxActorDesc::
-set_global_hpr(float h, float p, float r) {
-
-  LQuaternionf q;
-  LMatrix3f rot;
-  NxMat34 m;
-
-  q.set_hpr(LVector3f(h, p, r));
-  q.extract_to_matrix(rot);
-
-  _desc.globalPose.M = PhysxManager::mat3_to_nxMat33(rot);
-}
-
-/**
- * Sets the body descriptor for this actor.  The actor will be dynmaic if a
- * body descriptor is set, and static if no body descriptor is set.
- */
-void PhysxActorDesc::
-set_body(PhysxBodyDesc &desc) {
-
-  _desc.body = &(desc._desc);
-}
-
-/**
- * Gets the body descriptor for this actor.
- */
-PhysxBodyDesc PhysxActorDesc::
-get_body() const {
-  assert(false /* Not implemented */);
-
-  // PhysxBodyDesc value; value._desc = *(_desc.body); return value;
-  return PhysxBodyDesc();
-}
-
-/**
- * Returns the optional debug name for this actor.
- */
-const char *PhysxActorDesc::
-get_name() const {
-
-  return _desc.name;
-}
-
-/**
- * Returns the actor's density.
- */
-float PhysxActorDesc::
-get_density() const {
-
-  return _desc.density;
-}
-
-/**
- * Returns the actor's position in global space.
- */
-LPoint3f PhysxActorDesc::
-get_global_pos() const {
-
-  return PhysxManager::nxVec3_to_point3(_desc.globalPose.t);
-}
-
-/**
- * Returns the actor's transform in global space.
- */
-LMatrix4f PhysxActorDesc::
-get_global_mat() const {
-
-  return PhysxManager::nxMat34_to_mat4(_desc.globalPose);
-}

+ 0 - 61
panda/src/physx/physxActorDesc.h

@@ -1,61 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxActorDesc.h
- * @author enn0x
- * @date 2009-09-05
- */
-
-#ifndef PHYSXACTORDESC_H
-#define PHYSXACTORDESC_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physx_includes.h"
-
-class PhysxBodyDesc;
-class PhysxShapeDesc;
-
-/**
- * Descriptor for PhysxActor.
- */
-class EXPCL_PANDAPHYSX PhysxActorDesc {
-
-PUBLISHED:
-  INLINE PhysxActorDesc();
-  INLINE ~PhysxActorDesc();
-
-  INLINE void set_to_default();
-  INLINE bool is_valid() const;
-
-  void add_shape(PhysxShapeDesc &desc);
-
-  void set_name(const char *name);
-  void set_density(float density);
-  void set_global_pos(const LPoint3f &pos);
-  void set_global_mat(const LMatrix4f &mat);
-  void set_global_hpr(float h, float p, float r);
-  void set_body(PhysxBodyDesc &desc);
-
-  const char *get_name() const;
-  float get_density() const;
-  LPoint3f get_global_pos() const;
-  LMatrix4f get_global_mat() const;
-  PhysxBodyDesc get_body() const;
-
-public:
-  NxActorDesc _desc;
-
-private:
-  std::string _name;
-};
-
-#include "physxActorDesc.I"
-
-#endif // PHYSXACTORDESC_H

+ 0 - 46
panda/src/physx/physxBodyDesc.I

@@ -1,46 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBodyDesc.I
- * @author enn0x
- * @date 2009-09-05
- */
-
-/**
- *
- */
-INLINE PhysxBodyDesc::
-PhysxBodyDesc() {
-
-}
-
-/**
- *
- */
-INLINE PhysxBodyDesc::
-~PhysxBodyDesc() {
-
-}
-
-/**
- * (re)sets the structure to the default.
- */
-INLINE void PhysxBodyDesc::
-set_to_default() {
-
-  _desc.setToDefault();
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxBodyDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 330
panda/src/physx/physxBodyDesc.cxx

@@ -1,330 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBodyDesc.cxx
- * @author enn0x
- * @date 2009-09-05
- */
-
-#include "physxBodyDesc.h"
-
-/**
- * Set the mass of body.
- */
-void PhysxBodyDesc::
-set_mass(float mass) {
-
-  _desc.mass = mass;
-}
-
-/**
- * Get the mass of body.
- */
-float PhysxBodyDesc::
-get_mass() const {
-
-  return _desc.mass;
-}
-
-/**
- * Set the linear damping applied to the body.
- */
-void PhysxBodyDesc::
-set_linear_damping(float damping) {
-
-  _desc.linearDamping = damping;
-}
-
-/**
- * Get the linear damping applied to the body.
- */
-float PhysxBodyDesc::
-get_linear_damping() const {
-
-  return _desc.linearDamping;
-}
-
-/**
- * Set the angular damping applied to the body.
- */
-void PhysxBodyDesc::
-set_angular_damping(float damping) {
-
-  _desc.angularDamping = damping;
-}
-
-/**
- * Get the angular damping applied to the body.
- */
-float PhysxBodyDesc::
-get_angular_damping() const {
-
-  return _desc.angularDamping;
-}
-
-/**
- * Set the linear Velocity of the body.
- */
-void PhysxBodyDesc::
-set_linear_velocity(const LVector3f &velocity) {
-
-  _desc.linearVelocity = PhysxManager::vec3_to_nxVec3(velocity);
-}
-
-/**
- * Get the linear Velocity of the body.
- */
-LVector3f PhysxBodyDesc::
-get_linear_velocity() const {
-
-  return PhysxManager::nxVec3_to_vec3(_desc.linearVelocity);
-}
-
-/**
- * Set the angular velocity of the body.
- */
-void PhysxBodyDesc::
-set_angular_velocity(const LVector3f &velocity) {
-
-  _desc.angularVelocity = PhysxManager::vec3_to_nxVec3(velocity);
-}
-
-/**
- * Get the angular velocity of the body.
- */
-LVector3f PhysxBodyDesc::
-get_angular_velocity() const {
-
-  return PhysxManager::nxVec3_to_vec3(_desc.angularVelocity);
-}
-
-/**
- * Set the maximum allowed angular velocity for this body.
- */
-void PhysxBodyDesc::
-set_max_angular_velocity(float maximum) {
-
-  _desc.maxAngularVelocity = maximum;
-}
-
-/**
- * Get the maximum allowed angular velocity for this body.
- */
-float PhysxBodyDesc::
-get_max_angular_velocity() const {
-
-  return _desc.maxAngularVelocity;
-}
-
-/**
- * Set the maximum linear velocity at which the body can go to sleep.
- */
-void PhysxBodyDesc::
-set_sleep_linear_velocity(float velocity) {
-
-  _desc.sleepLinearVelocity = velocity;
-}
-
-/**
- * Get the maximum linear velocity at which the body can go to sleep.
- */
-float PhysxBodyDesc::
-get_sleep_linear_velocity() const {
-
-  return _desc.sleepLinearVelocity;
-}
-
-/**
- * Set the maximum angular velocity at which body can go to sleep.
- */
-void PhysxBodyDesc::
-set_sleep_angular_velocity(float velocity) {
-
-  _desc.sleepAngularVelocity = velocity;
-}
-
-/**
- * Get the maximum angular velocity at which body can go to sleep.
- */
-float PhysxBodyDesc::
-get_sleep_angular_velocity() const {
-
-  return _desc.sleepAngularVelocity;
-}
-
-/**
- * Set the number of solver iterations performed when processing
- * joint/contacts connected to this body.
- */
-void PhysxBodyDesc::
-set_solver_iteration_count(unsigned int count) {
-
-  _desc.solverIterationCount = count;
-}
-
-/**
- * Get the number of solver iterations performed when processing
- * joint/contacts connected to this body.
- */
-unsigned int PhysxBodyDesc::
-get_solver_iteration_count() const {
-
-  return _desc.solverIterationCount;
-}
-
-/**
- * Set the threshold for the energy-based sleeping algorithm.  Only used when
- * the BF_energy_sleep_test flag is set.
- */
-void PhysxBodyDesc::
-set_sleep_energy_threshold(float threshold) {
-
-  _desc.sleepEnergyThreshold = threshold;
-}
-
-/**
- * Get the threshold for the energy-based sleeping algorithm.  Only used when
- * the BF_energy_sleep_test flag is set.
- */
-float PhysxBodyDesc::
-get_sleep_energy_threshold() const {
-
-  return _desc.sleepEnergyThreshold;
-}
-
-/**
- * Set the damping factor for bodies that are about to sleep.
- */
-void PhysxBodyDesc::
-set_sleep_damping(float damping) {
-
-  _desc.sleepDamping = damping;
-}
-
-/**
- * Get the damping factor for bodies that are about to sleep.
- */
-float PhysxBodyDesc::
-get_sleep_damping() const {
-
-  return _desc.sleepDamping;
-}
-
-/**
- * Set the position and orientation of the center of mass.
- */
-void PhysxBodyDesc::
-set_mass_local_mat(const LMatrix4f &mat) {
-
-  _desc.massLocalPose = PhysxManager::mat4_to_nxMat34(mat);
-}
-
-/**
- * Get the position and orientation of the center of mass.
- */
-LMatrix4f PhysxBodyDesc::
-get_mass_local_mat() const {
-
-  return PhysxManager::nxMat34_to_mat4(_desc.massLocalPose);
-}
-
-/**
- * Set the diagonal mass space inertia tensor in bodies mass frame.
- */
-void PhysxBodyDesc::
-set_mass_space_inertia(const LVector3f &inertia) {
-
-  _desc.massSpaceInertia = PhysxManager::vec3_to_nxVec3(inertia);
-}
-
-/**
- * Get the diagonal mass space inertia tensor in bodies mass frame.
- */
-LVector3f PhysxBodyDesc::
-get_mass_space_inertia() const {
-
-  return PhysxManager::nxVec3_to_vec3(_desc.massSpaceInertia);
-}
-
-/**
- * Raise or lower individual body flags.
- */
-void PhysxBodyDesc::
-set_flag(const PhysxBodyFlag flag, bool value) {
-
-  if (value == true) {
-    _desc.flags |= flag;
-  }
-  else {
-    _desc.flags &= ~(flag);
-  }
-}
-
-/**
- * Returns the specified body flag.
- */
-bool PhysxBodyDesc::
-get_flag(const PhysxBodyFlag flag) const {
-
-  return (_desc.flags & flag) ? true : false;
-}
-
-/**
- * When CCD is globally enabled, it is still not performed if the motion
- * distance of all points on the body is below this threshold.
- */
-void PhysxBodyDesc::
-set_ccd_motion_threshold(float threshold) {
-
-  _desc.CCDMotionThreshold = threshold;
-}
-
-/**
- *
- */
-float PhysxBodyDesc::
-get_ccd_motion_threshold() const {
-
-  return _desc.CCDMotionThreshold;
-}
-
-/**
- * Set the body's initial wake up counter.
- */
-void PhysxBodyDesc::
-set_wake_up_counter(float value) {
-
-  _desc.wakeUpCounter = value;
-}
-
-/**
- *
- */
-float PhysxBodyDesc::
-get_wake_up_counter() const {
-
-  return _desc.wakeUpCounter;
-}
-
-/**
- * Set The force threshold for contact reports.
- */
-void PhysxBodyDesc::
-set_contact_report_threshold(float threshold) {
-
-  _desc.contactReportThreshold = threshold;
-}
-
-/**
- *
- */
-float PhysxBodyDesc::
-get_contact_report_threshold() const {
-
-  return _desc.contactReportThreshold;
-}

+ 0 - 77
panda/src/physx/physxBodyDesc.h

@@ -1,77 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBodyDesc.h
- * @author enn0x
- * @date 2009-09-05
- */
-
-#ifndef PHYSXBODYDESC_H
-#define PHYSXBODYDESC_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxEnums.h"
-#include "physx_includes.h"
-
-/**
- * Descriptor for the optional rigid body dynamic state of PhysxActor.
- */
-class EXPCL_PANDAPHYSX PhysxBodyDesc : public PhysxEnums {
-
-PUBLISHED:
-  INLINE PhysxBodyDesc();
-  INLINE ~PhysxBodyDesc();
-
-  INLINE void set_to_default();
-  INLINE bool is_valid() const;
-
-  void set_mass(float mass);
-  void set_linear_damping(float damping);
-  void set_angular_damping(float damping);
-  void set_linear_velocity(const LVector3f &velocity);
-  void set_angular_velocity(const LVector3f &velocity);
-  void set_max_angular_velocity(float maximum);
-  void set_sleep_linear_velocity(float velocity);
-  void set_sleep_angular_velocity(float velocity);
-  void set_solver_iteration_count(unsigned int count);
-  void set_sleep_energy_threshold(float threshold);
-  void set_sleep_damping(float damping);
-  void set_mass_local_mat(const LMatrix4f &mat);
-  void set_mass_space_inertia(const LVector3f &inertia);
-  void set_flag(PhysxBodyFlag flag, bool value);
-  void set_ccd_motion_threshold(float threshold);
-  void set_wake_up_counter(float value);
-  void set_contact_report_threshold(float threshold);
-
-  float get_mass() const;
-  float get_linear_damping() const;
-  float get_angular_damping() const;
-  LVector3f get_linear_velocity() const;
-  LVector3f get_angular_velocity() const;
-  float get_max_angular_velocity() const;
-  float get_sleep_linear_velocity() const;
-  float get_sleep_angular_velocity() const;
-  unsigned int get_solver_iteration_count() const;
-  float get_sleep_energy_threshold() const;
-  float get_sleep_damping() const;
-  LMatrix4f get_mass_local_mat() const;
-  LVector3f get_mass_space_inertia() const;
-  bool get_flag(PhysxBodyFlag flag) const;
-  float get_ccd_motion_threshold() const;
-  float get_wake_up_counter() const;
-  float get_contact_report_threshold() const;
-
-public:
-  NxBodyDesc _desc;
-};
-
-#include "physxBodyDesc.I"
-
-#endif // PHYSXBODYDESC_H

+ 0 - 28
panda/src/physx/physxBounds3.I

@@ -1,28 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBounds3.I
- * @author enn0x
- * @date 2009-10-31
- */
-
-/**
- *
- */
-INLINE PhysxBounds3::
-PhysxBounds3() {
-
-}
-
-/**
- *
- */
-INLINE PhysxBounds3::
-~PhysxBounds3() {
-
-}

+ 0 - 229
panda/src/physx/physxBounds3.cxx

@@ -1,229 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBounds3.cxx
- * @author enn0x
- * @date 2009-10-31
- */
-
-#include "physxBounds3.h"
-#include "physxManager.h"
-
-/**
- * Returns the minimum corner of the bounding box.
- */
-LPoint3f PhysxBounds3::
-get_max() const {
-
-  return PhysxManager::nxVec3_to_point3(_bounds.max);
-}
-
-/**
- * Returns the maximum corner of the bounding box.
- */
-LPoint3f PhysxBounds3::
-get_min() const {
-
-  return PhysxManager::nxVec3_to_point3(_bounds.min);
-}
-
-/**
- * Returns the center of the bounding box.
- */
-LPoint3f PhysxBounds3::
-get_center() const {
-
-  NxVec3 center;
-  _bounds.getCenter(center);
-  return PhysxManager::nxVec3_to_point3(center);
-}
-
-/**
- * Returns the extents of the bounding box.
- */
-LVector3f PhysxBounds3::
-get_dimensions() const {
-
-  NxVec3 dims;
-  _bounds.getDimensions(dims);
-  return PhysxManager::nxVec3_to_vec3(dims);
-}
-
-/**
- * Sets the maximum corner of the bounding box.
- */
-void PhysxBounds3::
-set_max(LPoint3f value) {
-
-  nassertv(!value.is_nan());
-
-  _bounds.max = PhysxManager::point3_to_nxVec3(value);
-}
-
-/**
- * Sets the minimum corner of the bounding box.
- */
-void PhysxBounds3::
-set_min(LPoint3f value) {
-
-  nassertv(!value.is_nan());
-
-  _bounds.min = PhysxManager::point3_to_nxVec3(value);
-}
-
-/**
- * Sets this to the AABB (axis ligned bounding box) of the OBB (oriented
- * bounding box). The OBB is described by orientation, translation and half
- * dimensions.
- */
-void PhysxBounds3::
-bounds_of_obb(const LMatrix3f &orientation, const LPoint3f &translation, const LVector3f &half_dims) {
-
-  nassertv(!orientation.is_nan());
-  nassertv(!translation.is_nan());
-  nassertv(!half_dims.is_nan());
-
-  _bounds.boundsOfOBB(PhysxManager::mat3_to_nxMat33(orientation),
-                      PhysxManager::point3_to_nxVec3(translation),
-                      PhysxManager::vec3_to_nxVec3(half_dims));
-}
-
-/**
- * Sets this to the union of this and b2.
- */
-void PhysxBounds3::
-combine(const PhysxBounds3 &b2) {
-
-  _bounds.combine(b2._bounds);
-}
-
-/**
- * Returns TRUE if these bounds contain the point v.
- */
-bool PhysxBounds3::
-contain(const LPoint3f &p) const {
-
-  nassertr(!p.is_nan(), false);
-
-  return _bounds.contain(PhysxManager::point3_to_nxVec3(p));
-}
-
-/**
- * Fattens the AABB in all three dimensions by the given distance.
- */
-void PhysxBounds3::
-fatten(float distance) {
-
-  _bounds.fatten(distance);
-}
-
-/**
- * Expands the volume to include the point v.
- */
-void PhysxBounds3::
-include(const LPoint3f &p) {
-
-  nassertv(!p.is_nan());
-  _bounds.include(PhysxManager::point3_to_nxVec3(p));
-}
-
-/**
- * Returns TRUE if the intersection of this and b is is not empty.
- */
-bool PhysxBounds3::
-intersects(const PhysxBounds3 &b) const {
-
-  return _bounds.intersects(b._bounds);
-}
-
-/**
- * Indicates whether the intersection of this and b is empty or not in the
- * plane orthogonal to the axis passed (X = 0, Y = 1 or Z = 2).
- */
-bool PhysxBounds3::
-intersects2d(const PhysxBounds3 &b, unsigned axis_to_ignore) const {
-
-  return _bounds.intersects2D(b._bounds, axis_to_ignore);
-}
-
-/**
- * Returns TRUE if the bounding box is empty.
- */
-bool PhysxBounds3::
-is_empty() const {
-
-  return _bounds.isEmpty();
-}
-
-/**
- * Scales the AABB by the given factor.
- */
-void PhysxBounds3::
-scale(float scale) {
-
-  _bounds.scale(scale);
-}
-
-/**
- * Setup this AABB from minimum corner and maximum corner.
- */
-void PhysxBounds3::
-set(const LPoint3f &min, const LPoint3f &max) {
-
-  nassertv(!min.is_nan());
-  nassertv(!max.is_nan());
-
-  _bounds.set(PhysxManager::point3_to_nxVec3(min),
-              PhysxManager::point3_to_nxVec3(max));
-}
-
-/**
- * Setup this AABB from center point and extents vector.
- */
-void PhysxBounds3::
-set_center_extents(const LPoint3f &center, const LVector3f &extents) {
-
-  nassertv(!center.is_nan());
-  nassertv(!extents.is_nan());
-
-  _bounds.setCenterExtents(PhysxManager::point3_to_nxVec3(center),
-                           PhysxManager::vec3_to_nxVec3(extents));
-}
-
-/**
- * Sets empty to TRUE.
- */
-void PhysxBounds3::
-set_empty() {
-
-  _bounds.setEmpty();
-}
-
-/**
- * Sets infinite bounds.
- */
-void PhysxBounds3::
-set_infinite() {
-
-  _bounds.setInfinite();
-}
-
-/**
- * Transforms this volume as if it was an axis aligned bounding box, and then
- * assigns the results' bounds to this.  The orientation is applied first,
- * then the translation.
- */
-void PhysxBounds3::
-transform(const LMatrix3f &orientation, const LPoint3f &translation) {
-
-  nassertv(!orientation.is_nan());
-  nassertv(!translation.is_nan());
-
-  _bounds.transform(PhysxManager::mat3_to_nxMat33(orientation),
-                    PhysxManager::point3_to_nxVec3(translation));
-}

+ 0 - 64
panda/src/physx/physxBounds3.h

@@ -1,64 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBounds3.h
- * @author enn0x
- * @date 2009-10-31
- */
-
-#ifndef PHYSXBOUNDS3_H
-#define PHYSXBOUNDS3_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "config_physx.h"
-#include "physx_includes.h"
-
-/**
- * Represention of a axis aligned bounding box.  The box is stored as minimum
- * and maximum extent corners.  Alternate representation would be center and
- * dimensions.  May be empty or nonempty.  If not empty, min <= max has to
- * hold.
- */
-class EXPCL_PANDAPHYSX PhysxBounds3 {
-
-PUBLISHED:
-  INLINE PhysxBounds3();
-  INLINE ~PhysxBounds3();
-
-  void bounds_of_obb(const LMatrix3f &orientation, const LPoint3f &translation, const LVector3f &half_dims);
-  void combine(const PhysxBounds3 &b2);
-  bool contain(const LPoint3f &p) const;
-  void fatten(float distance);
-  void include(const LPoint3f &v);
-  bool intersects(const PhysxBounds3 &b) const;
-  bool intersects2d(const PhysxBounds3 &b, unsigned axis_to_ignore) const;
-  bool is_empty() const;
-  void scale(float scale);
-  void set(const LPoint3f &min, const LPoint3f &max);
-  void set_center_extents(const LPoint3f &center, const LVector3f &extents);
-  void set_empty();
-  void set_infinite();
-  void transform(const LMatrix3f &orientation, const LPoint3f &translation);
-
-  LPoint3f get_max() const;
-  LPoint3f get_min() const;
-  LPoint3f get_center() const;
-  LVector3f get_dimensions() const;
-
-  void set_max(LPoint3f value);
-  void set_min(LPoint3f value);
-
-public:
-  NxBounds3 _bounds;
-};
-
-#include "physxBounds3.I"
-
-#endif // PHYSBOUNDS3_H

+ 0 - 28
panda/src/physx/physxBox.I

@@ -1,28 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBox.I
- * @author enn0x
- * @date 2009-10-31
- */
-
-/**
- *
- */
-INLINE PhysxBox::
-PhysxBox() {
-
-}
-
-/**
- *
- */
-INLINE PhysxBox::
-~PhysxBox() {
-
-}

+ 0 - 115
panda/src/physx/physxBox.cxx

@@ -1,115 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBox.cxx
- * @author enn0x
- * @date 2009-10-31
- */
-
-#include "physxBox.h"
-#include "physxManager.h"
-
-/**
- *
- */
-PhysxBox::
-PhysxBox(const LPoint3f &center, const LVector3f &extents, const LMatrix3f &rot) {
-
-  _box = NxBox(PhysxManager::point3_to_nxVec3(center),
-               PhysxManager::vec3_to_nxVec3(extents),
-               PhysxManager::mat3_to_nxMat33(rot));
-}
-
-/**
- * Returns TRUE if the box is valid.
- */
-bool PhysxBox::
-is_valid() const {
-
-  return _box.isValid();
-}
-
-/**
- * Recomputes the box after an arbitrary transform by a 4x4 matrix.
- */
-void PhysxBox::
-rotate(const LMatrix4f &m, PhysxBox &obb) const {
-
-  nassertv(!m.is_nan());
-
-  _box.rotate(PhysxManager::mat4_to_nxMat34(m), obb._box);
-}
-
-/**
- * Setups an empty box.
- */
-void PhysxBox::
-set_empty() {
-
-  _box.setEmpty();
-}
-
-/**
- * Return center of the box.
- */
-LPoint3f PhysxBox::
-get_center() const {
-
-  return PhysxManager::nxVec3_to_point3(_box.GetCenter());
-}
-
-/**
- * Returns the extents (radii) of the box.
- */
-LVector3f PhysxBox::
-get_extents() const {
-
-  return PhysxManager::nxVec3_to_vec3(_box.GetExtents());
-}
-
-/**
- * Return the rotation of the box.
- */
-LMatrix3f PhysxBox::
-get_rot() const {
-
-  return PhysxManager::nxMat33_to_mat3(_box.GetRot());
-}
-
-/**
- * Sets the center of the box.
- */
-void PhysxBox::
-set_center(LPoint3f center) {
-
-  nassertv(!center.is_nan());
-
-  _box.center = PhysxManager::vec3_to_nxVec3(center);
-}
-
-/**
- * Sets the extents of the box.
- */
-void PhysxBox::
-set_extents(LVector3f extents) {
-
-  nassertv(!extents.is_nan());
-
-  _box.extents = PhysxManager::vec3_to_nxVec3(extents);
-}
-
-/**
- * Sets the rotation of the box.
- */
-void PhysxBox::
-set_rot(LMatrix3f rot) {
-
-  nassertv(!rot.is_nan());
-
-  _box.rot = PhysxManager::mat3_to_nxMat33(rot);
-}

+ 0 - 54
panda/src/physx/physxBox.h

@@ -1,54 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBox.h
- * @author enn0x
- * @date 2009-10-31
- */
-
-#ifndef PHYSXBOX_H
-#define PHYSXBOX_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "config_physx.h"
-#include "physx_includes.h"
-
-/**
- * Represents an oriented bounding box, as a center point, extents(radii) and
- * a rotation.  i.e.  the center of the box is at the center point, the box is
- * rotated around this point with the rotation and it is 2*extents in width,
- * height and depth.
- */
-class EXPCL_PANDAPHYSX PhysxBox {
-
-PUBLISHED:
-  INLINE PhysxBox();
-  INLINE ~PhysxBox();
-  PhysxBox(const LPoint3f &center, const LVector3f &extents, const LMatrix3f &rot);
-
-  bool is_valid() const;
-  void rotate(const LMatrix4f &m, PhysxBox &obb) const;
-  void set_empty();
-
-  LPoint3f get_center() const;
-  LVector3f get_extents() const;
-  LMatrix3f get_rot() const;
-
-  void set_center(LPoint3f center);
-  void set_extents(LVector3f extents);
-  void set_rot(LMatrix3f rot);
-
-public:
-  NxBox _box;
-};
-
-#include "physxBox.I"
-
-#endif // PHYSBOX_H

+ 0 - 28
panda/src/physx/physxBoxController.I

@@ -1,28 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxController.I
- * @author enn0x
- * @date 2009-09-24
- */
-
-/**
- *
- */
-INLINE PhysxBoxController::
-PhysxBoxController() : PhysxController() {
-
-}
-
-/**
- *
- */
-INLINE PhysxBoxController::
-~PhysxBoxController() {
-
-}

+ 0 - 75
panda/src/physx/physxBoxController.cxx

@@ -1,75 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxController.cxx
- * @author enn0x
- * @date 2009-09-24
- */
-
-#include "physxBoxController.h"
-#include "physxManager.h"
-
-TypeHandle PhysxBoxController::_type_handle;
-
-/**
- *
- */
-void PhysxBoxController::
-link(NxController *controllerPtr) {
-
-  nassertv(controllerPtr->getType() == NX_CONTROLLER_BOX);
-
-  // Link self
-  _ptr = (NxBoxController *)controllerPtr;
-  _error_type = ET_ok;
-
-  PhysxScene *scene = (PhysxScene *)_ptr->getActor()->getScene().userData;
-  scene->_controllers.add(this);
-
-  // Link actor
-  PT(PhysxActor) actor = new PhysxActor();
-  actor->link(_ptr->getActor());
-  actor->link_controller(this);
-}
-
-/**
- *
- */
-void PhysxBoxController::
-unlink() {
-
-  // Unlink actor
-  PT(PhysxActor) actor = (PhysxActor *)ptr()->getActor()->userData;
-  actor->unlink();
-
-  // Unlink self
-  _error_type = ET_released;
-
-  PhysxScene *scene = (PhysxScene *)_ptr->getActor()->getScene().userData;
-  scene->_controllers.remove(this);
-}
-
-/**
- * Sets controller's extents.
- */
-void PhysxBoxController::
-set_extents(const LVector3f &extents) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setExtents(PhysxManager::vec3_to_nxVec3(extents));
-}
-
-/**
- * Returns controller's extents.
- */
-LVector3f PhysxBoxController::
-get_extents() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getExtents());
-}

+ 0 - 67
panda/src/physx/physxBoxController.h

@@ -1,67 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxController.h
- * @author enn0x
- * @date 2009-09-24
- */
-
-#ifndef PHYSXBOXCONTROLLER_H
-#define PHYSXBOXCONTROLLER_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxController.h"
-#include "physx_includes.h"
-
-/**
- * Box character controller.
- */
-class EXPCL_PANDAPHYSX PhysxBoxController : public PhysxController {
-
-PUBLISHED:
-  INLINE PhysxBoxController();
-  INLINE ~PhysxBoxController();
-
-  void set_extents(const LVector3f &extents);
-  LVector3f get_extents() const;
-
-public:
-  INLINE NxController *ptr() const { return (NxController *)_ptr; };
-
-  void link(NxController *controllerPtr);
-  void unlink();
-
-private:
-  NxBoxController *_ptr;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxController::init_type();
-    register_type(_type_handle, "PhysxBoxController",
-                  PhysxController::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxBoxController.I"
-
-#endif // PHYSXBOXCONTROLLER_H

+ 0 - 47
panda/src/physx/physxBoxControllerDesc.I

@@ -1,47 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxControllerDesc.I
- * @author enn0x
- * @date 2009-09-22
- */
-
-/**
- *
- */
-INLINE PhysxBoxControllerDesc::
-PhysxBoxControllerDesc() : PhysxControllerDesc() {
-
-  _desc.upDirection = (NxHeightFieldAxis)physx_up_axis.get_value();
-}
-
-/**
- *
- */
-INLINE PhysxBoxControllerDesc::
-~PhysxBoxControllerDesc() {
-
-}
-
-/**
- * (re)sets the structure to the default.
- */
-INLINE void PhysxBoxControllerDesc::
-set_to_default() {
-
-  _desc.setToDefault();
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxBoxControllerDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 36
panda/src/physx/physxBoxControllerDesc.cxx

@@ -1,36 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxControllerDesc.cxx
- * @author enn0x
- * @date 2009-09-22
- */
-
-#include "physxBoxControllerDesc.h"
-#include "physxManager.h"
-
-/**
- * Sets the dimensions of the box.
- *
- * The dimensions are the 'radii' of the box, meaning 1/2 extents in x
- * dimension, 1/2 extents in y dimension, 1/2 extents in z dimension.
- */
-void PhysxBoxControllerDesc::
-set_extents(const LVector3f &extents) {
-
-  _desc.extents = PhysxManager::vec3_to_nxVec3(extents);
-}
-
-/**
- * Returns the dimensions of the box.
- */
-LVector3f PhysxBoxControllerDesc::
-get_extents() const {
-
-  return PhysxManager::nxVec3_to_vec3(_desc.extents);
-}

+ 0 - 46
panda/src/physx/physxBoxControllerDesc.h

@@ -1,46 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxControllerDesc.h
- * @author enn0x
- * @date 2009-09-22
- */
-
-#ifndef PHYSXBOXCONTROLLERDESC_H
-#define PHYSXBOXCONTROLLERDESC_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxControllerDesc.h"
-#include "physx_includes.h"
-
-/**
- * Descriptor class for PhysxBoxController.
- */
-class EXPCL_PANDAPHYSX PhysxBoxControllerDesc : public PhysxControllerDesc {
-
-PUBLISHED:
-  INLINE PhysxBoxControllerDesc();
-  INLINE ~PhysxBoxControllerDesc();
-
-  INLINE void set_to_default();
-  INLINE bool is_valid() const;
-
-  void set_extents(const LVector3f &extents);
-
-  LVector3f get_extents() const;
-
-public:
-  NxControllerDesc *ptr() const { return (NxControllerDesc *)&_desc; };
-  NxBoxControllerDesc _desc;
-};
-
-#include "physxBoxControllerDesc.I"
-
-#endif // PHYSXBOXCONTROLLERDESC_H

+ 0 - 28
panda/src/physx/physxBoxForceFieldShape.I

@@ -1,28 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxForceFieldShape.I
- * @author enn0x
- * @date 2009-11-15
- */
-
-/**
- *
- */
-INLINE PhysxBoxForceFieldShape::
-PhysxBoxForceFieldShape() : PhysxForceFieldShape() {
-
-}
-
-/**
- *
- */
-INLINE PhysxBoxForceFieldShape::
-~PhysxBoxForceFieldShape() {
-
-}

+ 0 - 83
panda/src/physx/physxBoxForceFieldShape.cxx

@@ -1,83 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxForceFieldShape.cxx
- * @author enn0x
- * @date 2009-11-15
- */
-
-#include "physxBoxForceFieldShape.h"
-#include "physxBoxForceFieldShapeDesc.h"
-#include "physxManager.h"
-
-TypeHandle PhysxBoxForceFieldShape::_type_handle;
-
-/**
- *
- */
-void PhysxBoxForceFieldShape::
-link(NxForceFieldShape *shapePtr) {
-
-  _ptr = shapePtr->isBox();
-  _ptr->userData = this;
-  _error_type = ET_ok;
-
-  set_name(shapePtr->getName());
-
-  PhysxForceFieldShapeGroup *group = (PhysxForceFieldShapeGroup *)_ptr->getShapeGroup().userData;
-  group->_shapes.add(this);
-}
-
-/**
- *
- */
-void PhysxBoxForceFieldShape::
-unlink() {
-
-  _ptr->userData = nullptr;
-  _error_type = ET_released;
-
-  PhysxForceFieldShapeGroup *group = (PhysxForceFieldShapeGroup *)_ptr->getShapeGroup().userData;
-  group->_shapes.remove(this);
-}
-
-/**
- * Saves the state of the shape object to a descriptor.
- */
-void PhysxBoxForceFieldShape::
-save_to_desc(PhysxBoxForceFieldShapeDesc &shapeDesc) const {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->saveToDesc(shapeDesc._desc);
-}
-
-/**
- * Sets the box dimensions.
- *
- * The dimensions are the 'radii' of the box, meaning 1/2 extents in x
- * dimension, 1/2 extents in y dimension, 1/2 extents in z dimension.
- */
-void PhysxBoxForceFieldShape::
-set_dimensions(const LVector3f &vec) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setDimensions(PhysxManager::vec3_to_nxVec3(vec));
-}
-
-/**
- * Retrieves the dimensions of the box.
- *
- * The dimensions are the 'radii' of the box, meaning 1/2 extents in x
- * dimension, 1/2 extents in y dimension, 1/2 extents in z dimension.
- */
-LVector3f PhysxBoxForceFieldShape::
-get_dimensions() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getDimensions());
-}

+ 0 - 70
panda/src/physx/physxBoxForceFieldShape.h

@@ -1,70 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxForceFieldShape.h
- * @author enn0x
- * @date 2009-11-15
- */
-
-#ifndef PHYSXBOXFORCEFIELDSHAPE_H
-#define PHYSXBOXFORCEFIELDSHAPE_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxForceFieldShape.h"
-#include "physx_includes.h"
-
-class PhysxBoxForceFieldShapeDesc;
-
-/**
- * A box shaped region used to define a force field.
- */
-class EXPCL_PANDAPHYSX PhysxBoxForceFieldShape : public PhysxForceFieldShape {
-PUBLISHED:
-  INLINE PhysxBoxForceFieldShape();
-  INLINE ~PhysxBoxForceFieldShape();
-
-  void save_to_desc(PhysxBoxForceFieldShapeDesc &shapeDesc) const;
-
-  void set_dimensions(const LVector3f &dimensions);
-  LVector3f get_dimensions() const;
-
-public:
-  INLINE NxForceFieldShape *ptr() const { return (NxForceFieldShape *)_ptr; };
-
-  void link(NxForceFieldShape *shapePtr);
-  void unlink();
-
-private:
-  NxBoxForceFieldShape *_ptr;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxForceFieldShape::init_type();
-    register_type(_type_handle, "PhysxBoxForceFieldShape",
-                  PhysxForceFieldShape::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxBoxForceFieldShape.I"
-
-#endif // PHYSXBOXFORCEFIELDSHAPE_H

+ 0 - 48
panda/src/physx/physxBoxForceFieldShapeDesc.I

@@ -1,48 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxForceFieldShapeDesc.I
- * @author enn0x
- * @date 2009-11-06
- */
-
-/**
- *
- */
-INLINE PhysxBoxForceFieldShapeDesc::
-PhysxBoxForceFieldShapeDesc() : PhysxForceFieldShapeDesc() {
-
-  set_to_default();
-}
-
-/**
- *
- */
-INLINE PhysxBoxForceFieldShapeDesc::
-~PhysxBoxForceFieldShapeDesc() {
-
-}
-
-/**
- * (re)sets the structure to the default.
- */
-INLINE void PhysxBoxForceFieldShapeDesc::
-set_to_default() {
-
-  _desc.setToDefault();
-  set_name("");
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxBoxForceFieldShapeDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 37
panda/src/physx/physxBoxForceFieldShapeDesc.cxx

@@ -1,37 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxForceFieldShapeDesc.cxx
- * @author enn0x
- * @date 2009-11-06
- */
-
-#include "physxBoxForceFieldShapeDesc.h"
-#include "physxManager.h"
-
-/**
- * Sets the dimensions of the box.
- *
- * The dimensions are the 'radii' of the box, meaning 1/2 extents in x
- * dimension, 1/2 extents in y dimension, 1/2 extents in z dimension.
- */
-void PhysxBoxForceFieldShapeDesc::
-set_dimensions(const LVector3f &dimensions) {
-
-  nassertv(!dimensions.is_nan());
-  _desc.dimensions = PhysxManager::vec3_to_nxVec3(dimensions);
-}
-
-/**
- * Returns the dimensions of the box.
- */
-LVector3f PhysxBoxForceFieldShapeDesc::
-get_dimensions() const {
-
-  return PhysxManager::nxVec3_to_vec3(_desc.dimensions);
-}

+ 0 - 46
panda/src/physx/physxBoxForceFieldShapeDesc.h

@@ -1,46 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxForceFieldShapeDesc.h
- * @author enn0x
- * @date 2009-11-06
- */
-
-#ifndef PHYSXBOXFORCEFIELDSHAPEDESC_H
-#define PHYSXBOXFORCEFIELDSHAPEDESC_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxForceFieldShapeDesc.h"
-#include "physx_includes.h"
-
-/**
- * Descriptor for a box force field shape.
- */
-class EXPCL_PANDAPHYSX PhysxBoxForceFieldShapeDesc : public PhysxForceFieldShapeDesc {
-
-PUBLISHED:
-  INLINE PhysxBoxForceFieldShapeDesc();
-  INLINE ~PhysxBoxForceFieldShapeDesc();
-
-  INLINE void set_to_default();
-  INLINE bool is_valid() const;
-
-  void set_dimensions(const LVector3f &dimensions);
-
-  LVector3f get_dimensions() const;
-
-public:
-  NxForceFieldShapeDesc *ptr() const { return (NxForceFieldShapeDesc *)&_desc; };
-  NxBoxForceFieldShapeDesc _desc;
-};
-
-#include "physxBoxForceFieldShapeDesc.I"
-
-#endif // PHYSXBOXFORCEFIELDSHAPEDESC_H

+ 0 - 28
panda/src/physx/physxBoxShape.I

@@ -1,28 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxShape.I
- * @author enn0x
- * @date 2009-09-16
- */
-
-/**
- *
- */
-INLINE PhysxBoxShape::
-PhysxBoxShape() : PhysxShape() {
-
-}
-
-/**
- *
- */
-INLINE PhysxBoxShape::
-~PhysxBoxShape() {
-
-}

+ 0 - 83
panda/src/physx/physxBoxShape.cxx

@@ -1,83 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxShape.cxx
- * @author enn0x
- * @date 2009-09-16
- */
-
-#include "physxBoxShape.h"
-#include "physxBoxShapeDesc.h"
-#include "physxManager.h"
-
-TypeHandle PhysxBoxShape::_type_handle;
-
-/**
- *
- */
-void PhysxBoxShape::
-link(NxShape *shapePtr) {
-
-  _ptr = shapePtr->isBox();
-  _ptr->userData = this;
-  _error_type = ET_ok;
-
-  set_name(shapePtr->getName());
-
-  PhysxActor *actor = (PhysxActor *)_ptr->getActor().userData;
-  actor->_shapes.add(this);
-}
-
-/**
- *
- */
-void PhysxBoxShape::
-unlink() {
-
-  _ptr->userData = nullptr;
-  _error_type = ET_released;
-
-  PhysxActor *actor = (PhysxActor *)_ptr->getActor().userData;
-  actor->_shapes.remove(this);
-}
-
-/**
- * Saves the state of the shape object to a descriptor.
- */
-void PhysxBoxShape::
-save_to_desc(PhysxBoxShapeDesc &shapeDesc) const {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->saveToDesc(shapeDesc._desc);
-}
-
-/**
- * Sets the box dimensions.
- *
- * The dimensions are the 'radii' of the box, meaning 1/2 extents in x
- * dimension, 1/2 extents in y dimension, 1/2 extents in z dimension.
- */
-void PhysxBoxShape::
-set_dimensions(const LVector3f &vec) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setDimensions(PhysxManager::vec3_to_nxVec3(vec));
-}
-
-/**
- * Retrieves the dimensions of the box.
- *
- * The dimensions are the 'radii' of the box, meaning 1/2 extents in x
- * dimension, 1/2 extents in y dimension, 1/2 extents in z dimension.
- */
-LVector3f PhysxBoxShape::
-get_dimensions() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getDimensions());
-}

+ 0 - 79
panda/src/physx/physxBoxShape.h

@@ -1,79 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxShape.h
- * @author enn0x
- * @date 2009-09-16
- */
-
-#ifndef PHYSXBOXSHAPE_H
-#define PHYSXBOXSHAPE_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxShape.h"
-#include "physx_includes.h"
-
-class PhysxBoxShapeDesc;
-
-/**
- * A box shaped collision detection primitive.  Each shape is owned by the
- * actor which it is attached to.
- *
- * An instance can be created by calling the createShape() method of the
- * PhysxActor object that will own it, with a PhysxBoxShapeDesc object as the
- * parameter, or by adding the shape descriptor to the PhysxActorDesc class
- * before creating the actor.
- *
- * The shape is deleted by calling release() on the shape itself.
- */
-class EXPCL_PANDAPHYSX PhysxBoxShape : public PhysxShape {
-
-PUBLISHED:
-  INLINE PhysxBoxShape();
-  INLINE ~PhysxBoxShape();
-
-  void save_to_desc(PhysxBoxShapeDesc &shapeDesc) const;
-
-  void set_dimensions(const LVector3f &dimensions);
-  LVector3f get_dimensions() const;
-
-public:
-  INLINE NxShape *ptr() const { return (NxShape *)_ptr; };
-
-  void link(NxShape *shapePtr);
-  void unlink();
-
-private:
-  NxBoxShape *_ptr;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxShape::init_type();
-    register_type(_type_handle, "PhysxBoxShape",
-                  PhysxShape::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxBoxShape.I"
-
-#endif // PHYSXBOXSHAPE_H

+ 0 - 48
panda/src/physx/physxBoxShapeDesc.I

@@ -1,48 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxShapeDesc.I
- * @author enn0x
- * @date 2009-09-08
- */
-
-/**
- *
- */
-INLINE PhysxBoxShapeDesc::
-PhysxBoxShapeDesc() : PhysxShapeDesc() {
-
-  set_to_default();
-}
-
-/**
- *
- */
-INLINE PhysxBoxShapeDesc::
-~PhysxBoxShapeDesc() {
-
-}
-
-/**
- * (re)sets the structure to the default.
- */
-INLINE void PhysxBoxShapeDesc::
-set_to_default() {
-
-  _desc.setToDefault();
-  set_name("");
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxBoxShapeDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 37
panda/src/physx/physxBoxShapeDesc.cxx

@@ -1,37 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxShapeDesc.cxx
- * @author enn0x
- * @date 2009-09-08
- */
-
-#include "physxBoxShapeDesc.h"
-#include "physxManager.h"
-
-/**
- * Sets the dimensions of the box.
- *
- * The dimensions are the 'radii' of the box, meaning 1/2 extents in x
- * dimension, 1/2 extents in y dimension, 1/2 extents in z dimension.
- */
-void PhysxBoxShapeDesc::
-set_dimensions(const LVector3f &dimensions) {
-
-  nassertv(!dimensions.is_nan());
-  _desc.dimensions = PhysxManager::vec3_to_nxVec3(dimensions);
-}
-
-/**
- * Returns the dimensions of the box.
- */
-LVector3f PhysxBoxShapeDesc::
-get_dimensions() const {
-
-  return PhysxManager::nxVec3_to_vec3(_desc.dimensions);
-}

+ 0 - 46
panda/src/physx/physxBoxShapeDesc.h

@@ -1,46 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxBoxShapeDesc.h
- * @author enn0x
- * @date 2009-09-08
- */
-
-#ifndef PHYSXBOXSHAPEDESC_H
-#define PHYSXBOXSHAPEDESC_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxShapeDesc.h"
-#include "physx_includes.h"
-
-/**
- * Descriptor class for PhysxBoxShape.
- */
-class EXPCL_PANDAPHYSX PhysxBoxShapeDesc : public PhysxShapeDesc {
-
-PUBLISHED:
-  INLINE PhysxBoxShapeDesc();
-  INLINE ~PhysxBoxShapeDesc();
-
-  INLINE void set_to_default();
-  INLINE bool is_valid() const;
-
-  void set_dimensions(const LVector3f &dimensions);
-
-  LVector3f get_dimensions() const;
-
-public:
-  NxShapeDesc *ptr() const { return (NxShapeDesc *)&_desc; };
-  NxBoxShapeDesc _desc;
-};
-
-#include "physxBoxShapeDesc.I"
-
-#endif // PHYSXBOXSHAPEDESC_H

+ 0 - 37
panda/src/physx/physxCapsule.I

@@ -1,37 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsule.I
- * @author enn0x
- * @date 2009-10-31
- */
-
-/**
- *
- */
-INLINE PhysxCapsule::
-PhysxCapsule() {
-
-}
-
-/**
- *
- */
-INLINE PhysxCapsule::
-PhysxCapsule(const PhysxSegment &segment, float radius) {
-
-  _capsule = NxCapsule(segment._segment, radius);
-}
-
-/**
- *
- */
-INLINE PhysxCapsule::
-~PhysxCapsule() {
-
-}

+ 0 - 141
panda/src/physx/physxCapsule.cxx

@@ -1,141 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsule.cxx
- * @author enn0x
- * @date 2009-10-31
- */
-
-#include "physxCapsule.h"
-#include "physxManager.h"
-
-/**
- * Returns the capsule's radius.
- */
-float PhysxCapsule::
-get_radius() const {
-
-  return _capsule.radius;
-}
-
-/**
- * Sets the capsule's radius.
- */
-void PhysxCapsule::
-set_radius(float radius) {
-
-  _capsule.radius = radius;
-}
-
-/**
- * Returns the start point of the segment.
- */
-LPoint3f PhysxCapsule::
-get_p0() const {
-
-  return PhysxManager::nxVec3_to_vec3(_capsule.p0);
-}
-
-/**
- * Sets the start point of the segment.
- */
-void PhysxCapsule::
-set_p0(LPoint3f p) {
-
-  nassertv(!p.is_nan());
-
-  _capsule.p0 = PhysxManager::vec3_to_nxVec3(p);
-}
-
-/**
- * Returns the end point of the segment.
- */
-LPoint3f PhysxCapsule::
-get_p1() const {
-
-  return PhysxManager::nxVec3_to_vec3(_capsule.p1);
-}
-
-/**
- * Sets the end point of the segment.
- */
-void PhysxCapsule::
-set_p1(LPoint3f p) {
-
-  nassertv(!p.is_nan());
-
-  _capsule.p1 = PhysxManager::vec3_to_nxVec3(p);
-}
-
-/**
- * Returns the start point of the segment.
- */
-LPoint3f PhysxCapsule::
-get_origin() const {
-
-  return PhysxManager::nxVec3_to_point3(_capsule.getOrigin());
-}
-
-/**
- * Returns the direction vector from the segment's start point to it's end
- * point.
- */
-void PhysxCapsule::
-compute_direction(LPoint3f &dir) const {
-
-  nassertv(!dir.is_nan());
-
-  NxVec3 nDir = PhysxManager::point3_to_nxVec3(dir);
-  _capsule.computeDirection(nDir);
-  PhysxManager::update_point3_from_nxVec3(dir, nDir);
-}
-
-/**
- * Returns the distance from the segment's start point to it's end point.
- */
-float PhysxCapsule::
-compute_length() const {
-
-  return _capsule.computeLength();
-}
-
-/**
- * Computes a point on the segment.
- */
-void PhysxCapsule::
-compute_point(LPoint3f &p, float t) const {
-
-  nassertv(!p.is_nan());
-
-  NxVec3 nP = PhysxManager::point3_to_nxVec3(p);
-  _capsule.computePoint(nP, t);
-  PhysxManager::update_point3_from_nxVec3(p, nP);
-}
-
-/**
- * Returns the square distance from the segment's start point to it's end
- * point.
- */
-float PhysxCapsule::
-compute_square_length() const {
-
-  return _capsule.computeSquareLength();
-}
-
-/**
- * Setup this capsule from origin (start point) and direction vector.
- */
-void PhysxCapsule::
-set_origin_direction(const LPoint3f &origin, const LVector3f &direction) {
-
-  nassertv(!origin.is_nan());
-  nassertv(!direction.is_nan());
-
-  _capsule.setOriginDirection(PhysxManager::point3_to_nxVec3(origin),
-                              PhysxManager::vec3_to_nxVec3(direction));
-}

+ 0 - 53
panda/src/physx/physxCapsule.h

@@ -1,53 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsule.h
- * @author enn0x
- * @date 2009-10-31
- */
-
-#ifndef PHYSXCAPSULE_H
-#define PHYSXCAPSULE_H
-
-#include "pandabase.h"
-
-#include "config_physx.h"
-#include "physxSegment.h"
-
-/**
- * Represents a capsule.
- */
-class EXPCL_PANDAPHYSX PhysxCapsule {
-
-PUBLISHED:
-  INLINE PhysxCapsule();
-  INLINE PhysxCapsule(const PhysxSegment &segment, float radius);
-  INLINE ~PhysxCapsule();
-
-  void compute_direction(LPoint3f &dir) const;
-  float compute_length() const;
-  void compute_point(LPoint3f &p, float t) const;
-  float compute_square_length() const;
-  LPoint3f get_origin() const;
-  void set_origin_direction(const LPoint3f &origin, const LVector3f &direction);
-
-  float get_radius() const;
-  LPoint3f get_p0() const;
-  LPoint3f get_p1() const;
-
-  void set_radius(float value);
-  void set_p0(LPoint3f p);
-  void set_p1(LPoint3f p);
-
-public:
-  NxCapsule _capsule;
-};
-
-#include "physxCapsule.I"
-
-#endif // PHYSCAPSULE_H

+ 0 - 28
panda/src/physx/physxCapsuleController.I

@@ -1,28 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleController.I
- * @author enn0x
- * @date 2009-09-24
- */
-
-/**
- *
- */
-INLINE PhysxCapsuleController::
-PhysxCapsuleController() : PhysxController() {
-
-}
-
-/**
- *
- */
-INLINE PhysxCapsuleController::
-~PhysxCapsuleController() {
-
-}

+ 0 - 94
panda/src/physx/physxCapsuleController.cxx

@@ -1,94 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleController.cxx
- * @author enn0x
- * @date 2009-09-24
- */
-
-#include "physxCapsuleController.h"
-
-TypeHandle PhysxCapsuleController::_type_handle;
-
-/**
- *
- */
-void PhysxCapsuleController::
-link(NxController *controllerPtr) {
-
-  nassertv(controllerPtr->getType() == NX_CONTROLLER_CAPSULE);
-
-  // Link self
-  _ptr = (NxCapsuleController *)controllerPtr;
-  _error_type = ET_ok;
-
-  PhysxScene *scene = (PhysxScene *)_ptr->getActor()->getScene().userData;
-  scene->_controllers.add(this);
-
-  // Link actor
-  PT(PhysxActor) actor = new PhysxActor();
-  actor->link(_ptr->getActor());
-  actor->link_controller(this);
-}
-
-/**
- *
- */
-void PhysxCapsuleController::
-unlink() {
-
-  // Unlink actor
-  PT(PhysxActor) actor = (PhysxActor *)ptr()->getActor()->userData;
-  actor->unlink();
-
-  // Unlink self
-  _error_type = ET_released;
-
-  PhysxScene *scene = (PhysxScene *)_ptr->getActor()->getScene().userData;
-  scene->_controllers.remove(this);
-}
-
-/**
- * Resets the controller's radius.
- */
-void PhysxCapsuleController::
-set_radius(float radius) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setRadius(radius);
-}
-
-/**
- * Resets the controller's height.
- */
-void PhysxCapsuleController::
-set_height(float height) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setHeight(height);
-}
-
-/**
- * Returns the controller's radius.
- */
-float PhysxCapsuleController::
-get_radius() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getRadius();
-}
-
-/**
- * Returns the controller's height.
- */
-float PhysxCapsuleController::
-get_height() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getHeight();
-}

+ 0 - 80
panda/src/physx/physxCapsuleController.h

@@ -1,80 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleController.h
- * @author enn0x
- * @date 2009-09-24
- */
-
-#ifndef PHYSXCAPSULECONTROLLER_H
-#define PHYSXCAPSULECONTROLLER_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxController.h"
-#include "physx_includes.h"
-
-/**
- * A capsule character controller.
- *
- * The capsule is defined as a position, a vertical height, and a radius.  The
- * height is the same height as for PhysxCapsuleShape objects, i.e.  the
- * distance between the two sphere centers at the end of the capsule.  In
- * other words:
- *
- * p = pos (returned by controller) h = height r = radius
- *
- * p = center of capsule top sphere center = p.y + h*0.5 bottom sphere center
- * = p.y - h*0.5 top capsule point = p.y + h*0.5 + r bottom capsule point =
- * p.y - h*0.5 - r
- */
-class EXPCL_PANDAPHYSX PhysxCapsuleController : public PhysxController {
-
-PUBLISHED:
-  INLINE PhysxCapsuleController();
-  INLINE ~PhysxCapsuleController();
-
-  void set_radius(float radius);
-  void set_height(float height);
-  float get_radius() const;
-  float get_height() const;
-
-public:
-  INLINE NxController *ptr() const { return (NxController *)_ptr; };
-
-  void link(NxController *controllerPtr);
-  void unlink();
-
-private:
-  NxCapsuleController *_ptr;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxController::init_type();
-    register_type(_type_handle, "PhysxCapsuleController",
-                  PhysxController::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxCapsuleController.I"
-
-#endif // PHYSXCAPSULECONTROLLER_H

+ 0 - 47
panda/src/physx/physxCapsuleControllerDesc.I

@@ -1,47 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleControllerDesc.I
- * @author enn0x
- * @date 2009-09-22
- */
-
-/**
- *
- */
-INLINE PhysxCapsuleControllerDesc::
-PhysxCapsuleControllerDesc() : PhysxControllerDesc() {
-
-  _desc.upDirection = (NxHeightFieldAxis)physx_up_axis.get_value();
-}
-
-/**
- *
- */
-INLINE PhysxCapsuleControllerDesc::
-~PhysxCapsuleControllerDesc() {
-
-}
-
-/**
- * (re)sets the structure to the default.
- */
-INLINE void PhysxCapsuleControllerDesc::
-set_to_default() {
-
-  _desc.setToDefault();
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxCapsuleControllerDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 50
panda/src/physx/physxCapsuleControllerDesc.cxx

@@ -1,50 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleControllerDesc.cxx
- * @author enn0x
- * @date 2009-09-22
- */
-
-#include "physxCapsuleControllerDesc.h"
-
-/**
- * Sets the radius of the capsule's hemispherical ends and its trunk.
- */
-void PhysxCapsuleControllerDesc::
-set_radius(float radius) {
-
-  _desc.radius = radius;
-}
-
-/**
- * Sets the distance between the two hemispherical ends of the capsule.
- */
-void PhysxCapsuleControllerDesc::
-set_height(float height) {
-
-  _desc.height = height;
-}
-
-/**
- * The radius of the capsule's hemispherical ends and its trunk.
- */
-float PhysxCapsuleControllerDesc::
-get_radius() const {
-
-  return _desc.radius;
-}
-
-/**
- * The distance between the two hemispherical ends of the capsule.
- */
-float PhysxCapsuleControllerDesc::
-get_height() const {
-
-  return _desc.height;
-}

+ 0 - 47
panda/src/physx/physxCapsuleControllerDesc.h

@@ -1,47 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleControllerDesc.h
- * @author enn0x
- * @date 2009-09-22
- */
-
-#ifndef PHYSXCAPSULECONTROLLERDESC_H
-#define PHYSXCAPSULECONTROLLERDESC_H
-
-#include "pandabase.h"
-
-#include "physxControllerDesc.h"
-#include "physx_includes.h"
-
-/**
- * Descriptor class for PhysxCapsuleController.
- */
-class EXPCL_PANDAPHYSX PhysxCapsuleControllerDesc : public PhysxControllerDesc {
-
-PUBLISHED:
-  INLINE PhysxCapsuleControllerDesc();
-  INLINE ~PhysxCapsuleControllerDesc();
-
-  INLINE void set_to_default();
-  INLINE bool is_valid() const;
-
-  void set_radius(float radius);
-  void set_height(float height);
-
-  float get_radius() const;
-  float get_height() const;
-
-public:
-  NxControllerDesc *ptr() const { return (NxControllerDesc *)&_desc; };
-  NxCapsuleControllerDesc _desc;
-};
-
-#include "physxCapsuleControllerDesc.I"
-
-#endif // PHYSXCAPSULECONTROLLERDESC_H

+ 0 - 28
panda/src/physx/physxCapsuleForceFieldShape.I

@@ -1,28 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleForceFieldShape.I
- * @author enn0x
- * @date 2009-11-15
- */
-
-/**
- *
- */
-INLINE PhysxCapsuleForceFieldShape::
-PhysxCapsuleForceFieldShape() : PhysxForceFieldShape() {
-
-}
-
-/**
- *
- */
-INLINE PhysxCapsuleForceFieldShape::
-~PhysxCapsuleForceFieldShape() {
-
-}

+ 0 - 96
panda/src/physx/physxCapsuleForceFieldShape.cxx

@@ -1,96 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleForceFieldShape.cxx
- * @author enn0x
- * @date 2009-11-15
- */
-
-#include "physxCapsuleForceFieldShape.h"
-#include "physxCapsuleForceFieldShapeDesc.h"
-
-TypeHandle PhysxCapsuleForceFieldShape::_type_handle;
-
-/**
- *
- */
-void PhysxCapsuleForceFieldShape::
-link(NxForceFieldShape *shapePtr) {
-
-  _ptr = shapePtr->isCapsule();
-  _ptr->userData = this;
-  _error_type = ET_ok;
-
-  set_name(shapePtr->getName());
-
-  PhysxForceFieldShapeGroup *group = (PhysxForceFieldShapeGroup *)_ptr->getShapeGroup().userData;
-  group->_shapes.add(this);
-}
-
-/**
- *
- */
-void PhysxCapsuleForceFieldShape::
-unlink() {
-
-  _ptr->userData = nullptr;
-  _error_type = ET_released;
-
-  PhysxForceFieldShapeGroup *group = (PhysxForceFieldShapeGroup *)_ptr->getShapeGroup().userData;
-  group->_shapes.remove(this);
-}
-
-/**
- * Saves the state of the shape object to a descriptor.
- */
-void PhysxCapsuleForceFieldShape::
-save_to_desc(PhysxCapsuleForceFieldShapeDesc &shapeDesc) const {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->saveToDesc(shapeDesc._desc);
-}
-
-/**
- * Alters the radius of the capsule.
- */
-void PhysxCapsuleForceFieldShape::
-set_radius(float radius) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setRadius(radius);
-}
-
-/**
- * Alters the height of the capsule.
- */
-void PhysxCapsuleForceFieldShape::
-set_height(float height) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setHeight(height);
-}
-
-/**
- * Retrieves the radius of the capsule.
- */
-float PhysxCapsuleForceFieldShape::
-get_radius() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getRadius();
-}
-
-/**
- * Retrieves the height of the capsule.
- */
-float PhysxCapsuleForceFieldShape::
-get_height() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getHeight();
-}

+ 0 - 74
panda/src/physx/physxCapsuleForceFieldShape.h

@@ -1,74 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleForceFieldShape.h
- * @author enn0x
- * @date 2009-11-15
- */
-
-#ifndef PHYSXCAPSULEFORCEFIELDSHAPE_H
-#define PHYSXCAPSULEFORCEFIELDSHAPE_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxForceFieldShape.h"
-#include "physx_includes.h"
-
-class PhysxCapsuleForceFieldShapeDesc;
-
-/**
- * A capsule shaped region used to define a force field.
- */
-class EXPCL_PANDAPHYSX PhysxCapsuleForceFieldShape : public PhysxForceFieldShape {
-
-PUBLISHED:
-  INLINE PhysxCapsuleForceFieldShape();
-  INLINE ~PhysxCapsuleForceFieldShape();
-
-  void save_to_desc(PhysxCapsuleForceFieldShapeDesc &shapeDesc) const;
-
-  void set_radius(float radius);
-  void set_height(float height);
-
-  float get_radius() const;
-  float get_height() const;
-
-public:
-  INLINE NxForceFieldShape *ptr() const { return (NxForceFieldShape *)_ptr; };
-
-  void link(NxForceFieldShape *shapePtr);
-  void unlink();
-
-private:
-  NxCapsuleForceFieldShape *_ptr;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxForceFieldShape::init_type();
-    register_type(_type_handle, "PhysxCapsuleForceFieldShape",
-                  PhysxForceFieldShape::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxCapsuleForceFieldShape.I"
-
-#endif // PHYSXCAPSULEFORCEFIELDSHAPE_H

+ 0 - 48
panda/src/physx/physxCapsuleForceFieldShapeDesc.I

@@ -1,48 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleForceFieldShapeDesc.I
- * @author enn0x
- * @date 2009-11-06
- */
-
-/**
- *
- */
-INLINE PhysxCapsuleForceFieldShapeDesc::
-PhysxCapsuleForceFieldShapeDesc() : PhysxForceFieldShapeDesc() {
-
-  set_to_default();
-}
-
-/**
- *
- */
-INLINE PhysxCapsuleForceFieldShapeDesc::
-~PhysxCapsuleForceFieldShapeDesc() {
-
-}
-
-/**
- * (re)sets the structure to the default.
- */
-INLINE void PhysxCapsuleForceFieldShapeDesc::
-set_to_default() {
-
-  _desc.setToDefault();
-  set_name("");
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxCapsuleForceFieldShapeDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 50
panda/src/physx/physxCapsuleForceFieldShapeDesc.cxx

@@ -1,50 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleForceFieldShapeDesc.cxx
- * @author enn0x
- * @date 2009-11-06
- */
-
-#include "physxCapsuleForceFieldShapeDesc.h"
-
-/**
- * Sets the radius of the capsule's hemispherical ends and its trunk.
- */
-void PhysxCapsuleForceFieldShapeDesc::
-set_radius(float radius) {
-
-  _desc.radius = radius;
-}
-
-/**
- * Sets the distance between the two hemispherical ends of the capsule.
- */
-void PhysxCapsuleForceFieldShapeDesc::
-set_height(float height) {
-
-  _desc.height = height;
-}
-
-/**
- * The radius of the capsule's hemispherical ends and its trunk.
- */
-float PhysxCapsuleForceFieldShapeDesc::
-get_radius() const {
-
-  return _desc.radius;
-}
-
-/**
- * The distance between the two hemispherical ends of the capsule.
- */
-float PhysxCapsuleForceFieldShapeDesc::
-get_height() const {
-
-  return _desc.height;
-}

+ 0 - 47
panda/src/physx/physxCapsuleForceFieldShapeDesc.h

@@ -1,47 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleForceFieldShapeDesc.h
- * @author enn0x
- * @date 2009-11-06
- */
-
-#ifndef PHYSXCAPSULEFORCEFIELDSHAPEDESC_H
-#define PHYSXCAPSULEFORCEFIELDSHAPEDESC_H
-
-#include "pandabase.h"
-
-#include "physxForceFieldShapeDesc.h"
-#include "physx_includes.h"
-
-/**
- * Descriptor for a capsule force field shape.
- */
-class EXPCL_PANDAPHYSX PhysxCapsuleForceFieldShapeDesc : public PhysxForceFieldShapeDesc {
-
-PUBLISHED:
-  INLINE PhysxCapsuleForceFieldShapeDesc();
-  INLINE ~PhysxCapsuleForceFieldShapeDesc();
-
-  INLINE void set_to_default();
-  INLINE bool is_valid() const;
-
-  void set_radius(float radius);
-  void set_height(float height);
-
-  float get_radius() const;
-  float get_height() const;
-
-public:
-  NxForceFieldShapeDesc *ptr() const { return (NxForceFieldShapeDesc *)&_desc; };
-  NxCapsuleForceFieldShapeDesc _desc;
-};
-
-#include "physxCapsuleForceFieldShapeDesc.I"
-
-#endif // PHYSXCAPSULEFORCEFIELDSHAPEDESC_H

+ 0 - 28
panda/src/physx/physxCapsuleShape.I

@@ -1,28 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleShape.I
- * @author enn0x
- * @date 2009-09-16
- */
-
-/**
- *
- */
-INLINE PhysxCapsuleShape::
-PhysxCapsuleShape() : PhysxShape() {
-
-}
-
-/**
- *
- */
-INLINE PhysxCapsuleShape::
-~PhysxCapsuleShape() {
-
-}

+ 0 - 96
panda/src/physx/physxCapsuleShape.cxx

@@ -1,96 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleShape.cxx
- * @author enn0x
- * @date 2009-09-16
- */
-
-#include "physxCapsuleShape.h"
-#include "physxCapsuleShapeDesc.h"
-
-TypeHandle PhysxCapsuleShape::_type_handle;
-
-/**
- *
- */
-void PhysxCapsuleShape::
-link(NxShape *shapePtr) {
-
-  _ptr = shapePtr->isCapsule();
-  _ptr->userData = this;
-  _error_type = ET_ok;
-
-  set_name(shapePtr->getName());
-
-  PhysxActor *actor = (PhysxActor *)_ptr->getActor().userData;
-  actor->_shapes.add(this);
-}
-
-/**
- *
- */
-void PhysxCapsuleShape::
-unlink() {
-
-  _ptr->userData = nullptr;
-  _error_type = ET_released;
-
-  PhysxActor *actor = (PhysxActor *)_ptr->getActor().userData;
-  actor->_shapes.remove(this);
-}
-
-/**
- * Saves the state of the shape object to a descriptor.
- */
-void PhysxCapsuleShape::
-save_to_desc(PhysxCapsuleShapeDesc &shapeDesc) const {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->saveToDesc(shapeDesc._desc);
-}
-
-/**
- * Alters the radius of the capsule.
- */
-void PhysxCapsuleShape::
-set_radius(float radius) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setRadius(radius);
-}
-
-/**
- * Alters the height of the capsule.
- */
-void PhysxCapsuleShape::
-set_height(float height) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setHeight(height);
-}
-
-/**
- * Retrieves the radius of the capsule.
- */
-float PhysxCapsuleShape::
-get_radius() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getRadius();
-}
-
-/**
- * Retrieves the height of the capsule.
- */
-float PhysxCapsuleShape::
-get_height() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getHeight();
-}

+ 0 - 85
panda/src/physx/physxCapsuleShape.h

@@ -1,85 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleShape.h
- * @author enn0x
- * @date 2009-09-16
- */
-
-#ifndef PHYSXCAPSULESHAPE_H
-#define PHYSXCAPSULESHAPE_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxShape.h"
-#include "physx_includes.h"
-
-class PhysxCapsuleShapeDesc;
-
-/**
- * A capsule shaped collision detection primitive, also known as a line swept
- * sphere.  'radius' is the radius of the capsule's hemispherical ends and its
- * trunk.  'height' is the distance between the two hemispherical ends of the
- * capsule.  The height is along the capsule's Y axis.  Each shape is owned by
- * an actor that it is attached to.
- *
- * An instance can be created by calling the createShape() method of the
- * PhysxActor object that should own it, with a PhysxCapsuleShapeDesc object
- * as the parameter, or by adding the shape descriptor into the PhysxActorDesc
- * class before creating the actor.
- *
- * The shape is deleted by calling release() on the shape itself.
- */
-class EXPCL_PANDAPHYSX PhysxCapsuleShape : public PhysxShape {
-
-PUBLISHED:
-  INLINE PhysxCapsuleShape();
-  INLINE ~PhysxCapsuleShape();
-
-  void save_to_desc(PhysxCapsuleShapeDesc &shapeDesc) const;
-
-  void set_radius(float radius);
-  void set_height(float height);
-
-  float get_radius() const;
-  float get_height() const;
-
-public:
-  INLINE NxShape *ptr() const { return (NxShape *)_ptr; };
-
-  void link(NxShape *shapePtr);
-  void unlink();
-
-private:
-  NxCapsuleShape *_ptr;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxShape::init_type();
-    register_type(_type_handle, "PhysxCapsuleShape",
-                  PhysxShape::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxCapsuleShape.I"
-
-#endif // PHYSXCAPSULESHAPE_H

+ 0 - 48
panda/src/physx/physxCapsuleShapeDesc.I

@@ -1,48 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleShapeDesc.I
- * @author enn0x
- * @date 2009-09-11
- */
-
-/**
- *
- */
-INLINE PhysxCapsuleShapeDesc::
-PhysxCapsuleShapeDesc() : PhysxShapeDesc() {
-
-  set_to_default();
-}
-
-/**
- *
- */
-INLINE PhysxCapsuleShapeDesc::
-~PhysxCapsuleShapeDesc() {
-
-}
-
-/**
- * (re)sets the structure to the default.
- */
-INLINE void PhysxCapsuleShapeDesc::
-set_to_default() {
-
-  _desc.setToDefault();
-  set_name("");
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxCapsuleShapeDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 50
panda/src/physx/physxCapsuleShapeDesc.cxx

@@ -1,50 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleShapeDesc.cxx
- * @author enn0x
- * @date 2009-09-11
- */
-
-#include "physxCapsuleShapeDesc.h"
-
-/**
- * Sets the radius of the capsule's hemispherical ends and its trunk.
- */
-void PhysxCapsuleShapeDesc::
-set_radius(float radius) {
-
-  _desc.radius = radius;
-}
-
-/**
- * Sets the distance between the two hemispherical ends of the capsule.
- */
-void PhysxCapsuleShapeDesc::
-set_height(float height) {
-
-  _desc.height = height;
-}
-
-/**
- * The radius of the capsule's hemispherical ends and its trunk.
- */
-float PhysxCapsuleShapeDesc::
-get_radius() const {
-
-  return _desc.radius;
-}
-
-/**
- * The distance between the two hemispherical ends of the capsule.
- */
-float PhysxCapsuleShapeDesc::
-get_height() const {
-
-  return _desc.height;
-}

+ 0 - 47
panda/src/physx/physxCapsuleShapeDesc.h

@@ -1,47 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCapsuleShapeDesc.h
- * @author enn0x
- * @date 2009-09-11
- */
-
-#ifndef PHYSXCAPSULESHAPEDESC_H
-#define PHYSXCAPSULESHAPEDESC_H
-
-#include "pandabase.h"
-
-#include "physxShapeDesc.h"
-#include "physx_includes.h"
-
-/**
- * Descriptor class for PhysxCapsuleShape.
- */
-class EXPCL_PANDAPHYSX PhysxCapsuleShapeDesc : public PhysxShapeDesc {
-
-PUBLISHED:
-  INLINE PhysxCapsuleShapeDesc();
-  INLINE ~PhysxCapsuleShapeDesc();
-
-  INLINE void set_to_default();
-  INLINE bool is_valid() const;
-
-  void set_radius(float radius);
-  void set_height(float height);
-
-  float get_radius() const;
-  float get_height() const;
-
-public:
-  NxShapeDesc *ptr() const { return (NxShapeDesc *)&_desc; };
-  NxCapsuleShapeDesc _desc;
-};
-
-#include "physxCapsuleShapeDesc.I"
-
-#endif // PHYSXCAPSULESHAPEDESC_H

+ 0 - 47
panda/src/physx/physxCcdSkeleton.I

@@ -1,47 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCcdSkeleton.I
- * @author enn0x
- * @date 2012-05-01
- */
-
-/**
- *
- */
-INLINE PhysxCcdSkeleton::
-PhysxCcdSkeleton() : PhysxObject() {
-
-}
-
-/**
- *
- */
-INLINE PhysxCcdSkeleton::
-~PhysxCcdSkeleton() {
-
-}
-
-/**
- *
- */
-INLINE void PhysxCcdSkeleton::
-ls() const {
-
-  ls(nout);
-}
-
-/**
- *
- */
-INLINE void PhysxCcdSkeleton::
-ls(std::ostream &out, int indent_level) const {
-
-  indent(out, indent_level) << get_type().get_name()
-                            << " (at 0x" << this << ")\n";
-}

+ 0 - 66
panda/src/physx/physxCcdSkeleton.cxx

@@ -1,66 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCcdSkeleton.cxx
- * @author enn0x
- * @date 2012-05-01
- */
-
-#include "physxCcdSkeleton.h"
-#include "physxMeshPool.h"
-
-TypeHandle PhysxCcdSkeleton::_type_handle;
-
-/**
- *
- */
-void PhysxCcdSkeleton::
-link(NxCCDSkeleton *skeletonPtr) {
-
-  // Link self
-  PhysxManager::get_global_ptr()->_ccd_skeletons.add(this);
-  _ptr = skeletonPtr;
-  _error_type = ET_ok;
-}
-
-/**
- *
- */
-void PhysxCcdSkeleton::
-unlink() {
-
-  // Unlink self
-  _error_type = ET_released;
-  PhysxManager::get_global_ptr()->_ccd_skeletons.remove(this);
-}
-
-/**
- *
- */
-void PhysxCcdSkeleton::
-release() {
-
-  nassertv(_error_type == ET_ok);
-
-  unlink();
-  NxGetPhysicsSDK()->releaseCCDSkeleton(*_ptr);
-  _ptr = nullptr;
-
-  // TODO PhysxMeshPool::release_ccd_skeleton(this);
-}
-
-/**
- * Returns the reference count for shared meshes.
- */
-unsigned int PhysxCcdSkeleton::
-get_reference_count() const {
-
-  nassertr(_error_type == ET_ok, 0);
-
-  return _ptr->getReferenceCount();
-}

+ 0 - 72
panda/src/physx/physxCcdSkeleton.h

@@ -1,72 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCcdSkeleton.h
- * @author enn0x
- * @date 2012-05-01
- */
-
-#ifndef PHYSXCCDSKELETON_H
-#define PHYSXCCDSKELETON_H
-
-#include "pandabase.h"
-
-#include "physxObject.h"
-#include "physx_includes.h"
-
-/**
- * A Convex Mesh.  Internally represented as a list of convex polygons.  The
- * number of polygons is limited to 256.
- */
-class EXPCL_PANDAPHYSX PhysxCcdSkeleton : public PhysxObject {
-
-PUBLISHED:
-  unsigned int get_reference_count() const;
-
-PUBLISHED:
-  void release();
-
-  INLINE void ls() const;
-  INLINE void ls(std::ostream &out, int indent_level=0) const;
-
-public:
-  INLINE PhysxCcdSkeleton();
-  INLINE ~PhysxCcdSkeleton();
-
-  INLINE NxCCDSkeleton *ptr() const { return _ptr; };
-
-  void link(NxCCDSkeleton *meshPtr);
-  void unlink();
-
-private:
-  NxCCDSkeleton *_ptr;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxObject::init_type();
-    register_type(_type_handle, "PhysxCcdSkeleton",
-                  PhysxObject::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxCcdSkeleton.I"
-
-#endif // PHYSXCCDSKELETON_H

+ 0 - 52
panda/src/physx/physxCcdSkeletonDesc.I

@@ -1,52 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCcdSkeletonDesc.I
- * @author enn0x
- * @date 2012-05-01
- */
-
-/**
- *
- */
-INLINE PhysxCcdSkeletonDesc::
-PhysxCcdSkeletonDesc() {
-
-  _desc.flags = 0;
-  _desc.pointStrideBytes = sizeof(NxVec3);
-  _desc.triangleStrideBytes = 3*sizeof(NxU32);
-  _desc.points = nullptr;
-  _desc.triangles = nullptr;
-
-  _vertices = nullptr;
-  _triangles = nullptr;
-}
-
-/**
- *
- */
-INLINE PhysxCcdSkeletonDesc::
-~PhysxCcdSkeletonDesc() {
-
-  if (_vertices) {
-    delete [] _vertices;
-  }
-
-  if (_triangles) {
-    delete [] _triangles;
-  }
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxCcdSkeletonDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 177
panda/src/physx/physxCcdSkeletonDesc.cxx

@@ -1,177 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCcdSkeletonDesc.cxx
- * @author enn0x
- * @date 2012-05-01
- */
-
-#include "physxCcdSkeletonDesc.h"
-#include "physxManager.h"
-
-#include "nodePathCollection.h"
-#include "geomNode.h"
-#include "geomVertexReader.h"
-
-/**
- * Sets the number of vertices to be stored within this triangle mesh.  The
- * function allocates memory for the vertices, but it does not set any
- * vertices.
- *
- * This method must be called before any calls to set_vertex are done!
- */
-void PhysxCcdSkeletonDesc::
-set_num_vertices(unsigned int numVertices) {
-
-  if (_desc.points) {
-    delete [] _vertices;
-  }
-
-  _vertices = new NxVec3[numVertices];
-
-  _desc.numVertices = numVertices;
-  _desc.points = _vertices;
-}
-
-/**
- * Sets a single vertex.  You have to call the function set_num_vertices
- * before you can call this function.
- */
-void PhysxCcdSkeletonDesc::
-set_vertex(unsigned int idx, const LPoint3f &vert) {
-
-  nassertv(_desc.numVertices > idx);
-  _vertices[idx] = PhysxManager::point3_to_nxVec3(vert);
-}
-
-/**
- * Sets the number of triangles to be stored in this triangle mesh.
- *
- * This method must be called before any calls to set_triangle are done!
- */
-void PhysxCcdSkeletonDesc::
-set_num_triangles(unsigned int numTriangles) {
-
-  if (_desc.triangles) {
-    delete [] _triangles;
-  }
-
-  _triangles = new NxU32[3 * numTriangles];
-
-  _desc.numTriangles = numTriangles;
-  _desc.triangles = _triangles;
-}
-
-/**
- * Sets a single triangle, by providing the three indices i1, i2, i3.
- */
-void PhysxCcdSkeletonDesc::
-set_triangle(unsigned int idx,
-             unsigned int i1, unsigned int i2, unsigned int i3) {
-
-  nassertv(_desc.numTriangles > idx);
-
-  idx = 3 * idx;
-  _triangles[idx] = i1;
-  _triangles[idx + 1] = i2;
-  _triangles[idx + 2] = i3;
-}
-
-/**
- *
- */
-const NxSimpleTriangleMesh &PhysxCcdSkeletonDesc::
-get_desc() const {
-
-  return _desc;
-}
-
-/**
- * A convenience method to set the mesh data from a NodePath in a single call.
- * The method iterates over the NodePath geoms and collects data for the
- * triangle mesh.
- *
- * Do not use the following function when using this one: - set_num_vertices -
- * set_vertex - set_num_triangles - set_triangle
- */
-void PhysxCcdSkeletonDesc::
-set_from_node_path(const NodePath &np) {
-
-  pvector<LPoint3f> dataVertices;
-  pvector<int> dataIndices;
-
-  // Collect data from NodePath
-  NodePathCollection npc = np.find_all_matches( "**/+GeomNode" );
-  for (int i=0; i<npc.get_num_paths(); i++) {
-    NodePath gnp = npc.get_path(i);
-    GeomNode *gnode = DCAST(GeomNode, gnp.node());
-
-    for (int j=0; j<gnode->get_num_geoms(); j++) {
-      CPT(Geom) geom = gnode->get_geom(j);
-
-      // Vertices
-      CPT(GeomVertexData) vdata = geom->get_vertex_data();
-      GeomVertexReader reader = GeomVertexReader(vdata, InternalName::get_vertex());
-
-      while (!reader.is_at_end()) {
-        dataVertices.push_back(reader.get_data3f());
-      }
-
-      // Indices
-      for (int k=0; k<geom->get_num_primitives(); k++) {
-
-        CPT(GeomPrimitive) prim = geom->get_primitive(k);
-        prim = prim->decompose();
-
-        for (int l=0; l<prim->get_num_primitives(); l++) {
-
-          int s = prim->get_primitive_start(l);
-          int e = prim->get_primitive_end(l);
-
-          for (int l=s; l<e; l++) {
-            dataIndices.push_back(prim->get_vertex(l));
-          }
-        }
-      }
-    }
-  }
-
-  // Set descriptor members
-  int i;
-
-  NxU32 numVertices = dataVertices.size();
-  NxU32 numTriangles = dataIndices.size() / 3;
-
-  _vertices = new NxVec3[numVertices];
-  _triangles = new NxU32[3 * numTriangles];
-
-  i = 0;
-  pvector<LPoint3f>::const_iterator vit;
-  for (vit=dataVertices.begin(); vit!=dataVertices.end(); vit++) {
-    LPoint3f v = *vit;
-
-    _vertices[i].x = v.get_x();
-    _vertices[i].y = v.get_y();
-    _vertices[i].z = v.get_z();
-    i++;
-  }
-
-  i = 0;
-  pvector<int>::const_iterator iit;
-  for(iit=dataIndices.begin(); iit!=dataIndices.end(); iit++) {
-    NxU32 idx = *iit;
-
-    _triangles[i] = idx;
-    i++;
-  }
-
-  _desc.numVertices = numVertices;
-  _desc.points = _vertices;
-  _desc.numTriangles = numTriangles;
-  _desc.triangles = _triangles;
-}

+ 0 - 54
panda/src/physx/physxCcdSkeletonDesc.h

@@ -1,54 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCcdSkeletonDesc.h
- * @author enn0x
- * @date 2012-05-01
- */
-
-#ifndef PHYSXCCDSKELETONDESC_H
-#define PHYSXCCDSKELETONDESC_H
-
-#include "pandabase.h"
-#include "nodePath.h"
-#include "luse.h"
-
-#include "physx_includes.h"
-
-/**
- *
- */
-class EXPCL_PANDAPHYSX PhysxCcdSkeletonDesc {
-
-PUBLISHED:
-  INLINE PhysxCcdSkeletonDesc();
-  INLINE ~PhysxCcdSkeletonDesc();
-
-  INLINE bool is_valid() const;
-
-  void set_num_vertices(unsigned int n);
-  void set_vertex(unsigned int idx, const LPoint3f &vert);
-
-  void set_num_triangles(unsigned int n);
-  void set_triangle(unsigned int idx,
-                    unsigned int i1, unsigned int i2, unsigned int i3);
-
-  void set_from_node_path(const NodePath &np);
-
-public:
-  const NxSimpleTriangleMesh &get_desc() const;
-
-private:
-  NxVec3 *_vertices;
-  NxU32 *_triangles;
-  NxSimpleTriangleMesh _desc;
-};
-
-#include "physxCcdSkeletonDesc.I"
-
-#endif // PHYSXCCDSKELETONDESC_H

+ 0 - 54
panda/src/physx/physxCloth.I

@@ -1,54 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCloth.I
- * @author enn0x
- * @date 2010-03-30
- */
-
-/**
- *
- */
-INLINE PhysxCloth::
-PhysxCloth() : PhysxObject() {
-
-}
-
-/**
- *
- */
-INLINE PhysxCloth::
-~PhysxCloth() {
-
-}
-
-/**
- *
- */
-INLINE void PhysxCloth::
-ls() const {
-
-  ls(nout);
-}
-
-/**
- *
- */
-INLINE void PhysxCloth::
-ls(std::ostream &out, int indent_level) const {
-
-  indent(out, indent_level) << get_type().get_name()
-                            << " " << _name
-                            << " (at 0x" << this << ")";
-
-  if (_node) {
-    out << " N:0x" << _node;
-  }
-
-  out << "\n";
-}

+ 0 - 568
panda/src/physx/physxCloth.cxx

@@ -1,568 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCloth.cxx
- * @author enn0x
- * @date 2010-03-30
- */
-
-#include "physxCloth.h"
-#include "physxClothDesc.h"
-#include "physxScene.h"
-#include "physxGroupsMask.h"
-#include "physxShape.h"
-#include "physxManager.h"
-
-#include "boundingBox.h"
-
-TypeHandle PhysxCloth::_type_handle;
-
-/**
- *
- */
-void PhysxCloth::
-link(NxCloth *clothPtr) {
-
-  // Link self
-  _ptr = clothPtr;
-  _error_type = ET_ok;
-  _ptr->userData = this;
-
-  set_name(clothPtr->getName());
-
-  PhysxScene *scene = (PhysxScene *)_ptr->getScene().userData;
-  scene->_cloths.add(this);
-}
-
-/**
- *
- */
-void PhysxCloth::
-unlink() {
-
-  // Unlink self
-  _ptr->userData = nullptr;
-  _error_type = ET_released;
-
-  PhysxScene *scene = (PhysxScene *)_ptr->getScene().userData;
-  scene->_cloths.remove(this);
-
-  _node = nullptr;
-}
-
-/**
- *
- */
-void PhysxCloth::
-release() {
-
-  nassertv(_error_type == ET_ok);
-
-  unlink();
-  _ptr->getScene().releaseCloth(*_ptr);
-  _ptr = nullptr;
-}
-
-/**
- *
- */
-void PhysxCloth::
-update() {
-
-  if (_node) {
-
-    // Update node mesh data
-    _node->update();
-
-    // Update node bounding volume
-    NxBounds3 bounds;
-    _ptr->getWorldBounds(bounds);
-
-    BoundingBox bb(PhysxManager::nxVec3_to_point3(bounds.min),
-                   PhysxManager::nxVec3_to_point3(bounds.max));
-    _node->set_bounds(&bb);
-  }
-}
-
-/**
- * Returns the scene which this cloth belongs to.
- */
-PhysxScene *PhysxCloth::
-get_scene() const {
-
-  nassertr(_error_type == ET_ok, nullptr);
-  return (PhysxScene *)_ptr->getScene().userData;
-}
-
-/**
- *
- */
-PhysxClothNode *PhysxCloth::
-get_cloth_node() const {
-
-  nassertr(_error_type == ET_ok, nullptr);
-  return _node;
-}
-
-/**
- *
- */
-PhysxClothNode *PhysxCloth::
-create_cloth_node(const char *name) {
-
-  nassertr(_error_type == ET_ok, nullptr);
-
-  _node = new PhysxClothNode(name);
-  _node->allocate(this);
-
-  return _node;
-}
-
-/**
- * Sets a name string for the object that can be retrieved with get_name().
- * This is for debugging and is not used by the engine.
- */
-void PhysxCloth::
-set_name(const char *name) {
-
-  nassertv(_error_type == ET_ok);
-
-  _name = name ? name : "";
-  _ptr->setName(_name.c_str());
-}
-
-/**
- * Retrieves the name string.
- */
-const char *PhysxCloth::
-get_name() const {
-
-  nassertr(_error_type == ET_ok, "");
-  return _ptr->getName();
-}
-
-/**
- * Sets which collision group this cloth is part of.  Collision group must be
- * between 0 and 31.
- */
-void PhysxCloth::
-set_group(unsigned int group) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(group >= 0 && group < 32);
-  _ptr->setGroup(group);
-}
-
-/**
- * Retrieves the collision group this cloth is part of.
- */
-unsigned int PhysxCloth::
-get_group() const {
-
-  nassertr(_error_type == ET_ok, 0);
-  return _ptr->getGroup();
-}
-
-/**
- * Sets the cloth thickness (must be positive).
- */
-void PhysxCloth::
-set_thickness(float thickness) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setThickness(thickness);
-}
-
-/**
- * Gets the cloth thickness.
- */
-float PhysxCloth::
-get_thickness() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getThickness();
-}
-
-/**
- * Gets the cloth density.
- */
-float PhysxCloth::
-get_density() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getDensity();
-}
-
-/**
- * Gets the relative grid spacing for the broad phase.  The cloth is
- * represented by a set of world aligned cubical cells in broad phase.  The
- * size of these cells is determined by multiplying the length of the diagonal
- * of the AABB of the initial soft body size with this constant.
- */
-float PhysxCloth::
-get_relative_grid_spacing() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getRelativeGridSpacing();
-}
-
-/**
- * Gets the number of cloth particles.
- */
-unsigned int PhysxCloth::
-get_num_particles() {
-
-  nassertr(_error_type == ET_ok, 0);
-  return _ptr->getNumberOfParticles();
-}
-
-/**
- * Sets the value of a single flag.
- */
-void PhysxCloth::
-set_flag(PhysxClothFlag flag, bool value) {
-
-  nassertv(_error_type == ET_ok);
-
-  NxU32 flags = _ptr->getFlags();
-
-  if (value == true) {
-    flags |= flag;
-  }
-  else {
-    flags &= ~(flag);
-  }
-
-  _ptr->setFlags(flags);
-}
-
-/**
- * Retrieves the value of a single flag.
- */
-bool PhysxCloth::
-get_flag(PhysxClothFlag flag) const {
-
-  nassertr(_error_type == ET_ok, false);
-
-  return (_ptr->getFlags() & flag) ? true : false;
-}
-
-/**
- * Sets 128-bit mask used for collision filtering.
- */
-void PhysxCloth::
-set_groups_mask(const PhysxGroupsMask &mask) {
-
-  nassertv(_error_type == ET_ok);
-
-  NxGroupsMask _mask = mask.get_mask();
-  _ptr->setGroupsMask(_mask);
-}
-
-/**
- * Gets the 128-bit groups mask used for collision filtering.
- */
-PhysxGroupsMask PhysxCloth::
-get_groups_mask() const {
-
-  PhysxGroupsMask mask;
-
-  nassertr(_error_type == ET_ok, mask);
-
-  NxGroupsMask _mask = _ptr->getGroupsMask();
-  mask.set_mask(_mask);
-
-  return mask;
-}
-
-/**
- * Returns true if this cloth is sleeping.
- *
- * When a cloth does not move for a period of time, it is no longer simulated
- * in order to save time.  This state is called sleeping.  However, because
- * the object automatically wakes up when it is either touched by an awake
- * object, or one of its properties is changed by the user, the entire sleep
- * mechanism should be transparent to the user.
- */
-bool PhysxCloth::
-is_sleeping() const {
-
-  nassertr(_error_type == ET_ok, false);
-  return _ptr->isSleeping();
-}
-
-/**
- * Wakes up the cloth if it is sleeping.
- *
- * The wakeCounterValue determines how long until the body is put to sleep, a
- * value of zero means that the body is sleeping.  wake_up(0) is equivalent to
- * PhysxCloth::put_to_sleep().
- */
-void PhysxCloth::
-wake_up(float wakeCounterValue) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->wakeUp(wakeCounterValue);
-}
-
-/**
- * Forces the cloth to sleep.
- *
- * The cloth  will stay asleep until the next call to simulate, and will not
- * wake up until then even when otherwise it would (for example a force is
- * applied to it). It can however wake up during the next do_physics call.
- */
-void PhysxCloth::
-put_to_sleep() {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->putToSleep();
-}
-
-/**
- * Sets the linear velocity below which an cloth may go to sleep.  Cloths
- * whose linear velocity is above this threshold will not be put to sleep.
- *
- * Setting the sleep angular/linear velocity only makes sense when the
- * BF_energy_sleep_test is not set.
- */
-void PhysxCloth::
-set_sleep_linear_velocity(float threshold) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->setSleepLinearVelocity(threshold);
-}
-
-/**
- * Returns the linear velocity below which an soft body may go to sleep.
- * cloths whose linear velocity is above this threshold will not be put to
- * sleep.
- */
-float PhysxCloth::
-get_sleep_linear_velocity() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _ptr->getSleepLinearVelocity();
-}
-
-/**
- * Attaches a cloth vertex to a position in world space.
- */
-void PhysxCloth::
-attach_vertex_to_global_pos(unsigned int vertexId, LPoint3f const &pos) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(!pos.is_nan());
-
-  _ptr->attachVertexToGlobalPosition(vertexId, PhysxManager::point3_to_nxVec3(pos));
-}
-
-/**
- * Attaches the cloth to a shape.  All cloth points currently inside the shape
- * are attached.
- *
- * This method only works with primitive and convex shapes.  Since the inside
- * of a general triangle mesh is not clearly defined.
- */
-void PhysxCloth::
-attach_to_shape(PhysxShape *shape) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(shape);
-
-  NxU32 attachmentFlags = 0; // --TODO--
-  _ptr->attachToShape(shape->ptr(), attachmentFlags);
-}
-
-/**
- * Attaches the cloth to all shapes, currently colliding.
- *
- * This method only works with primitive and convex shapes.  Since the inside
- * of a general triangle mesh is not clearly defined.
- */
-void PhysxCloth::
-attach_to_colliding_shapes() {
-
-  nassertv(_error_type == ET_ok);
-
-  NxU32 attachmentFlags = 0; // --TODO--
-  _ptr->attachToCollidingShapes(attachmentFlags);
-}
-
-/**
- * Detaches the cloth from a shape it has been attached to before.
- *
- * If the cloth has not been attached to the shape before, the call has no
- * effect.
- */
-void PhysxCloth::
-detach_from_shape(PhysxShape *shape) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(shape);
-
-  _ptr->detachFromShape(shape->ptr());
-}
-
-/**
- * Frees a previously attached cloth point.
- */
-void PhysxCloth::
-free_vertex(unsigned int vertexId) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->freeVertex(vertexId);
-}
-
-/**
- * Attaches a cloth vertex to a local position within a shape.
- */
-void PhysxCloth::
-attach_vertex_to_shape(unsigned int vertexId, PhysxShape *shape, LPoint3f const &localPos) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(!localPos.is_nan());
-  nassertv(shape);
-
-  NxU32 attachmentFlags = 0; // --TODO--
-  _ptr->attachVertexToShape(vertexId, shape->ptr(),
-                            PhysxManager::point3_to_nxVec3(localPos),
-                            attachmentFlags);
-}
-
-/**
- * Return the attachment status of the given vertex.
- */
-PhysxEnums::PhysxVertexAttachmentStatus PhysxCloth::
-get_vertex_attachment_status(unsigned int vertexId) const {
-
-  nassertr(_error_type == ET_ok, VAS_none);
-  // --TODO-- nassertr(vertexId < _ptr->getNumberOfParticles(), VAS_none);
-
-  return (PhysxVertexAttachmentStatus) _ptr->getVertexAttachmentStatus(vertexId);
-}
-
-/**
- * Returns the pointer to an attached shape pointer of the given vertex.  If
- * the vertex is not attached or attached to a global position, NULL is
- * returned.
- */
-PhysxShape *PhysxCloth::
-get_vertex_attachment_shape(unsigned int vertexId) const {
-
-  nassertr(_error_type == ET_ok, nullptr);
-  // --TODO-- nassertr(vertexId < _ptr->getNumberOfParticles(), NULL);
-
-  NxShape *shapePtr = _ptr->getVertexAttachmentShape(vertexId);
-  PhysxShape *shape = shapePtr ? (PhysxShape *)(shapePtr->userData) : nullptr;
-
-  return shape;
-}
-
-/**
- * Returns the attachment position of the given vertex.  If the vertex is
- * attached to shape, the position local to the shape's pose is returned.  If
- * the vertex is not attached, the return value is undefined.
- */
-LPoint3f PhysxCloth::
-get_vertex_attachment_pos(unsigned int vertexId) const {
-
-  nassertr(_error_type == ET_ok, LPoint3f::zero());
-  // --TODO-- nassertr(vertexId < _ptr->getNumberOfParticles(),
-  // LPoint3f::zero());
-
-  return PhysxManager::nxVec3_to_point3(_ptr->getVertexAttachmentPosition(vertexId));
-}
-
-/**
- * Sets an external acceleration which affects all non attached particles of
- * the cloth.
- */
-void PhysxCloth::
-set_external_acceleration(LVector3f const &acceleration) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!acceleration.is_nan());
-
-  _ptr->setExternalAcceleration(PhysxManager::vec3_to_nxVec3(acceleration));
-}
-
-/**
- * Sets an acceleration acting normal to the cloth surface at each vertex.
- */
-void PhysxCloth::
-set_wind_acceleration(LVector3f const &acceleration) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!acceleration.is_nan());
-
-  _ptr->setWindAcceleration(PhysxManager::vec3_to_nxVec3(acceleration));
-}
-
-/**
- * Retrieves the external acceleration which affects all non attached
- * particles of the cloth.
- */
-LVector3f PhysxCloth::
-get_external_acceleration() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getExternalAcceleration());
-}
-
-/**
- * Retrieves the acceleration acting normal to the cloth surface at each
- * vertex
- */
-LVector3f PhysxCloth::
-get_wind_acceleration() const {
-
-  nassertr(_error_type == ET_ok, LVector3f::zero());
-  return PhysxManager::nxVec3_to_vec3(_ptr->getWindAcceleration());
-}
-
-/**
- * Applies a force (or impulse) defined in the global coordinate frame, to a
- * particular vertex of the cloth.
- */
-void PhysxCloth::
-add_force_at_vertex(LVector3f const &force, int vertexId, PhysxForceMode mode) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->addForceAtVertex(PhysxManager::vec3_to_nxVec3(force),
-                         vertexId,
-                         (NxForceMode) mode);
-}
-
-/**
- * Applies a radial force (or impulse) at a particular position.  All vertices
- * within radius will be affected with a quadratic drop-off.
- */
-void PhysxCloth::
-add_force_at_pos(LPoint3f const &pos, float magnitude, float radius, PhysxForceMode mode) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->addForceAtPos(PhysxManager::point3_to_nxVec3(pos),
-                      magnitude,
-                      radius,
-                      (NxForceMode) mode);
-}
-
-/**
- * Applies a directed force (or impulse) at a particular position.  All
- * vertices within radius will be affected with a quadratic drop-off.
- */
-void PhysxCloth::
-add_directed_force_at_pos(LPoint3f const &pos, LVector3f const &force, float radius, PhysxForceMode mode) {
-
-  nassertv(_error_type == ET_ok);
-  _ptr->addDirectedForceAtPos(PhysxManager::point3_to_nxVec3(pos),
-                              PhysxManager::vec3_to_nxVec3(force),
-                              radius,
-                              (NxForceMode) mode);
-}

+ 0 - 132
panda/src/physx/physxCloth.h

@@ -1,132 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxCloth.h
- * @author enn0x
- * @date 2010-03-30
- */
-
-#ifndef PHYSXCLOTH_H
-#define PHYSXCLOTH_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxObject.h"
-#include "physxObjectCollection.h"
-#include "physxEnums.h"
-#include "physx_includes.h"
-
-class PhysxScene;
-class PhysxGroupsMask;
-class PhysxClothNode;
-
-/**
- *
- */
-class EXPCL_PANDAPHYSX PhysxCloth : public PhysxObject, public PhysxEnums {
-
-PUBLISHED:
-  INLINE PhysxCloth();
-  INLINE ~PhysxCloth();
-
-  PhysxScene *get_scene() const;
-  PhysxClothNode *get_cloth_node() const;
-  PhysxClothNode *create_cloth_node(const char *name);
-
-  void set_name(const char *name);
-  void set_group(unsigned int group);
-  void set_groups_mask(const PhysxGroupsMask &mask);
-  void set_flag(PhysxClothFlag flag, bool value);
-  void set_thickness(float thickness);
-
-  const char *get_name() const;
-  unsigned int get_num_particles();
-  unsigned int get_group() const;
-  PhysxGroupsMask get_groups_mask() const;
-  bool get_flag(PhysxClothFlag flag) const;
-  float get_thickness() const;
-  float get_density() const;
-  float get_relative_grid_spacing() const;
-
-  // Attachment
-  void attach_vertex_to_global_pos(unsigned int vertexId, LPoint3f const &pos);
-  void free_vertex(unsigned int vertexId);
-  void attach_to_shape(PhysxShape *shape);
-  void attach_to_colliding_shapes();
-  void detach_from_shape(PhysxShape *shape);
-  void attach_vertex_to_shape(unsigned int vertexId, PhysxShape *shape, LPoint3f const &localPos);
-  PhysxVertexAttachmentStatus get_vertex_attachment_status(unsigned int vertexId) const;
-  PhysxShape *get_vertex_attachment_shape(unsigned int vertexId) const;
-  LPoint3f get_vertex_attachment_pos(unsigned int vertexId) const;
-
-  // Sleeping
-  bool is_sleeping() const;
-  void wake_up(float wakeCounterValue=NX_SLEEP_INTERVAL);
-  void put_to_sleep();
-  void set_sleep_linear_velocity(float threshold);
-  float get_sleep_linear_velocity() const;
-
-  // Forces
-  void set_external_acceleration(LVector3f const &acceleration);
-  LVector3f get_external_acceleration() const;
-
-  void set_wind_acceleration(LVector3f const &acceleration);
-  LVector3f get_wind_acceleration() const;
-
-  void add_force_at_vertex(LVector3f const &force, int vertexId,
-                           PhysxForceMode mode=FM_force);
-  void add_force_at_pos(LPoint3f const &pos, float magnitude, float radius,
-                        PhysxForceMode mode=FM_force);
-  void add_directed_force_at_pos(LPoint3f const &pos, LVector3f const &force, float radius,
-                                 PhysxForceMode mode=FM_force);
-
-  INLINE void ls() const;
-  INLINE void ls(std::ostream &out, int indent_level=0) const;
-
-public:
-  void update();
-
-PUBLISHED:
-  void release();
-
-public:
-  INLINE NxCloth *ptr() const { return _ptr; };
-
-  void link(NxCloth *ptr);
-  void unlink();
-
-private:
-  NxCloth *_ptr;
-  PT(PhysxClothNode) _node;
-  std::string _name;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxObject::init_type();
-    register_type(_type_handle, "PhysxCloth",
-                  PhysxObject::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxCloth.I"
-
-#endif // PHYSXCLOTH_H

+ 0 - 48
panda/src/physx/physxClothDesc.I

@@ -1,48 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothDesc.I
- * @author enn0x
- * @date 2010-03-30
- */
-
-/**
- *
- */
-INLINE PhysxClothDesc::
-PhysxClothDesc() {
-
-  set_to_default();
-}
-
-/**
- *
- */
-INLINE PhysxClothDesc::
-~PhysxClothDesc() {
-
-}
-
-/**
- * (re)sets the structure to the default.
- */
-INLINE void PhysxClothDesc::
-set_to_default() {
-
-  _desc.setToDefault();
-  set_name("");
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxClothDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}

+ 0 - 298
panda/src/physx/physxClothDesc.cxx

@@ -1,298 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothDesc.cxx
- * @author enn0x
- * @date 2010-03-30
- */
-
-#include "physxClothDesc.h"
-#include "physxClothMesh.h"
-#include "physxManager.h"
-
-/**
- *
- */
-void PhysxClothDesc::
-set_name(const char *name) {
-
-  _name = name ? name : "";
-  _desc.name = _name.c_str();
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_global_pos(const LPoint3f &pos) {
-
-  _desc.globalPose.t = PhysxManager::point3_to_nxVec3(pos);
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_global_mat(const LMatrix4f &mat) {
-
-  _desc.globalPose = PhysxManager::mat4_to_nxMat34(mat);
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_global_hpr(float h, float p, float r) {
-
-  LQuaternionf q;
-  LMatrix3f rot;
-  NxMat34 m;
-
-  q.set_hpr(LVector3f(h, p, r));
-  q.extract_to_matrix(rot);
-
-  _desc.globalPose.M = PhysxManager::mat3_to_nxMat33(rot);
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_thickness(float thickness) {
-
-  _desc.thickness = thickness;
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_density(float density) {
-
-  _desc.density = density;
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_bending_stiffness(float stiffness) {
-
-  _desc.bendingStiffness = stiffness;
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_stretching_stiffness(float stiffness) {
-
-  _desc.stretchingStiffness = stiffness;
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_damping_coefficient(float damping) {
-
-  _desc.dampingCoefficient = damping;
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_friction(float friction) {
-
-  _desc.friction = friction;
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_pressure(float pressure) {
-
-  _desc.pressure = pressure;
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_tear_factor(float tearFactor) {
-
-  _desc.tearFactor = tearFactor;
-}
-
-/**
- * Raise or lower individual ClothFlag flags.
- */
-void PhysxClothDesc::
-set_flag(PhysxClothFlag flag, bool value) {
-
-  if (value == true) {
-    _desc.flags |= flag;
-  }
-  else {
-    _desc.flags &= ~(flag);
-  }
-}
-
-/**
- * Number of solver iterations.  Small numbers make the simulation faster
- * while the cloth gets less stiff.
- */
-void PhysxClothDesc::
-set_solver_iterations(unsigned int iterations) {
-
-  _desc.solverIterations = iterations;
-}
-
-/**
- *
- */
-void PhysxClothDesc::
-set_cloth_mesh(PhysxClothMesh *mesh) {
-
-  _desc.clothMesh = mesh->ptr();
-}
-
-/**
- *
- */
-const char *PhysxClothDesc::
-get_name() const {
-
-  return _desc.name;
-}
-
-/**
- *
- */
-LPoint3f PhysxClothDesc::
-get_global_pos() const {
-
-  return PhysxManager::nxVec3_to_point3(_desc.globalPose.t);
-}
-
-/**
- *
- */
-LMatrix4f PhysxClothDesc::
-get_global_mat() const {
-
-  return PhysxManager::nxMat34_to_mat4(_desc.globalPose);
-}
-
-/**
- *
- */
-float PhysxClothDesc::
-get_thickness() const {
-
-  return _desc.thickness;
-}
-
-/**
- *
- */
-float PhysxClothDesc::
-get_density() const {
-
-  return _desc.density;
-}
-
-/**
- *
- */
-float PhysxClothDesc::
-get_bending_stiffness() const {
-
-  return _desc.bendingStiffness;
-}
-
-/**
- *
- */
-float PhysxClothDesc::
-get_stretching_stiffness() const {
-
-  return _desc.stretchingStiffness;
-}
-
-/**
- *
- */
-float PhysxClothDesc::
-get_damping_coefficient() const {
-
-  return _desc.dampingCoefficient;
-}
-
-/**
- *
- */
-float PhysxClothDesc::
-get_friction() const {
-
-  return _desc.friction;
-}
-
-/**
- *
- */
-float PhysxClothDesc::
-get_pressure() const {
-
-  return _desc.pressure;
-}
-
-/**
- *
- */
-float PhysxClothDesc::
-get_tear_factor() const {
-
-  return _desc.tearFactor;
-}
-
-/**
- *
- */
-bool PhysxClothDesc::
-get_flag(PhysxClothFlag flag) const {
-
-  return (_desc.flags & flag) ? true : false;
-}
-
-/**
- *
- */
-unsigned int PhysxClothDesc::
-get_solver_iterations() const {
-
-  return _desc.solverIterations;
-}
-
-/**
- * Used by PhysScene to query the sizes of arrays to allocate for the user
- * buffers in PhysxClothNode.
- */
-/*
-void PhysxClothDesc::
-get_mesh_numbers(NxU32 &numVertices, NxU32 &numTriangles) {
-
-  NxClothMeshDesc meshDesc;
-  _desc.clothMesh->saveToDesc(meshDesc);
-
-  numVertices = meshDesc.numVertices;
-  numTriangles = meshDesc.numTriangles;
-}
-*/

+ 0 - 77
panda/src/physx/physxClothDesc.h

@@ -1,77 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothDesc.h
- * @author enn0x
- * @date 2010-03-30
- */
-
-#ifndef PHYSXCLOTHDESC_H
-#define PHYSXCLOTHDESC_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "physxEnums.h"
-#include "physx_includes.h"
-
-class PhysxClothMesh;
-
-/**
- * Descriptor for PhysxCloth.
- */
-class EXPCL_PANDAPHYSX PhysxClothDesc : public PhysxEnums {
-
-PUBLISHED:
-  INLINE PhysxClothDesc();
-  INLINE ~PhysxClothDesc();
-
-  INLINE void set_to_default();
-  INLINE bool is_valid() const;
-
-  void set_cloth_mesh(PhysxClothMesh *mesh);
-
-  void set_name(const char *name);
-  void set_global_pos(const LPoint3f &pos);
-  void set_global_mat(const LMatrix4f &mat);
-  void set_global_hpr(float h, float p, float r);
-  void set_thickness(float thickness);
-  void set_density(float density);
-  void set_bending_stiffness(float stiffness);
-  void set_stretching_stiffness(float stiffness);
-  void set_damping_coefficient(float damping);
-  void set_friction(float friction);
-  void set_pressure(float pressure);
-  void set_tear_factor(float tearFactor);
-  void set_solver_iterations(unsigned int interations);
-  void set_flag(PhysxClothFlag flag, bool value);
-
-  const char *get_name() const;
-  LPoint3f get_global_pos() const;
-  LMatrix4f get_global_mat() const;
-  float get_thickness() const;
-  float get_density() const;
-  float get_bending_stiffness() const;
-  float get_stretching_stiffness() const;
-  float get_damping_coefficient() const;
-  float get_friction() const;
-  float get_pressure() const;
-  float get_tear_factor() const;
-  unsigned int get_solver_iterations() const;
-  bool get_flag(PhysxClothFlag flag) const;
-
-public:
-  NxClothDesc _desc;
-
-private:
-  std::string _name;
-};
-
-#include "physxClothDesc.I"
-
-#endif // PHYSXCLOTHDESC_H

+ 0 - 47
panda/src/physx/physxClothMesh.I

@@ -1,47 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothMesh.I
- * @author enn0x
- * @date 2010-03-28
- */
-
-/**
- *
- */
-INLINE PhysxClothMesh::
-PhysxClothMesh() : PhysxObject() {
-
-}
-
-/**
- *
- */
-INLINE PhysxClothMesh::
-~PhysxClothMesh() {
-
-}
-
-/**
- *
- */
-INLINE void PhysxClothMesh::
-ls() const {
-
-  ls(nout);
-}
-
-/**
- *
- */
-INLINE void PhysxClothMesh::
-ls(std::ostream &out, int indent_level) const {
-
-  indent(out, indent_level) << get_type().get_name()
-                            << " (at 0x" << this << ")\n";
-}

+ 0 - 66
panda/src/physx/physxClothMesh.cxx

@@ -1,66 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothMesh.cxx
- * @author enn0x
- * @date 2010-03-28
- */
-
-#include "physxClothMesh.h"
-#include "physxMeshPool.h"
-
-TypeHandle PhysxClothMesh::_type_handle;
-
-/**
- *
- */
-void PhysxClothMesh::
-link(NxClothMesh *meshPtr) {
-
-  // Link self
-  PhysxManager::get_global_ptr()->_cloth_meshes.add(this);
-  _ptr = meshPtr;
-  _error_type = ET_ok;
-}
-
-/**
- *
- */
-void PhysxClothMesh::
-unlink() {
-
-  // Unlink self
-  _error_type = ET_released;
-  PhysxManager::get_global_ptr()->_cloth_meshes.remove(this);
-}
-
-/**
- *
- */
-void PhysxClothMesh::
-release() {
-
-  nassertv(_error_type == ET_ok);
-
-  unlink();
-  NxGetPhysicsSDK()->releaseClothMesh(*_ptr);
-  _ptr = nullptr;
-
-  PhysxMeshPool::release_cloth_mesh(this);
-}
-
-/**
- * Returns the reference count for shared meshes.
- */
-unsigned int PhysxClothMesh::
-get_reference_count() const {
-
-  nassertr(_error_type == ET_ok, 0);
-
-  return _ptr->getReferenceCount();
-}

+ 0 - 71
panda/src/physx/physxClothMesh.h

@@ -1,71 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothMesh.h
- * @author enn0x
- * @date 2010-03-28
- */
-
-#ifndef PHYSXCLOTHMESH_H
-#define PHYSXCLOTHMESH_H
-
-#include "pandabase.h"
-
-#include "physxObject.h"
-#include "physx_includes.h"
-
-/**
- *
- */
-class EXPCL_PANDAPHYSX PhysxClothMesh : public PhysxObject {
-
-PUBLISHED:
-  unsigned int get_reference_count() const;
-
-PUBLISHED:
-  void release();
-
-  INLINE void ls() const;
-  INLINE void ls(std::ostream &out, int indent_level=0) const;
-
-public:
-  INLINE PhysxClothMesh();
-  INLINE ~PhysxClothMesh();
-
-  INLINE NxClothMesh *ptr() const { return _ptr; };
-
-  void link(NxClothMesh *meshPtr);
-  void unlink();
-
-private:
-  NxClothMesh *_ptr;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    PhysxObject::init_type();
-    register_type(_type_handle, "PhysxClothMesh",
-                  PhysxObject::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxClothMesh.I"
-
-#endif // PHYSXCLOTHMESH_H

+ 0 - 82
panda/src/physx/physxClothMeshDesc.I

@@ -1,82 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothMeshDesc.I
- * @author enn0x
- * @date 2010-03-28
- */
-
-/**
- *
- */
-INLINE PhysxClothMeshDesc::
-PhysxClothMeshDesc() {
-
-  _desc.flags = 0;
-  _desc.pointStrideBytes = sizeof(NxVec3);
-  _desc.triangleStrideBytes = 3*sizeof(NxU32);
-  _desc.points = nullptr;
-  _desc.triangles = nullptr;
-
-  _points = nullptr;
-  _triangles = nullptr;
-  _texcoords = nullptr;
-}
-
-/**
- *
- */
-INLINE PhysxClothMeshDesc::
-~PhysxClothMeshDesc() {
-
-  if (_points) {
-    delete [] _points;
-  }
-
-  if (_triangles) {
-    delete [] _triangles;
-  }
-
-  if (_texcoords) {
-    delete [] _texcoords;
-  }
-}
-
-/**
- * Returns true if the descriptor is valid.
- */
-INLINE bool PhysxClothMeshDesc::
-is_valid() const {
-
-  return _desc.isValid();
-}
-
-/**
- *
- */
-INLINE const NxClothMeshDesc &PhysxClothMeshDesc::
-get_desc() const {
-
-  return _desc;
-}
-
-/**
- *
- */
-INLINE const plist<LPoint2f> PhysxClothMeshDesc::
-get_texcoords() const {
-
-  plist<LPoint2f> texcoords;
-
-  for (unsigned int i=0; i < _desc.numVertices; i++) {
-    LPoint2f uv = _texcoords[i];
-    texcoords.push_back(uv);
-  }
-
-  return texcoords;
-}

+ 0 - 193
panda/src/physx/physxClothMeshDesc.cxx

@@ -1,193 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothMeshDesc.cxx
- * @author enn0x
- * @date 2010-03-28
- */
-
-#include "physxClothMeshDesc.h"
-#include "physxManager.h"
-
-#include "nodePathCollection.h"
-#include "geomNode.h"
-#include "geomVertexReader.h"
-
-/**
- * Sets the number of vertices to be stored within this triangle mesh.  The
- * function allocates memory for the vertices, but it does not set any
- * vertices.
- *
- * This method must be called before any calls to set_vertex are done!
- */
-void PhysxClothMeshDesc::
-set_num_vertices(unsigned int numVertices) {
-
-  // Vertices
-  if (_desc.points) {
-    delete [] _points;
-  }
-
-  _points = new NxVec3[numVertices];
-
-  _desc.numVertices = numVertices;
-  _desc.points = _points;
-
-  // Texture coordinates
-  if (_texcoords) {
-    delete [] _texcoords;
-  }
-
-  _texcoords = new LPoint2f[numVertices];
-}
-
-/**
- * Sets a single vertex.  You have to call the function set_num_vertices
- * before you can call this function.
- */
-void PhysxClothMeshDesc::
-set_vertex(unsigned int idx, const LPoint3f &vert, const LPoint2f &texcoord) {
-
-  nassertv(_desc.numVertices > idx);
-
-  _points[idx] = PhysxManager::point3_to_nxVec3(vert);
-  _texcoords[idx] = texcoord;
-}
-
-/**
- * Sets the number of triangles to be stored in this triangle mesh.
- *
- * This method must be called before any calls to set_triangle are done!
- */
-void PhysxClothMeshDesc::
-set_num_triangles(unsigned int numTriangles) {
-
-  if (_desc.triangles) {
-    delete [] _triangles;
-  }
-
-  _triangles = new NxU32[3 * numTriangles];
-
-  _desc.numTriangles = numTriangles;
-  _desc.triangles = _triangles;
-}
-
-/**
- * Sets a single triangle, by providing the three indices i1, i2, i3.
- */
-void PhysxClothMeshDesc::
-set_triangle(unsigned int idx,
-             unsigned int i1, unsigned int i2, unsigned int i3) {
-
-  nassertv(_desc.numTriangles > idx);
-
-  idx = 3 * idx;
-  _triangles[idx]     = i1;
-  _triangles[idx + 1] = i2;
-  _triangles[idx + 2] = i3;
-}
-
-/**
- * A convenience method to set the mesh data from a NodePath in a single call.
- * The method iterates over the NodePath geoms and collects data for the
- * triangle mesh.
- *
- * Do not use the following function when using this one: - set_num_vertices -
- * set_vertex - set_num_triangles - set_triangle
- */
-void PhysxClothMeshDesc::
-set_from_node_path(const NodePath &np) {
-
-  pvector<LPoint3f> dataVertices;
-  pvector<LPoint2f> dataTexcoords;
-  pvector<int> dataIndices;
-
-  // Collect data from NodePath
-  NodePathCollection npc = np.find_all_matches( "**/+GeomNode" );
-  for (int i=0; i<npc.get_num_paths(); i++) {
-    NodePath gnp = npc.get_path(i);
-    GeomNode *gnode = DCAST(GeomNode, gnp.node());
-
-    for (int j=0; j<gnode->get_num_geoms(); j++) {
-      CPT(Geom) geom = gnode->get_geom(j);
-      CPT(GeomVertexData) vdata = geom->get_vertex_data();
-      GeomVertexReader reader;
-
-      // Vertices
-      reader = GeomVertexReader(vdata, InternalName::get_vertex());
-      while (!reader.is_at_end()) {
-        dataVertices.push_back(reader.get_data3f());
-      }
-
-      // Texcoords
-      reader = GeomVertexReader(vdata, InternalName::get_texcoord());
-      while (!reader.is_at_end()) {
-        dataTexcoords.push_back(reader.get_data2f());
-      }
-
-      // Indices
-      for (int k=0; k<geom->get_num_primitives(); k++) {
-
-        CPT(GeomPrimitive) prim = geom->get_primitive(k);
-        prim = prim->decompose();
-
-        for (int l=0; l<prim->get_num_primitives(); l++) {
-
-          int s = prim->get_primitive_start(l);
-          int e = prim->get_primitive_end(l);
-
-          for (int l=s; l<e; l++) {
-            dataIndices.push_back(prim->get_vertex(l));
-          }
-        }
-      }
-    }
-  }
-
-  // Set descriptor members
-  int i;
-
-  NxU32 numVertices = dataVertices.size();
-  NxU32 numTriangles = dataIndices.size() / 3;
-
-  _points = new NxVec3[numVertices];
-  _triangles = new NxU32[3 * numTriangles];
-  _texcoords = new LPoint2f[numVertices];
-
-  i = 0;
-  pvector<LPoint3f>::const_iterator vit;
-  for (vit=dataVertices.begin(); vit!=dataVertices.end(); vit++) {
-    LPoint3f v = *vit;
-
-    _points[i] = PhysxManager::point3_to_nxVec3(v);
-    i++;
-  }
-
-  i = 0;
-  pvector<LPoint2f>::const_iterator tcit;
-  for (tcit=dataTexcoords.begin(); tcit!=dataTexcoords.end(); tcit++) {
-    LPoint2f tc = *tcit;
-
-    _texcoords[i]   = tc;
-    i++;
-  }
-
-  i = 0;
-  pvector<int>::const_iterator iit;
-  for(iit=dataIndices.begin(); iit!=dataIndices.end(); iit++) {
-    NxU32 idx = *iit;
-
-    _triangles[i] = idx;
-    i++;
-  }
-
-  _desc.numVertices = numVertices;
-  _desc.points = _points;
-  _desc.numTriangles = numTriangles;
-  _desc.triangles = _triangles;
-}

+ 0 - 59
panda/src/physx/physxClothMeshDesc.h

@@ -1,59 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothMeshDesc.h
- * @author enn0x
- * @date 2010-03-28
- */
-
-#ifndef PHYSXCLOTHMESHDESC_H
-#define PHYSXCLOTHMESHDESC_H
-
-#include "pandabase.h"
-#include "luse.h"
-#include "nodePath.h"
-#include "plist.h"
-
-#include "physx_includes.h"
-
-/**
- *
- */
-class EXPCL_PANDAPHYSX PhysxClothMeshDesc {
-
-PUBLISHED:
-  INLINE PhysxClothMeshDesc();
-  INLINE ~PhysxClothMeshDesc();
-
-  INLINE bool is_valid() const;
-
-  void set_num_vertices(unsigned int n);
-  void set_vertex(unsigned int idx,
-                  const LPoint3f &vert, const LPoint2f &texcoord);
-
-  void set_num_triangles(unsigned int n);
-  void set_triangle(unsigned int idx,
-                    unsigned int i1, unsigned int i2, unsigned int i3);
-
-  void set_from_node_path(const NodePath &np);
-
-public:
-  INLINE const NxClothMeshDesc &get_desc() const;
-  INLINE const plist<LPoint2f> get_texcoords() const;
-
-private:
-  NxClothMeshDesc _desc;
-  NxVec3 *_points;
-  NxU32 *_triangles;
-
-  LPoint2f *_texcoords;
-};
-
-#include "physxClothMeshDesc.I"
-
-#endif // PHYSXCLOTHMESHDESC_H

+ 0 - 45
panda/src/physx/physxClothNode.I

@@ -1,45 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothNode.I
- * @author enn0x
- * @date 2010-04-05
- */
-
-/**
- *
- */
-INLINE PhysxClothNode::
-PhysxClothNode(const char *name) : GeomNode(name) {
-
-  _numVertices = 0;
-
-  _vdata = new GeomVertexData("", GeomVertexFormat::get_v3n3t2(), Geom::UH_stream);
-
-  _prim = new GeomTriangles(Geom::UH_stream);
-  _prim->set_shade_model(Geom::SM_uniform);
-
-  _geom = new Geom(_vdata);
-  _geom->add_primitive(_prim);
-
-  this->add_geom(_geom);
-
-  _numTexcoords = 0;
-  _texcoords = nullptr;
-}
-
-/**
- *
- */
-INLINE PhysxClothNode::
-~PhysxClothNode() {
-
-  if (_texcoords) {
-    delete [] _texcoords;
-  }
-}

+ 0 - 215
panda/src/physx/physxClothNode.cxx

@@ -1,215 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothNode.cxx
- * @author enn0x
- * @date 2010-04-05
- */
-
-#include "physxClothNode.h"
-#include "physxCloth.h"
-#include "physxFileStream.h"
-
-#include "geomVertexFormat.h"
-#include "geomVertexWriter.h"
-
-TypeHandle PhysxClothNode::_type_handle;
-
-/**
- *
- */
-void PhysxClothNode::
-allocate(PhysxCloth *cloth) {
-
-  _cloth = cloth;
-
-  // Retrieve number of vertices and triangles the hard way
-  NxClothMeshDesc meshDesc;
-  _cloth->ptr()->getClothMesh()->saveToDesc(meshDesc);
-
-  NxU32 numVertices = meshDesc.numVertices;
-  NxU32 numTriangles = meshDesc.numTriangles;
-
-  NxReal factor = 1.0f; // TODO: max(1.0f, factor);
-
-  // Reserve more memory for vertices than the initial mesh takes because
-  // tearing creates new vertices
-  NxU32 maxVertices = factor * numVertices;
-  _mesh.verticesPosBegin = (NxVec3 *)malloc(sizeof(NxVec3) * maxVertices);
-  _mesh.verticesNormalBegin = (NxVec3 *)malloc(sizeof(NxVec3) * maxVertices);
-  _mesh.verticesPosByteStride = sizeof(NxVec3);
-  _mesh.verticesNormalByteStride = sizeof(NxVec3);
-  _mesh.maxVertices = maxVertices;
-  _mesh.numVerticesPtr = (NxU32 *)malloc(sizeof(NxU32));
-
-  // The number of triangles is constant, even if the cloth is torn
-  NxU32 maxIndices = 3 * numTriangles;
-  _mesh.indicesBegin = (NxU32 *)malloc(sizeof(NxU32) * maxIndices);
-  _mesh.indicesByteStride = sizeof(NxU32);
-  _mesh.maxIndices = maxIndices;
-  _mesh.numIndicesPtr = (NxU32 *)malloc(sizeof(NxU32));
-
-  NxU32 maxParentIndices = maxVertices;
-  _mesh.parentIndicesBegin = (NxU32 *)malloc(sizeof(NxU32)*maxParentIndices);
-  _mesh.parentIndicesByteStride = sizeof(NxU32);
-  _mesh.maxParentIndices = maxParentIndices;
-  _mesh.numParentIndicesPtr = (NxU32 *)malloc(sizeof(NxU32));
-
-  *(_mesh.numVerticesPtr) = 0;
-  *(_mesh.numIndicesPtr) = 0;
-
-  _cloth->ptr()->setMeshData(_mesh);
-}
-
-/**
- *
- */
-void PhysxClothNode::
-update() {
-
-  NxU32 numVertices = *(_mesh.numVerticesPtr);
-
-  if (numVertices == _numVertices) {
-    update_geom();
-  }
-  else {
-    update_texcoords();
-    create_geom();
-    _numVertices = numVertices;
-  }
-}
-
-/**
- *
- */
-void PhysxClothNode::
-create_geom() {
-
-  _prim->clear_vertices();
-
-  GeomVertexWriter vwriter = GeomVertexWriter(_vdata, InternalName::get_vertex());
-  GeomVertexWriter nwriter = GeomVertexWriter(_vdata, InternalName::get_normal());
-  GeomVertexWriter twriter = GeomVertexWriter(_vdata, InternalName::get_texcoord());
-
-  // Vertices and normals
-  NxU32 numVertices = *(_mesh.numVerticesPtr);
-  NxVec3 *v = (NxVec3 *)_mesh.verticesPosBegin;
-  NxVec3 *n = (NxVec3 *)_mesh.verticesNormalBegin;
-
-  for (unsigned int i=0; i < numVertices; i++) {
-    vwriter.add_data3f(v->x, v->y, v->z);
-    v++;
-    nwriter.add_data3f(n->x, n->y, n->z);
-    n++;
-  }
-
-  // Texture coordinates
-  NxReal tex_u;
-  NxReal tex_v;
-
-  if (_texcoords) {
-    for (unsigned int i=0; i < numVertices; i++) {
-      tex_u = _texcoords[2*i];
-      tex_v = _texcoords[2*i+1];
-      twriter.add_data2f(tex_u, tex_v);
-    }
-  }
-
-  // Indices
-  NxU32 numIndices = *(_mesh.numIndicesPtr);
-  NxU32 *idx = (NxU32 *)_mesh.indicesBegin;
-
-  for (unsigned int i=0; i < numIndices; i++) {
-    _prim->add_vertex(*idx);
-    idx++;
-  }
-
-  _prim->close_primitive();
-}
-
-/**
- *
- */
-void PhysxClothNode::
-update_geom() {
-
-  GeomVertexWriter vwriter = GeomVertexWriter(_vdata, InternalName::get_vertex());
-  GeomVertexWriter nwriter = GeomVertexWriter(_vdata, InternalName::get_normal());
-
-  NxU32 numVertices = *(_mesh.numVerticesPtr);
-  NxVec3 *v = (NxVec3 *)_mesh.verticesPosBegin;
-  NxVec3 *n = (NxVec3 *)_mesh.verticesNormalBegin;
-
-  for (unsigned int i=0; i < numVertices; i++) {
-    vwriter.set_data3f(v->x, v->y, v->z);
-    v++;
-    nwriter.set_data3f(n->x, n->y, n->z);
-    n++;
-  }
-}
-
-/**
- *
- */
-void PhysxClothNode::
-update_texcoords() {
-
-  if (!_texcoords) {
-    return;
-  }
-
-  NxU32 numVertices = *(_mesh.numVerticesPtr);
-  NxU32 *parent = (NxU32 *)_mesh.parentIndicesBegin + _numTexcoords;
-
-  for (NxU32 i=_numTexcoords; i < numVertices; i++, parent++) {
-    _texcoords[2*i] = _texcoords[2*(*parent)];
-    _texcoords[2*i+1] = _texcoords[2*(*parent)+1];
-  }
-
-  _numTexcoords = numVertices;
-}
-
-/**
- *
- */
-bool PhysxClothNode::
-set_texcoords(const Filename &filename) {
-
-  if (filename.empty()) {
-    return false;
-  }
-
-  Filename fn(filename);
-  fn.resolve_filename(get_model_path());
-
-  if (!filename.exists()) {
-    return false;
-  }
-
-  PhysxFileStream fs(filename.c_str(), true);
-
-  fs.readByte(); // N
-  fs.readByte(); // X
-  fs.readByte(); // X
-  fs.readByte(); // 1
-  fs.readByte(); // T
-  fs.readByte(); // E
-  fs.readByte(); // X
-  fs.readByte(); // C
-  fs.readByte(); // 1
-
-  _numTexcoords = fs.readDword();
-  _texcoords = new float[2 * _numTexcoords];
-
-  for (unsigned int i=0; i<_numTexcoords; i++) {
-    _texcoords[2*i]   = fs.readFloat();
-    _texcoords[2*i+1] = fs.readFloat();
-  }
-
-  return true;
-}

+ 0 - 85
panda/src/physx/physxClothNode.h

@@ -1,85 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxClothNode.h
- * @author enn0x
- * @date 2010-04-05
- */
-
-#ifndef PHYSXCLOTHNODE_H
-#define PHYSXCLOTHNODE_H
-
-#include "pandabase.h"
-#include "pointerTo.h"
-#include "geomNode.h"
-#include "transformState.h"
-#include "geom.h"
-#include "geomVertexData.h"
-#include "geomTriangles.h"
-#include "filename.h"
-
-#include "physx_includes.h"
-
-class PhysxCloth;
-
-/**
- * Renderable geometry which represents a cloth mesh.
- */
-class EXPCL_PANDAPHYSX PhysxClothNode : public GeomNode {
-PUBLISHED:
-  INLINE explicit PhysxClothNode(const char *name);
-  INLINE ~PhysxClothNode();
-
-  bool set_texcoords(const Filename &filename);
-
-public:
-  void allocate(PhysxCloth *cloth);
-  void update();
-
-private:
-  void create_geom();
-  void update_geom();
-  void update_texcoords();
-
-  unsigned int _numVertices;
-
-  NxMeshData _mesh;
-
-  PT(GeomVertexData) _vdata;
-  PT(Geom) _geom;
-  PT(GeomTriangles) _prim;
-
-  PT(PhysxCloth) _cloth;
-
-  unsigned int _numTexcoords;
-  float *_texcoords;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    GeomNode::init_type();
-    register_type(_type_handle, "PhysxClothNode",
-                  GeomNode::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxClothNode.I"
-
-#endif // PHYSXCLOTHNODE_H

+ 0 - 46
panda/src/physx/physxConstraintDominance.I

@@ -1,46 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxConstraintDominance.I
- * @author enn0x
- * @date 2009-12-22
- */
-
-/**
- *
- */
-INLINE PhysxConstraintDominance::
-PhysxConstraintDominance(float d0, float d1) : _dominance(d0, d1) {
-
-}
-
-/**
- *
- */
-INLINE PhysxConstraintDominance::
-~PhysxConstraintDominance() {
-
-}
-
-/**
- *
- */
-INLINE NxConstraintDominance PhysxConstraintDominance::
-get_dominance() const {
-
-  return _dominance;
-}
-
-/**
- *
- */
-INLINE void PhysxConstraintDominance::
-set_dominance(NxConstraintDominance value) {
-
-  _dominance = value;
-}

+ 0 - 50
panda/src/physx/physxConstraintDominance.cxx

@@ -1,50 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxConstraintDominance.cxx
- * @author enn0x
- * @date 2009-12-22
- */
-
-#include "physxConstraintDominance.h"
-
-/**
- * Retruns the first dominance factor.
- */
-float PhysxConstraintDominance::
-get_0() const {
-
-  return _dominance.dominance0;
-}
-
-/**
- * Returns the second dominance factor.
- */
-float PhysxConstraintDominance::
-get_1() const {
-
-  return _dominance.dominance1;
-}
-
-/**
- * Sets the first dominance factor.
- */
-void PhysxConstraintDominance::
-set_0(float d0) {
-
-  _dominance.dominance0 = d0;
-}
-
-/**
- * Sets the second dominance factor.
- */
-void PhysxConstraintDominance::
-set_1(float d1) {
-
-  _dominance.dominance1 = d1;
-}

+ 0 - 53
panda/src/physx/physxConstraintDominance.h

@@ -1,53 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxConstraintDominance.h
- * @author enn0x
- * @date 2009-12-22
- */
-
-#ifndef PHYSXCONSTRAINTDOMINANCE_H
-#define PHYSXCONSTRAINTDOMINANCE_H
-
-#include "pandabase.h"
-#include "luse.h"
-
-#include "config_physx.h"
-
-class PhysxShape;
-
-/**
- * Expresses the dominance relationship of a constraint.  For the time being
- * only three settings are permitted:. (1.0f, 1.0f), (0.0f, 1.0f), and (1.0f,
- * 0.0f).
- *
- * See PhysxScene::set_dominance_group_pair for a detailed explanation of
- * dominance behaviour.
- */
-class EXPCL_PANDAPHYSX PhysxConstraintDominance {
-
-PUBLISHED:
-  INLINE PhysxConstraintDominance(float d0, float d1);
-  INLINE ~PhysxConstraintDominance();
-
-  float get_0() const;
-  float get_1() const;
-  void set_0(float d0);
-  void set_1(float d1);
-
-public:
-  INLINE void set_dominance(NxConstraintDominance value);
-  INLINE NxConstraintDominance get_dominance() const;
-
-private:
-  NxConstraintDominance _dominance;
-};
-
-#include "physxConstraintDominance.I"
-
-#endif // PHYSXCONSTRAINTDOMINANCE_H

+ 0 - 29
panda/src/physx/physxContactPair.I

@@ -1,29 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxContactPair.I
- * @author enn0x
- * @date 2009-12-19
- */
-
-/**
- *
- */
-INLINE PhysxContactPair::
-PhysxContactPair(const NxContactPair pair) {
-
-  _pair = pair;
-}
-
-/**
- *
- */
-INLINE PhysxContactPair::
-~PhysxContactPair() {
-
-}

+ 0 - 136
panda/src/physx/physxContactPair.cxx

@@ -1,136 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxContactPair.cxx
- * @author enn0x
- * @date 2009-12-19
- */
-
-#include "physxContactPair.h"
-#include "physxManager.h"
-#include "physxActor.h"
-#include "physxContactPoint.h"
-
-TypeHandle PhysxContactPair::_type_handle;
-
-/**
- * Returns the first of the two actors that makes up this pair.
- */
-PhysxActor *PhysxContactPair::
-get_actor_a() const {
-
-  if (_pair.isDeletedActor[0]) {
-    physx_cat.warning() << "actor A has been deleted" << std::endl;
-    return nullptr;
-  }
-
-  NxActor *actorPtr = _pair.actors[0];
-  return (actorPtr == nullptr) ? nullptr : (PhysxActor *)actorPtr->userData;
-}
-
-/**
- * Returns the second of the two actors that make up his pair.
- */
-PhysxActor *PhysxContactPair::
-get_actor_b() const {
-
-  if (_pair.isDeletedActor[1]) {
-    physx_cat.warning() << "actor B has been deleted" << std::endl;
-    return nullptr;
-  }
-
-  NxActor *actorPtr = _pair.actors[1];
-  return (actorPtr == nullptr) ? nullptr : (PhysxActor *)actorPtr->userData;
-}
-
-/**
- * Returns true if the first of the two actors is deleted.
- */
-bool PhysxContactPair::
-is_deleted_a() const {
-
-  return _pair.isDeletedActor[0];
-}
-
-/**
- * Returns true if the second of the two actors is deleted.
- */
-bool PhysxContactPair::
-is_deleted_b() const {
-
-  return _pair.isDeletedActor[1];
-}
-
-/**
- * Returns the total contact normal force that was applied for this pair, to
- * maintain nonpenetration constraints.
- *
- * You should set the ContactPairFlag CPF_notify_forces in order to receive
- * this value.
- *
- * @see PhysxScene::set_actor_pair_flag
- * @see PhysxScene::set_actor_group_pair_flag
- */
-LVector3f PhysxContactPair::
-get_sum_normal_force() const {
-
-  return PhysxManager::nxVec3_to_vec3(_pair.sumNormalForce);
-}
-
-/**
- * Returns the total tangential force that was applied for this pair.
- *
- * You should set the ContactPairFlag CPF_notify_forces in order to receive
- * this value.
- *
- * @see PhysxScene::set_actor_pair_flag
- * @see PhysxScene::set_actor_group_pair_flag
- */
-LVector3f PhysxContactPair::
-get_sum_friction_force() const {
-
-  return PhysxManager::nxVec3_to_vec3(_pair.sumFrictionForce);
-}
-
-/**
- * Returns the total number of contact points reported in this pair's contact
- * stream.
- *
- * This method is a helper for iterating over the pair's contact stream.
- */
-unsigned int PhysxContactPair::
-get_num_contact_points() {
-
-  if (_contacts.size() == 0) {
-    NxContactStreamIterator it(_pair.stream);
-    while(it.goNextPair()) {
-      while(it.goNextPatch()) {
-        while(it.goNextPoint()) {
-          PhysxContactPoint cp;
-          cp.set(it);
-          _contacts.push_back(cp);
-        }
-      }
-    }
-  }
-
-  return _contacts.size();
-}
-
-/**
- * Returns an instance of PhysxContactPoint, which represents a single entry
- * of this pair's contact stream.
- *
- * This method is a helper for iterating over the pair's contact stream.
- */
-PhysxContactPoint PhysxContactPair::
-get_contact_point(unsigned int idx) const {
-
-  nassertr(idx < _contacts.size(), PhysxContactPoint::empty());
-  return _contacts[idx];
-}

+ 0 - 77
panda/src/physx/physxContactPair.h

@@ -1,77 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxContactPair.h
- * @author enn0x
- * @date 2009-12-19
- */
-
-#ifndef PHYSXCONTACTPAIR_H
-#define PHYSXCONTACTPAIR_H
-
-#include "pandabase.h"
-#include "luse.h"
-#include "typedReferenceCount.h"
-#include "pvector.h"
-
-#include "config_physx.h"
-
-class PhysxShape;
-class PhysxContactPoint;
-
-/**
- * An instance of this class is send with contact reporting events.  It
- * contains detailed information on the contact.
- */
-class EXPCL_PANDAPHYSX PhysxContactPair : public TypedReferenceCount {
-
-PUBLISHED:
-  INLINE ~PhysxContactPair();
-
-  bool is_deleted_a() const;
-  bool is_deleted_b() const;
-  PhysxActor *get_actor_a() const;
-  PhysxActor *get_actor_b() const;
-  LVector3f get_sum_normal_force() const;
-  LVector3f get_sum_friction_force() const;
-
-  unsigned int get_num_contact_points();
-  PhysxContactPoint get_contact_point(unsigned int idx) const;
-  MAKE_SEQ(get_contact_points, get_num_contact_points, get_contact_point);
-
-public:
-  INLINE PhysxContactPair(const NxContactPair pair);
-
-private:
-  NxContactPair _pair;
-  pvector<PhysxContactPoint> _contacts;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    TypedReferenceCount::init_type();
-    register_type(_type_handle, "PhysxContactPair",
-                  TypedReferenceCount::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxContactPair.I"
-
-#endif // PHYSXCONTACTPAIR_H

+ 0 - 29
panda/src/physx/physxContactPoint.I

@@ -1,29 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxContactPoint.I
- * @author enn0x
- * @date 2009-12-20
- */
-
-/**
- *
- */
-INLINE PhysxContactPoint::
-PhysxContactPoint() {
-
-  // _hit = hit;
-}
-
-/**
- *
- */
-INLINE PhysxContactPoint::
-~PhysxContactPoint() {
-
-}

+ 0 - 96
panda/src/physx/physxContactPoint.cxx

@@ -1,96 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxContactPoint.cxx
- * @author enn0x
- * @date 2009-12-20
- */
-
-#include "physxContactPoint.h"
-#include "physxManager.h"
-#include "physxShape.h"
-
-TypeHandle PhysxContactPoint::_type_handle;
-
-/**
- *
- */
-void PhysxContactPoint::
-set(NxContactStreamIterator it) {
-
-  _point = it.getPoint();
-  _normal = it.getPatchNormal();
-  _normal_force = it.getPointNormalForce();
-  _separation = it.getSeparation();
-  _feature_index0 = it.getFeatureIndex0();
-  _feature_index1 = it.getFeatureIndex1();
-}
-
-/**
- *
- */
-PhysxContactPoint PhysxContactPoint::
-empty() {
-
-  return PhysxContactPoint();
-}
-
-
-/**
- * Returns the contact point position.
- */
-LPoint3f PhysxContactPoint::
-get_point() const {
-
-  return PhysxManager::nxVec3_to_point3(_point);
-}
-
-/**
- * Retrieves the patch normal.
- */
-LVector3f PhysxContactPoint::
-get_normal() const {
-
-  return PhysxManager::nxVec3_to_vec3(_normal);
-}
-
-/**
- * Retrieves the point normal force.
- */
-float PhysxContactPoint::
-get_normal_force() const {
-
-  return _normal_force;
-}
-
-/**
- * Return the separation for the contact point.
- */
-float PhysxContactPoint::
-get_separation() const {
-
-  return _separation;
-}
-
-/**
- * Retrieves the feature index.
- */
-unsigned int PhysxContactPoint::
-get_feature_index0() const {
-
-  return _feature_index0;
-}
-
-/**
- * Retrieves the feature index.
- */
-unsigned int PhysxContactPoint::
-get_feature_index1() const {
-
-  return _feature_index1;
-}

+ 0 - 78
panda/src/physx/physxContactPoint.h

@@ -1,78 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxContactPoint.h
- * @author enn0x
- * @date 2009-12-20
- */
-
-#ifndef PHYSXCONTACTPOINT_H
-#define PHYSXCONTACTPOINT_H
-
-#include "pandabase.h"
-#include "luse.h"
-#include "typedObject.h"
-
-#include "config_physx.h"
-
-class PhysxShape;
-
-/**
- * A helper structure for iterating over contact streams reported by
- * PhysxContactPair.
- */
-class EXPCL_PANDAPHYSX PhysxContactPoint : public TypedObject {
-
-PUBLISHED:
-  INLINE PhysxContactPoint();
-  INLINE ~PhysxContactPoint();
-
-  LPoint3f get_point() const;
-  LVector3f get_normal() const;
-  float get_normal_force() const;
-  float get_separation() const;
-  unsigned int get_feature_index0() const;
-  unsigned int get_feature_index1() const;
-
-public:
-  static PhysxContactPoint empty();
-
-  void set(NxContactStreamIterator it);
-
-private:
-  NxVec3 _point;
-  NxVec3 _normal;
-  NxReal _normal_force;
-  NxReal _separation;
-  NxU32 _feature_index0;
-  NxU32 _feature_index1;
-
-public:
-  static TypeHandle get_class_type() {
-    return _type_handle;
-  }
-  static void init_type() {
-    TypedReferenceCount::init_type();
-    register_type(_type_handle, "PhysxContactPoint",
-                  TypedReferenceCount::get_class_type());
-  }
-  virtual TypeHandle get_type() const {
-    return get_class_type();
-  }
-  virtual TypeHandle force_init_type() {
-    init_type();
-    return get_class_type();
-  }
-
-private:
-  static TypeHandle _type_handle;
-};
-
-#include "physxContactPoint.I"
-
-#endif // PHYSXCONTACTPOINT_H

+ 0 - 29
panda/src/physx/physxContactReport.I

@@ -1,29 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxContactReport.I
- * @author enn0x
- * @date 2009-09-19
- */
-
-/**
- *
- */
-INLINE PhysxContactReport::
-PhysxContactReport() : NxUserContactReport() {
-
-  _enabled = false;
-}
-
-/**
- *
- */
-INLINE PhysxContactReport::
-~PhysxContactReport() {
-
-}

+ 0 - 91
panda/src/physx/physxContactReport.cxx

@@ -1,91 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxContactReport.cxx
- * @author enn0x
- * @date 2009-09-19
- */
-
-#include "physxContactReport.h"
-#include "physxContactPair.h"
-#include "physxManager.h"
-
-#include "event.h"
-#include "eventQueue.h"
-#include "eventParameter.h"
-
-PStatCollector PhysxContactReport::_pcollector("App:PhysX:Contact Reporting");
-
-/**
- *
- */
-void PhysxContactReport::
-enable() {
-
-  _enabled = true;
-}
-
-/**
- *
- */
-void PhysxContactReport::
-disable() {
-
-  _enabled = false;
-}
-
-/**
- *
- */
-bool PhysxContactReport::
-is_enabled() const {
-
-  return _enabled;
-}
-
-/**
- *
- */
-void PhysxContactReport::
-onContactNotify(NxContactPair &pair, NxU32 flags) {
-
-  if (!_enabled) {
-    return;
-  }
-
-  _pcollector.start();
-
-  Event *event;
-  if (flags & NX_NOTIFY_ON_START_TOUCH) {
-    event = new Event("physx-contact-start");
-  }
-  else if (flags & NX_NOTIFY_ON_END_TOUCH) {
-    event = new Event("physx-contact-stop");
-  }
-  else if (flags & NX_NOTIFY_ON_TOUCH) {
-    event = new Event("physx-contact-touch");
-  }
-  else if (flags & NX_NOTIFY_ON_START_TOUCH_FORCE_THRESHOLD) {
-    event = new Event("physx-contact-start-force-threshold");
-  }
-  else if (flags & NX_NOTIFY_ON_END_TOUCH_FORCE_THRESHOLD) {
-    event = new Event("physx-contact-stop-force-threshold");
-  }
-  else if (flags & NX_NOTIFY_ON_TOUCH_FORCE_THRESHOLD) {
-    event = new Event("physx-contact-touch-force-threshold");
-  }
-  else {
-    return;
-  }
-
-  PT(PhysxContactPair) ppair = new PhysxContactPair(pair);
-  event->add_parameter(EventParameter(ppair));
-  EventQueue::get_global_event_queue()->queue_event(event);
-
-  _pcollector.stop();
-}

+ 0 - 43
panda/src/physx/physxContactReport.h

@@ -1,43 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxContactReport.h
- * @author enn0x
- * @date 2009-09-19
- */
-
-#ifndef PHYSXCONTACTREPORT_H
-#define PHYSXCONTACTREPORT_H
-
-#include "pandabase.h"
-#include "pStatCollector.h"
-#include "physx_includes.h"
-
-/**
- * Implementation of the NxUserContactReport interface.
- */
-class EXPCL_PANDAPHYSX PhysxContactReport : public NxUserContactReport {
-
-public:
-  INLINE PhysxContactReport();
-  INLINE ~PhysxContactReport();
-
-  void enable();
-  void disable();
-  bool is_enabled() const;
-
-  void onContactNotify(NxContactPair& pair, NxU32 flags);
-
-private:
-  bool _enabled;
-  static PStatCollector _pcollector;
-};
-
-#include "physxContactReport.I"
-
-#endif // PHYSXCONTACTREPORT_H

+ 0 - 69
panda/src/physx/physxController.I

@@ -1,69 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxController.I
- * @author enn0x
- * @date 2009-09-24
- */
-
-/**
- *
- */
-INLINE PhysxController::
-PhysxController() : PhysxObject() {
-
-  _speed = NxVec3(0.0f, 0.0f, 0.0f);
-  _omega = 0.0f;
-  _heading = 0.0f;
-
-  _jumping = false;
-  _jump_time = 0.0f;
-  _jump_v0 = 0.0f;
-
-  _sharpness = 1.0f;
-  _min_dist = 0.0001f;
-
-  _up_vector = NxVec3(0.0f, 1.0f, 0.0f);
-  _up_axis = (NxHeightFieldAxis)physx_up_axis.get_value();
-
-  switch (_up_axis) {
-  case NX_Z:
-    _up_quat = NxQuat(90.0f, NxVec3(1.0f, 0.0f, 0.0f));
-    break;
-  case NX_Y:
-    _up_quat = NxQuat(0.0f, NxVec3(1.0f, 0.0f, 0.0f));
-    break;
-  default:
-    physx_cat.error() << "only y-up and z-up are permitted" << std::endl;
-  }
-
-  _up_quat_inv = _up_quat;
-  _up_quat_inv.invert();
-}
-
-/**
- *
- */
-INLINE void PhysxController::
-ls() const {
-
-  ls(nout);
-}
-
-/**
- *
- */
-INLINE void PhysxController::
-ls(std::ostream &out, int indent_level) const {
-
-  indent(out, indent_level) << get_type().get_name()
-                            << " (at 0x" << this << ")";
-
-  out << " A:0x" << get_actor();
-  out << "\n";
-}

+ 0 - 333
panda/src/physx/physxController.cxx

@@ -1,333 +0,0 @@
-/**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file physxController.cxx
- * @author enn0x
- * @date 2009-09-24
- */
-
-#include "event.h"
-#include "eventQueue.h"
-#include "eventParameter.h"
-
-#include "physxController.h"
-#include "physxManager.h"
-#include "physxActor.h"
-#include "physxBoxController.h"
-#include "physxCapsuleController.h"
-
-TypeHandle PhysxController::_type_handle;
-
-/**
- *
- */
-void PhysxController::
-release() {
-
-  nassertv(_error_type == ET_ok);
-
-  NxControllerManager *cm = get_actor()->get_scene()->cm();
-  unlink();
-  cm->releaseController(*ptr());
-}
-
-/**
- *
- */
-PhysxController *PhysxController::
-factory(NxControllerType controllerType) {
-
-  switch (controllerType) {
-
-  case NX_CONTROLLER_BOX:
-    return new PhysxBoxController();
-
-  case NX_CONTROLLER_CAPSULE:
-    return new PhysxCapsuleController();
-
-  default:
-    break;
-  }
-
-  physx_cat.error() << "Unknown controller type.\n";
-  return nullptr;
-}
-
-
-/**
- * Retrieves the actor which this controller is associated with.
- */
-PhysxActor *PhysxController::
-get_actor() const {
-
-  nassertr(_error_type == ET_ok, nullptr);
-  return (PhysxActor *)(ptr()->getActor()->userData);
-}
-
-/**
- * Sets the position of the controller is global space.  This can be used for
- * initial placement or for teleporting the character.
- */
-void PhysxController::
-set_pos(const LPoint3f &pos) {
-
-  nassertv(_error_type == ET_ok);
-  ptr()->setPosition(PhysxManager::point3_to_nxExtVec3(pos));
-}
-
-/**
- * Retruns the position of the controller is global space.
- */
-LPoint3f PhysxController::
-get_pos() const {
-
-  nassertr(_error_type == ET_ok, LPoint3f::zero());
-  return PhysxManager::nxExtVec3_to_point3(ptr()->getPosition());
-}
-
-/**
- * Sharpness is used to smooth motion with a feedback filter, having a value
- * between 0 (so smooth it doesn't move) and 1 (no smoothing = unfiltered
- * motion). Sharpness can ease the motion curve when the auto-step feature is
- * used with boxes.  Default value is 1.0.
- */
-void PhysxController::
-set_sharpness(float sharpness) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(sharpness > 0.0f);
-  nassertv(sharpness <= 1.0f);
-
-  _sharpness = sharpness;
-}
-
-/**
- * Returns the sharpness used to ease the motion curve when the auto-step
- * feature is used.  Default value is 1.0.
- */
-float PhysxController::
-get_sharpness() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _sharpness;
-}
-
-/**
- * Enable/Disable collisions for this controller and actor.
- */
-void PhysxController::
-set_collision(bool enable) {
-
-  nassertv(_error_type == ET_ok);
-  ptr()->setCollision(enable);
-}
-
-/**
- * Sets the the minimum travelled distance to consider when moving the
- * controller.  If travelled distance is smaller, the character doesn't move.
- * This is used to stop the recursive motion algorithm when remaining distance
- * to travel is small.  The default value is 0.0001.
- */
-void PhysxController::
-set_min_distance(float min_dist) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(min_dist > 0.0f);
-
-  _min_dist = min_dist;
-}
-
-/**
- * Sets the step height/offset for the controller.
- */
-void PhysxController::
-set_step_offset(float offset) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv(offset > 0.0f);
-
-  ptr()->setStepOffset(offset);
-}
-
-/**
- * Sets the linear speed of the controller in global space.
- */
-void PhysxController::
-set_global_speed(const LVector3f &speed) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!speed.is_nan());
-
-  _speed = NxVec3(speed.get_x(), speed.get_y(), speed.get_z());
-}
-
-/**
- * Sets the linear speed of the controller in local coordinates.
- */
-void PhysxController::
-set_local_speed(const LVector3f &speed) {
-
-  nassertv(_error_type == ET_ok);
-  nassertv_always(!speed.is_nan());
-
-  NodePath np = get_actor()->get_node_path();
-  nassertv(!np.is_empty());
-
-  NxQuat q = ptr()->getActor()->getGlobalOrientationQuat();
-  NxVec3 s = NxVec3(speed.get_x(), speed.get_y(), speed.get_z());
-  _speed = (q * _up_quat_inv).rot(s);
-}
-
-/**
- * Sets the angular velocity (degrees per second) of the controller.  The
- * angular velocity is used to compute the new heading when updating the
- * controller.
- */
-void PhysxController::
-set_omega(float omega) {
-
-  nassertv(_error_type == ET_ok);
-  _omega = omega;
-}
-
-/**
- * Sets the heading of the controller is global space.  Note: only heading is
- * supported.  Pitch and roll are constrained by PhysX in order to alyways
- * keep the character upright.
- */
-void PhysxController::
-set_h(float heading) {
-
-  nassertv(_error_type == ET_ok);
-
-  _heading = heading;
-  NxQuat q(_heading, _up_vector);
-  ptr()->getActor()->moveGlobalOrientationQuat(_up_quat * q);
-}
-
-/**
- * Returns the heading of the controller in global space.
- */
-float PhysxController::
-get_h() const {
-
-  nassertr(_error_type == ET_ok, 0.0f);
-  return _heading;
-}
-
-/**
- * The character controller uses caching in order to speed up collision
- * testing, this caching can not detect when static objects have changed in
- * the scene.  You need to call this method when such changes have been made.
- */
-void PhysxController::
-report_scene_changed() {
-
-  nassertv(_error_type == ET_ok);
-  ptr()->reportSceneChanged();
-}
-
-/**
- *
- */
-void PhysxController::
-update_controller(float dt) {
-
-  nassertv(_error_type == ET_ok);
-
-  // Speed
-  NxU32 mask = 0xFFFFFFFF;
-  NxU32 collision_flags;
-  NxVec3 gravity;
-
-  ptr()->getActor()->getScene().getGravity(gravity);
-
-  NxVec3 d = (_speed + gravity) * dt;
-
-  NxReal heightDelta = get_jump_height(dt, gravity);
-  if (heightDelta != 0.0f) {
-    ((_up_axis == NX_Z) ? d.z : d.y) += heightDelta;
-  }
-
-  ptr()->move(d, mask, _min_dist, collision_flags, _sharpness);
-
-  if (collision_flags & NXCC_COLLISION_DOWN) {
-    stop_jump();
-  }
-
-  // Omega
-  if (_omega != 0.0f) {
-    NxReal delta = _omega * dt;
-    _heading += delta;
-    NxQuat q(_heading, _up_vector);
-    ptr()->getActor()->moveGlobalOrientationQuat(_up_quat * q);
-  }
-
-  // Reset speed and omega
-  _speed.zero();
-  _omega = 0.0f;
-}
-
-/**
- *
- */
-NxReal PhysxController::
-get_jump_height(float dt, NxVec3 &gravity) {
-
-  if (_jumping == false) {
-    return 0.0f;
-  }
-
-  _jump_time += dt;
-
-  float G = (_up_axis == NX_Z) ? gravity.z : gravity.y;
-  float h = 2.0f * G * _jump_time * _jump_time + _jump_v0 * _jump_time;
-  return (h - G) * dt;
-}
-
-/**
- * Enters the jump mode.  The parameter is the intial upward velocity of the
- * character.
- */
-void PhysxController::
-start_jump(float v0) {
-
-  nassertv(_error_type == ET_ok);
-
-  if (_jumping == true) {
-     return;
-  }
-
-  _jumping = true;
-  _jump_time = 0.0f;
-  _jump_v0 = v0;
-}
-
-/**
- * Leaves the jump mode.  This method is automatically called if a ground
- * collision is detected.  Usually users need not call this method.
- */
-void PhysxController::
-stop_jump() {
-
-  nassertv(_error_type == ET_ok);
-
-  if (_jumping == false) {
-    return;
-  }
-
-  _jumping = false;
-
-  // NxVec3 v = ptr()->getActor()->getLinearVelocity(); double velocity =
-  // (_up_axis == NX_Z) ? v.z : v.y;
-
-  Event *event = new Event("physx-controller-down");
-  event->add_parameter(EventParameter(this));
-  // event->add_parameter(EventParameter(velocity));
-  EventQueue::get_global_event_queue()->queue_event(event);
-}

Some files were not shown because too many files changed in this diff