浏览代码

Edited copyright, updated readme

markcwm 8 年之前
父节点
当前提交
90ebd03ea0

+ 2 - 2
README.md

@@ -11,7 +11,7 @@ The wrapper is not ready for use yet.
 
 #### License ####
 
-Newton Dynamics is licensed under the zlib open source license.
+Both the library and wrapper are licensed with the zlib license.
 
 #### Assimp (Open Asset Import) ####
 
@@ -23,4 +23,4 @@ The wrapper is now a source import and can load meshes from streams allowing inc
 
 #### License ####
 
-Assimp is released as open source under the terms of a 3-clause BSD license.
+Both the library and wrapper are licensed with the 3-clause BSD license.

+ 42 - 66
assimp.mod/assimp.bmx

@@ -1,66 +1,42 @@
-' Copyright (c) 2009-2011 Peter Scheutz
-' All rights reserved.
-'
-' Redistribution and use in source and binary forms, with or without
-' modification, are permitted provided that the following conditions are met:
-'   * Redistributions of source code must retain the above copyright
-'     notice, this list of conditions and the following disclaimer.
-'   * Redistributions in binary form must reproduce the above copyright
-'     notice, this list of conditions and the following disclaimer in the
-'     documentation and/or other materials provided with the distribution.
-'   * Neither the name of copyright holder nor the names of its contributors
-'     may be used to endorse or promote products derived from this software
-'     without specific prior written permission.
-'
-' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-' IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-' ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-' LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-' CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-' SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-' INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-' CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-' ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-' THE POSSIBILITY OF SUCH DAMAGE.
-
-Strict
-
-Rem
-bbdoc: Assimp wrapper for Openb3d
-about: Assimp mesh loader and helper functions.
-End Rem
-Module Openb3dlibs.Assimp
-
-ModuleInfo "Version: 0.40"
-ModuleInfo "License: BSD-3-Clause License"
-ModuleInfo "Copyright: 2009-2011 Peter Scheutz"
-ModuleInfo "Authors: Peter Scheutz, Mark Mcvittie"
-ModuleInfo "Source: https://github.com/markcwm/openb3dlibs.mod"
-ModuleInfo "Original: https://github.com/Difference/blitzmax-assimp"
-
-Import Openb3d.B3dglgraphics
-Import Openb3dlibs.Assimplib
-
-Include "types.bmx"
-
-Rem
-bbdoc: Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">LoadMesh</a> but without a parent parameter.
-End Rem
-Function aiLoadMesh:TMesh( filename:String )
-	Return aiLoader.LoadMesh( filename )
-End Function
-
-Rem
-bbdoc: Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">FitMesh</a>.
-End Rem
-Function aiFitAnimMesh( m:TEntity, x#, y#, z#, w#, h#, d#, uniform:Int=False )
-	aiHelper.FitAnimMesh( m, x, y, z, w, h, d, uniform )
-End Function
-
-Rem
-bbdoc: Creates a list of valid files to load.
-EndRem
-Function aiEnumFiles( list:TList, dir:String, skipExt:TList )
-	aiHelper.EnumFiles( list, dir, skipExt )
-End Function
+' assimp.bmx
+
+Strict
+
+Rem
+bbdoc: Assimp wrapper for Openb3d
+about: Assimp mesh loader and helper functions.
+End Rem
+Module Openb3dlibs.Assimp
+
+ModuleInfo "Version: 0.38"
+ModuleInfo "License: BSD-3-Clause"
+ModuleInfo "Copyright: Wrapper - 2009-2017 Peter Scheutz, Mark Mcvittie"
+ModuleInfo "Copyright: Library - 2006-2012 assimp team"
+ModuleInfo "Source: https://github.com/markcwm/openb3dlibs.mod"
+ModuleInfo "Source: https://github.com/Difference/blitzmax-assimp"
+
+Import Openb3d.B3dglgraphics
+Import Openb3dlibs.Assimplib
+
+Include "types.bmx"
+
+Rem
+bbdoc: Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">LoadMesh</a> but without a parent parameter.
+End Rem
+Function aiLoadMesh:TMesh( filename:String )
+	Return aiLoader.LoadMesh( filename )
+End Function
+
+Rem
+bbdoc: Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">FitMesh</a>.
+End Rem
+Function aiFitAnimMesh( m:TEntity, x#, y#, z#, w#, h#, d#, uniform:Int=False )
+	aiHelper.FitAnimMesh( m, x, y, z, w, h, d, uniform )
+End Function
+
+Rem
+bbdoc: Creates a list of valid files to load.
+EndRem
+Function aiEnumFiles( list:TList, dir:String, skipExt:TList )
+	aiHelper.EnumFiles( list, dir, skipExt )
+End Function

+ 49 - 49
assimp.mod/doc/commands.html

@@ -1,49 +1,49 @@
-<html><head><title>Assimp wrapper for Openb3d reference</title>
-<link rel=stylesheet Type=text/css href='../../../../doc/bmxstyle.css'>
-</head><body>
-<table width=100% cellspacing=0><tr align=center><td class=small>&nbsp;</td>
-<td class=small width=1%><b>Openb3dlibs.Assimp:</b></td>
-<td class=small width=1%><a href=#functions class=small>Functions</a></td>
-<td class=small width=1%><a href=#modinfo class=small>Modinfo</a></td>
-<td class=small width=1%><a href='../../../../mod/openb3dlibs.mod/assimp.mod/assimp.bmx' class=small>Source</a></td>
-<td class=small>&nbsp;</td></tr></table>
-<h1>Assimp wrapper for Openb3d</h1>
-Assimp mesh loader and helper functions.
-<h2><a name=functions></a>Functions Summary</h2><table class=doc width=100%>
-<tr><td class=docleft width=1%><a href=#aiEnumFiles>aiEnumFiles</a></td><td class=docright>
-Creates a list of valid files to load.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiFitAnimMesh>aiFitAnimMesh</a></td><td class=docright>
-Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">FitMesh</a>.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiLoadMesh>aiLoadMesh</a></td><td class=docright>
-Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">LoadMesh</a> but without a parent parameter.
-</td></tr>
-</table>
-<h2
- id=functionsdet>Functions
-</h2>
-<table class=doc width=100% cellspacing=3 id=aiEnumFiles>
-<tr><td class=doctop colspan=2>Function aiEnumFiles( list:TList, dir:String, skipExt:TList )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Creates a list of valid files to load.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiFitAnimMesh>
-<tr><td class=doctop colspan=2>Function aiFitAnimMesh( m:TEntity, x#, y#, z#, w#, h#, d#, uniform:Int=False )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">FitMesh</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiLoadMesh>
-<tr><td class=doctop colspan=2>Function aiLoadMesh:TMesh( filename:String )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">LoadMesh</a> but without a parent parameter.</td></tr>
-</table>
-<br>
-<h2 id=modinfo>Module Information</h2>
-<table width=100%>
-<tr><th width=1%>Version</th><td>0.40</td></tr>
-<tr><th width=1%>License</th><td>BSD-3-Clause License</td></tr>
-<tr><th width=1%>Copyright</th><td>2009-2011 Peter Scheutz</td></tr>
-<tr><th width=1%>Authors</th><td>Peter Scheutz, Mark Mcvittie</td></tr>
-<tr><th width=1%>Source</th><td>https://github.com/markcwm/openb3dlibs.mod</td></tr>
-<tr><th width=1%>Original</th><td>https://github.com/Difference/blitzmax-assimp</td></tr>
-</body></html>
+<html><head><title>Assimp wrapper for Openb3d reference</title>
+<link rel=stylesheet Type=text/css href='../../../../doc/bmxstyle.css'>
+</head><body>
+<table width=100% cellspacing=0><tr align=center><td class=small>&nbsp;</td>
+<td class=small width=1%><b>Openb3dlibs.Assimp:</b></td>
+<td class=small width=1%><a href=#functions class=small>Functions</a></td>
+<td class=small width=1%><a href=#modinfo class=small>Modinfo</a></td>
+<td class=small width=1%><a href='../../../../mod/openb3dlibs.mod/assimp.mod/assimp.bmx' class=small>Source</a></td>
+<td class=small>&nbsp;</td></tr></table>
+<h1>Assimp wrapper for Openb3d</h1>
+Assimp mesh loader and helper functions.
+<h2><a name=functions></a>Functions Summary</h2><table class=doc width=100%>
+<tr><td class=docleft width=1%><a href=#aiEnumFiles>aiEnumFiles</a></td><td class=docright>
+Creates a list of valid files to load.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiFitAnimMesh>aiFitAnimMesh</a></td><td class=docright>
+Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">FitMesh</a>.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiLoadMesh>aiLoadMesh</a></td><td class=docright>
+Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">LoadMesh</a> but without a parent parameter.
+</td></tr>
+</table>
+<h2
+ id=functionsdet>Functions
+</h2>
+<table class=doc width=100% cellspacing=3 id=aiEnumFiles>
+<tr><td class=doctop colspan=2>Function aiEnumFiles( list:TList, dir:String, skipExt:TList )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Creates a list of valid files to load.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiFitAnimMesh>
+<tr><td class=doctop colspan=2>Function aiFitAnimMesh( m:TEntity, x#, y#, z#, w#, h#, d#, uniform:Int=False )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">FitMesh</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiLoadMesh>
+<tr><td class=doctop colspan=2>Function aiLoadMesh:TMesh( filename:String )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Like <a href="http://www.blitzbasic.com/b3ddocs/command.php?name=LoadMesh">LoadMesh</a> but without a parent parameter.</td></tr>
+</table>
+<br>
+<h2 id=modinfo>Module Information</h2>
+<table width=100%>
+<tr><th width=1%>Version</th><td>0.38</td></tr>
+<tr><th width=1%>License</th><td>BSD-3-Clause</td></tr>
+<tr><th width=1%>Copyright</th><td>Wrapper - 2009-2017 Peter Scheutz, Mark Mcvittie</td></tr>
+<tr><th width=1%>Copyright</th><td>Library - 2006-2012 assimp team</td></tr>
+<tr><th width=1%>Source</th><td>https://github.com/markcwm/openb3dlibs.mod</td></tr>
+<tr><th width=1%>Source</th><td>https://github.com/Difference/blitzmax-assimp</td></tr>
+</body></html>

+ 33 - 57
assimplib.mod/assimplib.bmx

@@ -1,57 +1,33 @@
-' Copyright (c) 2009-2011 Peter Scheutz
-' All rights reserved.
-'
-' Redistribution and use in source and binary forms, with or without
-' modification, are permitted provided that the following conditions are met:
-'   * Redistributions of source code must retain the above copyright
-'     notice, this list of conditions and the following disclaimer.
-'   * Redistributions in binary form must reproduce the above copyright
-'     notice, this list of conditions and the following disclaimer in the
-'     documentation and/or other materials provided with the distribution.
-'   * Neither the name of copyright holder nor the names of its contributors
-'     may be used to endorse or promote products derived from this software
-'     without specific prior written permission.
-'
-' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-' IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-' ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-' LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-' CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-' SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-' INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-' CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-' ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-' THE POSSIBILITY OF SUCH DAMAGE.
-
-Strict
-
-Rem
-bbdoc: Assimp
-about: Wrapper for Open Asset Import library. Requires BaH.Boost.
-End Rem
-Module Openb3dlibs.Assimplib
-
-ModuleInfo "Version: 0.40"
-ModuleInfo "License: BSD-3-Clause License"
-ModuleInfo "Copyright: 2009-2011 Peter Scheutz"
-ModuleInfo "Authors: Peter Scheutz, Mark Mcvittie"
-ModuleInfo "Source: https://github.com/markcwm/openb3dlibs.mod"
-ModuleInfo "Original: https://github.com/Difference/blitzmax-assimp"
-
-ModuleInfo "History: 0.40 Release on Jul 2017 - source wrapper, mesh streams"
-ModuleInfo "History: 0.35 Release on Sep 2014 - library wrapper, Assimp v3.1.1"
-ModuleInfo "History: 0.30 Release on Apr 2011"
-ModuleInfo "History: 0.22 Release on Nov 2009"
-ModuleInfo "History: 0.07 Initial Release on Jan 2009"
-
-ModuleInfo "CC_OPTS: -fexceptions"
-'ModuleInfo "CC_OPTS: -DASSIMP_ENABLE_BOOST_WORKAROUND"
-
-Import Brl.Math
-Import Brl.Retro
-
-Import "source.bmx"
-Import "common.bmx"
-
-Include "types.bmx"
+' assimplib.bmx
+
+Strict
+
+Rem
+bbdoc: Assimp
+about: Wrapper for Open Asset Import library. Requires BaH.Boost.
+End Rem
+Module Openb3dlibs.Assimplib
+
+ModuleInfo "Version: 0.38"
+ModuleInfo "License: BSD-3-Clause"
+ModuleInfo "Copyright: Wrapper - 2009-2017 Peter Scheutz, Mark Mcvittie"
+ModuleInfo "Copyright: Library - 2006-2012 assimp team"
+ModuleInfo "Source: https://github.com/markcwm/openb3dlibs.mod"
+ModuleInfo "Source: https://github.com/Difference/blitzmax-assimp"
+
+ModuleInfo "History: 0.38 Release on Jul 2017 - added source wrapper, mesh streams"
+ModuleInfo "History: 0.36 Release on Sep 2014 - library wrapper, update to assimp v3.1.1"
+ModuleInfo "History: 0.30 Release on Apr 2011"
+ModuleInfo "History: 0.22 Release on Nov 2009"
+ModuleInfo "History: 0.07 Initial Release on Jan 2009"
+
+ModuleInfo "CC_OPTS: -fexceptions"
+'ModuleInfo "CC_OPTS: -DASSIMP_ENABLE_BOOST_WORKAROUND"
+
+Import Brl.Math
+Import Brl.Retro
+
+Import "source.bmx"
+Import "common.bmx"
+
+Include "types.bmx"

+ 136 - 136
assimplib.mod/doc/commands.html

@@ -1,131 +1,131 @@
-<html><head><title>Assimp reference</title>
-<link rel=stylesheet Type=text/css href='../../../../doc/bmxstyle.css'>
-</head><body>
-<table width=100% cellspacing=0><tr align=center><td class=small>&nbsp;</td>
-<td class=small width=1%><b>Openb3dlibs.Assimplib:</b></td>
-<td class=small width=1%><a href=#functions class=small>Functions</a></td>
-<td class=small width=1%><a href=#types class=small>Types</a></td>
-<td class=small width=1%><a href=#modinfo class=small>Modinfo</a></td>
-<td class=small width=1%><a href='../../../../mod/openb3dlibs.mod/assimplib.mod/assimplib.bmx' class=small>Source</a></td>
-<td class=small>&nbsp;</td></tr></table>
-<h1>Assimp</h1>
-Wrapper for Open Asset Import library. Requires BaH.Boost.
-<h2><a name=functions></a>Functions Summary</h2><table class=doc width=100%>
-<tr><td class=docleft width=1%><a href=#aiGetMaterialColor>aiGetMaterialColor</a></td><td class=docright>
-Get a color (3 or 4 floats) from the material.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiGetMaterialFloatArray>aiGetMaterialFloatArray</a></td><td class=docright>
-Get an array of floating-point values from the material.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiGetMaterialIntegerArray>aiGetMaterialIntegerArray</a></td><td class=docright>
-Get an array of integer values from the material.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiGetMaterialString>aiGetMaterialString</a></td><td class=docright>
-Get a string from the material.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiGetMaterialTexture>aiGetMaterialTexture</a></td><td class=docright>
-Get all values pertaining to a particular texture slot from the material.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiGetMaterialTextureCount>aiGetMaterialTextureCount</a></td><td class=docright>
-Get the number of textures for a particular texture type.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiImportFile>aiImportFile</a></td><td class=docright>
-Reads the given file and returns its content.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiImportFileFromMemory>aiImportFileFromMemory</a></td><td class=docright>
-Reads the given file from a given memory buffer.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiIsExtensionSupported>aiIsExtensionSupported</a></td><td class=docright>
-Returns the error text of the last failed import process.
-</td></tr>
-<tr><td class=docleft width=1%><a href=#aiReleaseImport>aiReleaseImport</a></td><td class=docright>
-Releases all resources associated with the given import process.
-</td></tr>
-</table>
-<h2><a name=types></a>Types Summary</h2><table class=doc width=100%>
-<tr><td class=docleft width=1%><a href=#aiMesh>aiMesh</a></td><td class=docright>
-A mesh represents a geometry Or model with a single material.
-</td></tr>
-</table>
-<h2
- id=functionsdet>Functions
-</h2>
-<table class=doc width=100% cellspacing=3 id=aiGetMaterialColor>
-<tr><td class=doctop colspan=2>Function aiGetMaterialColor:Int( pMat:Byte Ptr, pKey$z, iType:Int, index:Int, pOut:Byte Ptr )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Get a color (3 or 4 floats) from the material.</td></tr>
+<html><head><title>Assimp reference</title>
+<link rel=stylesheet Type=text/css href='../../../../doc/bmxstyle.css'>
+</head><body>
+<table width=100% cellspacing=0><tr align=center><td class=small>&nbsp;</td>
+<td class=small width=1%><b>Openb3dlibs.Assimplib:</b></td>
+<td class=small width=1%><a href=#functions class=small>Functions</a></td>
+<td class=small width=1%><a href=#types class=small>Types</a></td>
+<td class=small width=1%><a href=#modinfo class=small>Modinfo</a></td>
+<td class=small width=1%><a href='../../../../mod/openb3dlibs.mod/assimplib.mod/assimplib.bmx' class=small>Source</a></td>
+<td class=small>&nbsp;</td></tr></table>
+<h1>Assimp</h1>
+Wrapper for Open Asset Import library. Requires BaH.Boost.
+<h2><a name=functions></a>Functions Summary</h2><table class=doc width=100%>
+<tr><td class=docleft width=1%><a href=#aiGetMaterialColor>aiGetMaterialColor</a></td><td class=docright>
+Get a color (3 or 4 floats) from the material.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiGetMaterialFloatArray>aiGetMaterialFloatArray</a></td><td class=docright>
+Get an array of floating-point values from the material.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiGetMaterialIntegerArray>aiGetMaterialIntegerArray</a></td><td class=docright>
+Get an array of integer values from the material.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiGetMaterialString>aiGetMaterialString</a></td><td class=docright>
+Get a string from the material.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiGetMaterialTexture>aiGetMaterialTexture</a></td><td class=docright>
+Get all values pertaining to a particular texture slot from the material.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiGetMaterialTextureCount>aiGetMaterialTextureCount</a></td><td class=docright>
+Get the number of textures for a particular texture type.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiImportFile>aiImportFile</a></td><td class=docright>
+Reads the given file and returns its content.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiImportFileFromMemory>aiImportFileFromMemory</a></td><td class=docright>
+Reads the given file from a given memory buffer.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiIsExtensionSupported>aiIsExtensionSupported</a></td><td class=docright>
+Returns the error text of the last failed import process.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#aiReleaseImport>aiReleaseImport</a></td><td class=docright>
+Releases all resources associated with the given import process.
+</td></tr>
+</table>
+<h2><a name=types></a>Types Summary</h2><table class=doc width=100%>
+<tr><td class=docleft width=1%><a href=#aiMesh>aiMesh</a></td><td class=docright>
+A mesh represents a geometry Or model with a single material.
+</td></tr>
+</table>
+<h2
+ id=functionsdet>Functions
+</h2>
+<table class=doc width=100% cellspacing=3 id=aiGetMaterialColor>
+<tr><td class=doctop colspan=2>Function aiGetMaterialColor:Int( pMat:Byte Ptr, pKey$z, iType:Int, index:Int, pOut:Byte Ptr )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Get a color (3 or 4 floats) from the material.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/structai_material.html">MaterialSystem.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiGetMaterialFloatArray>
-<tr><td class=doctop colspan=2>Function aiGetMaterialFloatArray:Int( pMat:Byte Ptr, pKey$z, iType:Int, index:Int, pOut:Float Ptr, pMax:Int Ptr )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Get an array of floating-point values from the material.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiGetMaterialFloatArray>
+<tr><td class=doctop colspan=2>Function aiGetMaterialFloatArray:Int( pMat:Byte Ptr, pKey$z, iType:Int, index:Int, pOut:Float Ptr, pMax:Int Ptr )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Get an array of floating-point values from the material.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/structai_material.html">MaterialSystem.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiGetMaterialIntegerArray>
-<tr><td class=doctop colspan=2>Function aiGetMaterialIntegerArray:Int( pMat:Byte Ptr, pKey$z, iType:Int, index:Int, pOut:Int Ptr, pMax:Int Ptr )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Get an array of integer values from the material.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiGetMaterialIntegerArray>
+<tr><td class=doctop colspan=2>Function aiGetMaterialIntegerArray:Int( pMat:Byte Ptr, pKey$z, iType:Int, index:Int, pOut:Int Ptr, pMax:Int Ptr )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Get an array of integer values from the material.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/structai_material.html">MaterialSystem.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiGetMaterialString>
-<tr><td class=doctop colspan=2>Function aiGetMaterialString:Int( pMat:Byte Ptr, pKey$z, iType:Int, index:Int, pOut:Byte Ptr )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Get a string from the material.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiGetMaterialString>
+<tr><td class=doctop colspan=2>Function aiGetMaterialString:Int( pMat:Byte Ptr, pKey$z, iType:Int, index:Int, pOut:Byte Ptr )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Get a string from the material.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/structai_material.html">MaterialSystem.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiGetMaterialTexture>
-<tr><td class=doctop colspan=2>Function aiGetMaterialTexture:Int( pMat:Byte Ptr, texType:Int, index:Int, path:Byte Ptr, mapping:Byte Ptr=Null, uvindex:Int Ptr=Null, blend:Float Ptr=Null, op:Byte Ptr=Null, mapmode:Byte Ptr=Null, flags:Int Ptr=Null )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Get all values pertaining to a particular texture slot from the material.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiGetMaterialTexture>
+<tr><td class=doctop colspan=2>Function aiGetMaterialTexture:Int( pMat:Byte Ptr, texType:Int, index:Int, path:Byte Ptr, mapping:Byte Ptr=Null, uvindex:Int Ptr=Null, blend:Float Ptr=Null, op:Byte Ptr=Null, mapmode:Byte Ptr=Null, flags:Int Ptr=Null )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Get all values pertaining to a particular texture slot from the material.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/structai_material.html">MaterialSystem.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiGetMaterialTextureCount>
-<tr><td class=doctop colspan=2>Function aiGetMaterialTextureCount:Int( pMat:Byte Ptr, texType:Int )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Get the number of textures for a particular texture type.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiGetMaterialTextureCount>
+<tr><td class=doctop colspan=2>Function aiGetMaterialTextureCount:Int( pMat:Byte Ptr, texType:Int )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Get the number of textures for a particular texture type.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/structai_material.html">MaterialSystem.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiImportFile>
-<tr><td class=doctop colspan=2>Function aiImportFile:Byte Ptr( pFile$z, pFlags:Int )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Reads the given file and returns its content.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/material_8h.html">material.h</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiImportFile>
+<tr><td class=doctop colspan=2>Function aiImportFile:Byte Ptr( pFile$z, pFlags:Int )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Reads the given file and returns its content.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/class_assimp_1_1_importer.html">Assimp.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/cimport_8h.html">cimport.h</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiImportFileFromMemory>
-<tr><td class=doctop colspan=2>Function aiImportFileFromMemory:Byte Ptr( pBuffer:Byte Ptr,pLength:Int,pFlags:Int,pHint$z )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Reads the given file from a given memory buffer.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/cimport_8h.html">cimport.h</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiImportFileFromMemory>
+<tr><td class=doctop colspan=2>Function aiImportFileFromMemory:Byte Ptr( pBuffer:Byte Ptr,pLength:Int,pFlags:Int,pHint$z )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Reads the given file from a given memory buffer.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/class_assimp_1_1_importer.html">Assimp.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/cimport_8h.html">cimport.h</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiIsExtensionSupported>
-<tr><td class=doctop colspan=2>Function aiIsExtensionSupported:Int( pFile$z )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Returns the error text of the last failed import process.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/cimport_8h.html">cimport.h</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiIsExtensionSupported>
+<tr><td class=doctop colspan=2>Function aiIsExtensionSupported:Int( pFile$z )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Returns the error text of the last failed import process.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/class_assimp_1_1_importer.html">Assimp.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/cimport_8h.html">cimport.h</a>.</td></tr>
-</table>
-<br>
-<table class=doc width=100% cellspacing=3 id=aiReleaseImport>
-<tr><td class=doctop colspan=2>Function aiReleaseImport( pScene:Byte Ptr )</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Releases all resources associated with the given import process.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/cimport_8h.html">cimport.h</a>.</td></tr>
+</table>
+<br>
+<table class=doc width=100% cellspacing=3 id=aiReleaseImport>
+<tr><td class=doctop colspan=2>Function aiReleaseImport( pScene:Byte Ptr )</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Releases all resources associated with the given import process.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>See <a href="http://assimp.sourceforge.net/lib_html/class_assimp_1_1_importer.html">Assimp.cpp</a>
-and <a href="http://assimp.sourceforge.net/lib_html/cimport_8h.html">cimport.h</a>.</td></tr>
-</table>
-<br>
-<h2
- id=typesdet>Types
-</h2>
-<table class=doc width=100% cellspacing=3 id=aiMesh>
-<tr><td class=doctop colspan=2>Type aiMesh</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>A mesh represents a geometry Or model with a single material.</td></tr>
+and <a href="http://assimp.sourceforge.net/lib_html/cimport_8h.html">cimport.h</a>.</td></tr>
+</table>
+<br>
+<h2
+ id=typesdet>Types
+</h2>
+<table class=doc width=100% cellspacing=3 id=aiMesh>
+<tr><td class=doctop colspan=2>Type aiMesh</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>A mesh represents a geometry Or model with a single material.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>* It usually consists of a number of vertices And a series of primitives/faces
 * referencing the vertices. In addition there might be a series of bones, each
 * of them addressing a number of vertices with a certain weight. Vertex data
@@ -141,21 +141,21 @@ and <a href="http://assimp.sourceforge.net/lib_html/cimport_8h.html">cimport.h</
 * <b>code</b>
 * aiScene::mFlags
 * <b>endcode</b>
-*/</td></tr>
-</table>
-<br>
-<h2 id=modinfo>Module Information</h2>
-<table width=100%>
-<tr><th width=1%>Version</th><td>0.40</td></tr>
-<tr><th width=1%>License</th><td>BSD-3-Clause License</td></tr>
-<tr><th width=1%>Copyright</th><td>2009-2011 Peter Scheutz</td></tr>
-<tr><th width=1%>Authors</th><td>Peter Scheutz, Mark Mcvittie</td></tr>
-<tr><th width=1%>Source</th><td>https://github.com/markcwm/openb3dlibs.mod</td></tr>
-<tr><th width=1%>Original</th><td>https://github.com/Difference/blitzmax-assimp</td></tr>
-<tr><th width=1%>History</th><td>0.40 Release on Jul 2017 - source wrapper, mesh streams</td></tr>
-<tr><th width=1%>History</th><td>0.35 Release on Sep 2014 - library wrapper, Assimp v3.1.1</td></tr>
-<tr><th width=1%>History</th><td>0.30 Release on Apr 2011</td></tr>
-<tr><th width=1%>History</th><td>0.22 Release on Nov 2009</td></tr>
-<tr><th width=1%>History</th><td>0.07 Initial Release on Jan 2009</td></tr>
-<tr><th width=1%>CC_OPTS</th><td>-fexceptions</td></tr>
-</body></html>
+*/</td></tr>
+</table>
+<br>
+<h2 id=modinfo>Module Information</h2>
+<table width=100%>
+<tr><th width=1%>Version</th><td>0.38</td></tr>
+<tr><th width=1%>License</th><td>BSD-3-Clause</td></tr>
+<tr><th width=1%>Copyright</th><td>Wrapper - 2009-2017 Peter Scheutz, Mark Mcvittie</td></tr>
+<tr><th width=1%>Copyright</th><td>Library - 2006-2012 assimp team</td></tr>
+<tr><th width=1%>Source</th><td>https://github.com/markcwm/openb3dlibs.mod</td></tr>
+<tr><th width=1%>Source</th><td>https://github.com/Difference/blitzmax-assimp</td></tr>
+<tr><th width=1%>History</th><td>0.38 Release on Jul 2017 - added source wrapper, mesh streams</td></tr>
+<tr><th width=1%>History</th><td>0.36 Release on Sep 2014 - library wrapper, update to assimp v3.1.1</td></tr>
+<tr><th width=1%>History</th><td>0.30 Release on Apr 2011</td></tr>
+<tr><th width=1%>History</th><td>0.22 Release on Nov 2009</td></tr>
+<tr><th width=1%>History</th><td>0.07 Initial Release on Jan 2009</td></tr>
+<tr><th width=1%>CC_OPTS</th><td>-fexceptions</td></tr>
+</body></html>

+ 11 - 0
bsd.txt

@@ -0,0 +1,11 @@
+Copyright 2009-2017 Peter Scheutz, Mark Mcvittie
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 3 - 1
examples/newton/balloon.bmx

@@ -1,9 +1,10 @@
 ' balloon.bmx
-' create a spherical body, apply a force, and track its motion over time.
+' create a spherical body, apply a force, and track its motion over time
 
 SuperStrict
 
 Framework Openb3d.B3dglgraphics
+
 Import Openb3dLibs.NewtonDynamics
 Import Brl.Standardio
 
@@ -12,6 +13,7 @@ Global ng:TNewtonGlobal = New TNewtonGlobal
 
 Main()
 
+
 Function Main()
 
 	' init scene

+ 3 - 1
examples/newton/bouncing_ball.bmx

@@ -1,14 +1,16 @@
 ' bouncing_ball.bmx
-' basic example with force and torque callback.
+' basic example with force and torque callback
 
 SuperStrict
 
 Framework Openb3d.B3dglgraphics
+
 Import Openb3dLibs.NewtonDynamics
 Import Brl.Standardio
 
 Main()
 
+
 Function Main()
 
 	' init scene

+ 3 - 1
examples/newton/user_data.bmx

@@ -1,9 +1,10 @@
 ' user_data.bmx
-' set and retrieve custom user data.
+' set and retrieve custom user data
 
 SuperStrict
 
 Framework Openb3d.B3dglgraphics
+
 Import Openb3dLibs.NewtonDynamics
 Import Brl.Standardio
 
@@ -12,6 +13,7 @@ Global ng:TNewtonGlobal = New TNewtonGlobal
 
 Main()
 
+
 Function Main()
 
 	' init scene

+ 26 - 1
newtondynamics.mod/NewtonDynamics/source/core/dgThread.cpp

@@ -23,7 +23,6 @@
 #include "dgThread.h"
 
 
-
 dgThread::dgThread ()
 	:m_id(0)
 	,m_terminate(0)
@@ -119,6 +118,13 @@ void* dgThread::dgThreadSystemCallback(void* threadData)
 
 #else  
 
+#ifdef BMX_NG
+#define GC_THREADS
+#include "brl.mod/blitz.mod/bdwgc/include/gc.h"
+extern "C" {
+#include "brl.mod/blitz.mod/blitz.h"
+}
+#endif
 
 #if defined (_MACOSX_VER) || defined (IOS) || defined (__APPLE__)
 	#define DG_SEMAPHORE_NAME "/semaphore"
@@ -241,10 +247,29 @@ void* dgThread::dgThreadSystemCallback(void* threadData)
 	dgSetPrecisionDouble precision;
 
 	dgThread* const me = (dgThread*) threadData;
+
+#ifdef BMX_NG
+	struct GC_stack_base base;
+	GC_get_stack_base(&base);
+	GC_register_my_thread(&base);
+
+#ifdef _WIN32
+	BBThread * thd = bbThreadRegister(me->m_id);
+#else
+	BBThread * thd = bbThreadRegister(me->m_handle);
+#endif
+#endif
+
 	dgInterlockedExchange(&me->m_threadRunning, 1);
 	me->Execute(me->m_id);
 	dgInterlockedExchange(&me->m_threadRunning, 0);
 	dgThreadYield();
+
+#ifdef BMX_NG
+	bbThreadUnregister(thd);
+	GC_unregister_my_thread();
+#endif
+
 	return 0;
 }
 

+ 5 - 27
newtondynamics.mod/common.bmx

@@ -1,29 +1,12 @@
-' Copyright (c) 2015-2016 Bruce A Henderson
-'
-' This software is provided 'as-is', without any express or implied
-' warranty. In no event will the authors be held liable for any damages
-' arising from the use of this software.
-'
-' Permission is granted to anyone to use this software for any purpose,
-' including commercial applications, and to alter it and redistribute it
-' freely, subject to the following restrictions:
-'
-'    1. The origin of this software must not be misrepresented; you must not
-'    claim that you wrote the original software. If you use this software
-'    in a product, an acknowledgment in the product documentation would be
-'    appreciated but is not required.
-'
-'    2. Altered source versions must be plainly marked as such, and must not be
-'    misrepresented as being the original software.
-'
-'    3. This notice may not be removed or altered from any source
-'    distribution.
-'
+' common.bmx
+
 SuperStrict
 
 Import "source.bmx"
 
-
+Const NEWTON_DYNAMIC_BODY:Int = 0
+Const NEWTON_KINEMATIC_BODY	:Int = 1
+Const NEWTON_DEFORMABLE_BODY:Int = 2
 
 Extern
 
@@ -128,8 +111,3 @@ Extern
 	Function NewtonMeshGetUV1Array:Double Ptr(mesh:Byte Ptr)
 	
 End Extern
-
-
-Const NEWTON_DYNAMIC_BODY:Int = 0
-Const NEWTON_KINEMATIC_BODY	:Int = 1
-Const NEWTON_DEFORMABLE_BODY:Int = 2

+ 265 - 11
newtondynamics.mod/doc/commands.html

@@ -18,6 +18,9 @@ Creates a rigid body.
 <tr><td class=docleft width=1%><a href=#TNMatrix>TNMatrix</a></td><td class=docright>
 &nbsp;
 </td></tr>
+<tr><td class=docleft width=1%><a href=#TNMesh>TNMesh</a></td><td class=docright>
+&nbsp;
+</td></tr>
 <tr><td class=docleft width=1%><a href=#TNRayCastDelegate>TNRayCastDelegate</a></td><td class=docright>
 A helper delegate for handling ray casts.
 </td></tr>
@@ -37,15 +40,27 @@ A complex collision geometry tree.
 <tr><td class=docleft width=1%>Information</td><td class=docright>Can be subclassed in order to override callbacks such as OnForceAndTorque().</td></tr>
 </table>
 <table class=doc width=90% align=center><tr ><th class=doctop colspan=2 align=left><a name=TNBody_methods></a>Methods Summary</th></tr>
+<tr><td class=docleft width=1%><a href=#AddForce>AddForce</a></td><td class=docright>
+Adds the net force applied to a rigid body.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#AddTorque>AddTorque</a></td><td class=docright>
+Adds the net torque applied to a rigid body.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#CalculateInverseDynamicsForce>CalculateInverseDynamicsForce</a></td><td class=docright>
+Calculates the next force that net to be applied to the body to archive the desired velocity in the current time step.
+</td></tr>
 <tr><td class=docleft width=1%><a href=#Destroy>Destroy</a></td><td class=docright>
 &nbsp;
 </td></tr>
-<tr><td class=docleft width=1%><a href=#GetAngularDampling>GetAngularDampling</a></td><td class=docright>
-Gets the linear viscous damping of the body.
+<tr><td class=docleft width=1%><a href=#GetAngularDamping>GetAngularDamping</a></td><td class=docright>
+Gets the angular viscous damping of the body.
 </td></tr>
 <tr><td class=docleft width=1%><a href=#GetCentreOfMass>GetCentreOfMass</a></td><td class=docright>
 Gets the relative position of the center of mass of a rigid body.
 </td></tr>
+<tr><td class=docleft width=1%><a href=#GetCollidable>GetCollidable</a></td><td class=docright>
+Returns true if the body is collidable.
+</td></tr>
 <tr><td class=docleft width=1%><a href=#GetForce>GetForce</a></td><td class=docright>
 Gets the net force applied to a rigid body after the last Newton Update.
 </td></tr>
@@ -79,6 +94,12 @@ Gets the net torque applied to a rigid body after the last Newton Update.
 <tr><td class=docleft width=1%><a href=#GetTorqueAcc>GetTorqueAcc</a></td><td class=docright>
 Gets the torque applied on the last call to OnForceAndTorque/apply force and torque callback.
 </td></tr>
+<tr><td class=docleft width=1%><a href=#GetType>GetType</a></td><td class=docright>
+Returns the body type.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetUserData>GetUserData</a></td><td class=docright>
+new.
+</td></tr>
 <tr><td class=docleft width=1%><a href=#GetVelocity>GetVelocity</a></td><td class=docright>
 Gets the global linear velocity of the body.
 </td></tr>
@@ -88,8 +109,11 @@ Gets the world axis aligned bounding box (AABB) of the body.
 <tr><td class=docleft width=1%><a href=#OnForceAndTorque>OnForceAndTorque</a></td><td class=docright>
 &nbsp;
 </td></tr>
-<tr><td class=docleft width=1%><a href=#SetAngularDampling>SetAngularDampling</a></td><td class=docright>
-Sets the linear viscous damping of the body.
+<tr><td class=docleft width=1%><a href=#SetAngularDamping>SetAngularDamping</a></td><td class=docright>
+Applies the angular viscous damping coefficient to the body.
+</td></tr>
+<tr><td class=docleft width=1%><a href=#SetCollidable>SetCollidable</a></td><td class=docright>
+Sets the collidable state for the body.
 </td></tr>
 <tr><td class=docleft width=1%><a href=#SetForce>SetForce</a></td><td class=docright>
 Sets the net force applied to a rigid body.
@@ -100,6 +124,9 @@ Assigns an event function for applying external force and torque to a rigid body
 <tr><td class=docleft width=1%><a href=#SetLinearDamping>SetLinearDamping</a></td><td class=docright>
 Applies the linear viscous damping coefficient to the body.
 </td></tr>
+<tr><td class=docleft width=1%><a href=#SetMassMatrix>SetMassMatrix</a></td><td class=docright>
+new.
+</td></tr>
 <tr><td class=docleft width=1%><a href=#SetMassProperties>SetMassProperties</a></td><td class=docright>
 &nbsp;
 </td></tr>
@@ -115,16 +142,36 @@ Sets the net torque applied to a rigid body.
 <tr><td class=docleft width=1%><a href=#SetTransformCallback>SetTransformCallback</a></td><td class=docright>
 Assign a transformation event function to the body.
 </td></tr>
+<tr><td class=docleft width=1%><a href=#SetUserData>SetUserData</a></td><td class=docright>
+new.
+</td></tr>
 <tr><td class=docleft width=1%><a href=#SetVelocity>SetVelocity</a></td><td class=docright>
 Sets the global linear velocity of the body.
 </td></tr>
 </table>
+<table class=doc width=100% cellspacing=3 id=AddForce>
+<tr><td class=doctop colspan=2>Method AddForce(fx:Float, fy:Float, fz:Float)</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Adds the net force applied to a rigid body.</td></tr>
+<tr><td class=docleft width=1%>Information</td><td class=docright>This method is only effective when called from OnForceAndTorque/apply force and torque callback.</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=AddTorque>
+<tr><td class=doctop colspan=2>Method AddTorque(tx:Float, ty:Float, tz:Float)</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Adds the net torque applied to a rigid body.</td></tr>
+<tr><td class=docleft width=1%>Information</td><td class=docright>This method is only effective when called from OnForceAndTorque/apply force and torque callback.</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=CalculateInverseDynamicsForce>
+<tr><td class=doctop colspan=2>Method CalculateInverseDynamicsForce(timestep:Float, vx:Float, vy:Float, vz:Float, fx:Float Var, fy:Float Var, fz:Float Var)</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Calculates the next force that net to be applied to the body to archive the desired velocity in the current time step.</td></tr>
+<tr><td class=docleft width=1%>Information</td><td class=docright>Can be useful when creating object for game play.
+This treats the body as a point mass and is uses the solver to calculates the net force that need to be applied to the body
+such that it reaches the desired velocity in the net time step.</td></tr>
+</table>
 <table class=doc width=100% cellspacing=3 id=Destroy>
 <tr><td class=doctop colspan=2>Method Destroy()</td></tr>
 </table>
-<table class=doc width=100% cellspacing=3 id=GetAngularDampling>
-<tr><td class=doctop colspan=2>Method GetAngularDampling(aX:Float Var, aY:Float Var, aZ:Float Var)</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Gets the linear viscous damping of the body.</td></tr>
+<table class=doc width=100% cellspacing=3 id=GetAngularDamping>
+<tr><td class=doctop colspan=2>Method GetAngularDamping(aX:Float Var, aY:Float Var, aZ:Float Var)</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Gets the angular viscous damping of the body.</td></tr>
 </table>
 <table class=doc width=100% cellspacing=3 id=GetCentreOfMass>
 <tr><td class=doctop colspan=2>Method GetCentreOfMass(cx:Float Var, cy:Float Var, cz:Float Var)</td></tr>
@@ -134,6 +181,10 @@ when a rigid body is created the center of mass is set the the point c(0, 0, 0),
 the best setting for a rigid body. However there are situations in which and object does not have symmetry or
 simple some kind of special effect is desired, and this origin needs to be changed.</td></tr>
 </table>
+<table class=doc width=100% cellspacing=3 id=GetCollidable>
+<tr><td class=doctop colspan=2>Method GetCollidable:Int()</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Returns true if the body is collidable.</td></tr>
+</table>
 <table class=doc width=100% cellspacing=3 id=GetForce>
 <tr><td class=doctop colspan=2>Method GetForce(fx:Float Var, fy:Float Var, fz:Float Var)</td></tr>
 <tr><td class=docleft width=1%>Description</td><td class=docright>Gets the net force applied to a rigid body after the last Newton Update.</td></tr>
@@ -179,6 +230,15 @@ however since the rigid body already contained the rotation in it, it is more ef
 <tr><td class=docleft width=1%>Description</td><td class=docright>Gets the torque applied on the last call to OnForceAndTorque/apply force and torque callback.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>This method can be useful to modify torque from joint callback.</td></tr>
 </table>
+<table class=doc width=100% cellspacing=3 id=GetType>
+<tr><td class=doctop colspan=2>Method GetType:Int()</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Returns the body type.</td></tr>
+<tr><td class=docleft width=1%>Information</td><td class=docright>Returns one of NEWTON_DYNAMIC_BODY, NEWTON_KINEMATIC_BODY or NEWTON_DEFORMABLE_BODY.</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetUserData>
+<tr><td class=doctop colspan=2>Method GetUserData:Object()</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>new.</td></tr>
+</table>
 <table class=doc width=100% cellspacing=3 id=GetVelocity>
 <tr><td class=doctop colspan=2>Method GetVelocity(vx:Float Var, vy:Float Var, vz:Float Var)</td></tr>
 <tr><td class=docleft width=1%>Description</td><td class=docright>Gets the global linear velocity of the body.</td></tr>
@@ -190,11 +250,21 @@ however since the rigid body already contained the rotation in it, it is more ef
 <table class=doc width=100% cellspacing=3 id=OnForceAndTorque>
 <tr><td class=doctop colspan=2>Method OnForceAndTorque(timestamp:Float, threadIndex:Int)</td></tr>
 </table>
-<table class=doc width=100% cellspacing=3 id=SetAngularDampling>
-<tr><td class=doctop colspan=2>Method SetAngularDampling(aX:Float, aY:Float, aZ:Float)</td></tr>
-<tr><td class=docleft width=1%>Description</td><td class=docright>Sets the linear viscous damping of the body.</td></tr>
+<table class=doc width=100% cellspacing=3 id=SetAngularDamping>
+<tr><td class=doctop colspan=2>Method SetAngularDamping(aX:Float, aY:Float, aZ:Float)</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Applies the angular viscous damping coefficient to the body.</td></tr>
 <tr><td class=docleft width=1%>Information</td><td class=docright>The default value of *angularDamp* is clamped to a value between 0.0 and 1.0; the default value is 0.1,
-There is a non zero implicit attenuation value of 0.0001 assumed by the integrator.</td></tr>
+There is a non zero implicit attenuation value of 0.0001 assumed by the integrator.
+The dampening viscous friction torque is added to the external torque applied to the body every frame before going to the solver-integrator.
+This torque is proportional to the square of the magnitude of the angular velocity to the body in the opposite direction of the angular velocity of the body.
+An application can set *angularDamp* to zero when the to take control of the external forces and torque applied to the body, should the application
+desire to have absolute control of the forces over that body. However, it is recommended that the *linearDamp* coefficient be set to a non-zero
+value for the majority of background bodies. This saves the application from needing to control these forces and also prevents the integrator from
+adding very large velocities to a body.</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=SetCollidable>
+<tr><td class=doctop colspan=2>Method SetCollidable(collidableState:Int)</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>Sets the collidable state for the body.</td></tr>
 </table>
 <table class=doc width=100% cellspacing=3 id=SetForce>
 <tr><td class=doctop colspan=2>Method SetForce(fx:Float, fy:Float, fz:Float, fw:Float)</td></tr>
@@ -215,6 +285,10 @@ The Newton Engine does not call the callback for bodies that are inactive or hav
 <tr><td class=docleft width=1%>Information</td><td class=docright>The default value of <b>linearDamp</b> is clamped to a value between 0.0 and 1.0; the default value is 0.1,
 There is a non zero implicit attenuation value of 0.0001 assume by the integrator.</td></tr>
 </table>
+<table class=doc width=100% cellspacing=3 id=SetMassMatrix>
+<tr><td class=doctop colspan=2>Method SetMassMatrix(mass:Float, Ixx:Float, Iyy:Float, Izz:Float)</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>new.</td></tr>
+</table>
 <table class=doc width=100% cellspacing=3 id=SetMassProperties>
 <tr><td class=doctop colspan=2>Method SetMassProperties(mass:Float, collision:TNCollision)</td></tr>
 </table>
@@ -240,6 +314,10 @@ re-implementing the method.
 The callback is called by the Newton engine every time a visual object that represents the rigid body has changed.
 The Newton engine does not call the callback for bodies that are inactive or have reached a state of stable equilibrium.</td></tr>
 </table>
+<table class=doc width=100% cellspacing=3 id=SetUserData>
+<tr><td class=doctop colspan=2>Method SetUserData(userData:Object)</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>new.</td></tr>
+</table>
 <table class=doc width=100% cellspacing=3 id=SetVelocity>
 <tr><td class=doctop colspan=2>Method SetVelocity(vx:Float, vy:Float, vz:Float, vw:Float)</td></tr>
 <tr><td class=docleft width=1%>Description</td><td class=docright>Sets the global linear velocity of the body.</td></tr>
@@ -269,6 +347,162 @@ The Newton engine does not call the callback for bodies that are inactive or hav
 <tr><td class=doctop colspan=2>Function GetIdentityMatrix:TNMatrix()</td></tr>
 </table>
 <br>
+<table class=doc width=100% cellspacing=3 id=TNMesh>
+<tr><td class=doctop colspan=2>Type TNMesh</td></tr>
+</table>
+<table class=doc width=90% align=center><tr ><th class=doctop colspan=2 align=left><a name=TNMesh_methods></a>Methods Summary</th></tr>
+<tr><td class=docleft width=1%><a href=#AddFace>AddFace</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#ApplyBoxMapping>ApplyBoxMapping</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#ApplyCylindricalMapping>ApplyCylindricalMapping</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#ApplySphericalMapping>ApplySphericalMapping</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#ApplyTransform>ApplyTransform</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#BeginFace>BeginFace</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#CalculateOOBB>CalculateOOBB</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#CalculateVertexNormals>CalculateVertexNormals</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#Destroy>Destroy</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#EndFace>EndFace</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#FixTJoints>FixTJoints</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetNormalArray>GetNormalArray</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetPointArray>GetPointArray</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetPointCount>GetPointCount</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetPointStrideInByte>GetPointStrideInByte</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetTotalFaceCount>GetTotalFaceCount</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetTotalIndexCount>GetTotalIndexCount</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetUV0Array>GetUV0Array</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetUV1Array>GetUV1Array</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetVertexCount>GetVertexCount</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#GetVertexStrideInByte>GetVertexStrideInByte</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#IsOpenMesh>IsOpenMesh</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#MeshGetVertexArray>MeshGetVertexArray</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#Polygonize>Polygonize</a></td><td class=docright>
+&nbsp;
+</td></tr>
+<tr><td class=docleft width=1%><a href=#Triangulate>Triangulate</a></td><td class=docright>
+&nbsp;
+</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=AddFace>
+<tr><td class=doctop colspan=2>Method AddFace(vertexCount:Int, vertex:Float Ptr, strideInBytes:Int, materialIndex:Int)</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=ApplyBoxMapping>
+<tr><td class=doctop colspan=2>Method ApplyBoxMapping(front:Int, side:Int, top:Int)</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=ApplyCylindricalMapping>
+<tr><td class=doctop colspan=2>Method ApplyCylindricalMapping(cylinderMaterial:Int, capMaterial:Int)</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=ApplySphericalMapping>
+<tr><td class=doctop colspan=2>Method ApplySphericalMapping(material:Int)</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=ApplyTransform>
+<tr><td class=doctop colspan=2>Method ApplyTransform(matrix:TNMatrix)</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=BeginFace>
+<tr><td class=doctop colspan=2>Method BeginFace()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=CalculateOOBB>
+<tr><td class=doctop colspan=2>Method CalculateOOBB(matrix:TNMatrix, x:Float Var, y:Float Var, z:Float Var)</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=CalculateVertexNormals>
+<tr><td class=doctop colspan=2>Method CalculateVertexNormals(angle:Float)</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=Destroy>
+<tr><td class=doctop colspan=2>Method Destroy()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=EndFace>
+<tr><td class=doctop colspan=2>Method EndFace()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=FixTJoints>
+<tr><td class=doctop colspan=2>Method FixTJoints()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetNormalArray>
+<tr><td class=doctop colspan=2>Method GetNormalArray:Double Ptr()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetPointArray>
+<tr><td class=doctop colspan=2>Method GetPointArray:Double Ptr()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetPointCount>
+<tr><td class=doctop colspan=2>Method GetPointCount:Int()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetPointStrideInByte>
+<tr><td class=doctop colspan=2>Method GetPointStrideInByte:Int()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetTotalFaceCount>
+<tr><td class=doctop colspan=2>Method GetTotalFaceCount:Int()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetTotalIndexCount>
+<tr><td class=doctop colspan=2>Method GetTotalIndexCount:Int()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetUV0Array>
+<tr><td class=doctop colspan=2>Method GetUV0Array:Double Ptr()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetUV1Array>
+<tr><td class=doctop colspan=2>Method GetUV1Array:Double Ptr()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetVertexCount>
+<tr><td class=doctop colspan=2>Method GetVertexCount:Int()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=GetVertexStrideInByte>
+<tr><td class=doctop colspan=2>Method GetVertexStrideInByte:Int()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=IsOpenMesh>
+<tr><td class=doctop colspan=2>Method IsOpenMesh:Int()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=MeshGetVertexArray>
+<tr><td class=doctop colspan=2>Method MeshGetVertexArray:Double Ptr()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=Polygonize>
+<tr><td class=doctop colspan=2>Method Polygonize()</td></tr>
+</table>
+<table class=doc width=100% cellspacing=3 id=Triangulate>
+<tr><td class=doctop colspan=2>Method Triangulate()</td></tr>
+</table>
+<br>
 <table class=doc width=100% cellspacing=3 id=TNRayCastDelegate>
 <tr><td class=doctop colspan=2>Type TNRayCastDelegate</td></tr>
 <tr><td class=docleft width=1%>Description</td><td class=docright>A helper delegate for handling ray casts.</td></tr>
@@ -345,6 +579,9 @@ Creates a cylinder primitive for collision.
 <tr><td class=docleft width=1%><a href=#CreateDynamicBody>CreateDynamicBody</a></td><td class=docright>
 Creates a rigid body.
 </td></tr>
+<tr><td class=docleft width=1%><a href=#CreateMesh>CreateMesh</a></td><td class=docright>
+&nbsp;
+</td></tr>
 <tr><td class=docleft width=1%><a href=#CreateSphere>CreateSphere</a></td><td class=docright>
 Creates a generalized ellipsoid primitive.
 </td></tr>
@@ -354,6 +591,9 @@ Creates an empty complex collision geometry tree.
 <tr><td class=docleft width=1%><a href=#Destroy>Destroy</a></td><td class=docright>
 &nbsp;
 </td></tr>
+<tr><td class=docleft width=1%><a href=#DestroyAllBodies>DestroyAllBodies</a></td><td class=docright>
+new.
+</td></tr>
 <tr><td class=docleft width=1%><a href=#GetBodyCount>GetBodyCount</a></td><td class=docright>
 Returns the total number of rigid bodies in the world.
 </td></tr>
@@ -398,6 +638,9 @@ Creates an instance of the Newton world.
 <tr><td class=docleft width=1%>Information</td><td class=docright>Creates a Newton rigid body and assigns a the <b>collision</b> geometry representing the rigid body.
 Optionally pass a subclassed TNBody object for direct access to force/torque callbacks.</td></tr>
 </table>
+<table class=doc width=100% cellspacing=3 id=CreateMesh>
+<tr><td class=doctop colspan=2>Method CreateMesh:TNMesh()</td></tr>
+</table>
 <table class=doc width=100% cellspacing=3 id=CreateSphere>
 <tr><td class=doctop colspan=2>Method CreateSphere:TNCollision(radius:Float, shapeID:Int = 0, offsetMatrix:TNMatrix = Null, custom:TNCollision = Null)</td></tr>
 <tr><td class=docleft width=1%>Description</td><td class=docright>Creates a generalized ellipsoid primitive.</td></tr>
@@ -411,6 +654,10 @@ for example to make a sphere set all tree radius to the same value, to make a el
 <table class=doc width=100% cellspacing=3 id=Destroy>
 <tr><td class=doctop colspan=2>Method Destroy()</td></tr>
 </table>
+<table class=doc width=100% cellspacing=3 id=DestroyAllBodies>
+<tr><td class=doctop colspan=2>Method DestroyAllBodies()</td></tr>
+<tr><td class=docleft width=1%>Description</td><td class=docright>new.</td></tr>
+</table>
 <table class=doc width=100% cellspacing=3 id=GetBodyCount>
 <tr><td class=doctop colspan=2>Method GetBodyCount:Int()</td></tr>
 <tr><td class=docleft width=1%>Description</td><td class=docright>Returns the total number of rigid bodies in the world.</td></tr>
@@ -475,6 +722,13 @@ ensure that <b>timestep</b> is small enough to guarantee physics stability.</td>
 <br>
 <h2 id=modinfo>Module Information</h2>
 <table width=100%>
+<tr><th width=1%>Version</th><td>1.05</td></tr>
+<tr><th width=1%>License</th><td>zlib</td></tr>
+<tr><th width=1%>Copyright</th><td>Wrapper - 2015-2017 Bruce A Henderson, Mark Mcvittie</td></tr>
+<tr><th width=1%>Copyright</th><td>Library - 2003-2011 Julio Jerez and Alain Suero</td></tr>
+<tr><th width=1%>History</th><td>1.05 Release - added DestroyAllBodies, SetMassMatrix, SetUserData, GetUserData</td></tr>
+<tr><th width=1%>History</th><td>1.04 Release - added TNMesh and GC Thread support</td></tr>
+<tr><th width=1%>History</th><td>1.00 Initial Release</td></tr>
 <tr><th width=1%>CC_OPTS</th><td>-D_NEWTON_STATIC_LIB</td></tr>
 <tr><th width=1%>CC_OPTS</th><td>-DPTW32_BUILD -DPTW32_STATIC_LIB -D_MINGW_32_VER</td></tr>
 <tr><th width=1%>CC_OPTS</th><td>-msse -msse3 -mfpmath=sse -ffloat-store -ffast-math -freciprocal-math -funsafe-math-optimizations -fsingle-precision-constant</td></tr>

+ 1 - 21
newtondynamics.mod/glue.cpp

@@ -1,24 +1,4 @@
-/* Copyright (c) 2015-2016 Bruce A Henderson
-
-  This software is provided 'as-is', without any express or implied
-  warranty. In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-     1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-
-     2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-
-     3. This notice may not be removed or altered from any source
-     distribution.
-*/
+// glue.cpp
 
 #include "Newton.h"
 #include "dMatrix.h"

+ 8 - 26
newtondynamics.mod/newtondynamics.bmx

@@ -1,24 +1,5 @@
-' Copyright (c) 2015-2016 Bruce A Henderson
-'
-' This software is provided 'as-is', without any express or implied
-' warranty. In no event will the authors be held liable for any damages
-' arising from the use of this software.
-'
-' Permission is granted to anyone to use this software for any purpose,
-' including commercial applications, and to alter it and redistribute it
-' freely, subject to the following restrictions:
-'
-'    1. The origin of this software must not be misrepresented; you must not
-'    claim that you wrote the original software. If you use this software
-'    in a product, an acknowledgment in the product documentation would be
-'    appreciated but is not required.
-'
-'    2. Altered source versions must be plainly marked as such, and must not be
-'    misrepresented as being the original software.
-'
-'    3. This notice may not be removed or altered from any source
-'    distribution.
-'
+' newtondynamics.bmx
+
 SuperStrict
 
 Rem
@@ -26,13 +7,14 @@ bbdoc: Newton Dynamics
 End Rem
 Module Openb3dLibs.NewtonDynamics
 
-ModuleInfo "Version: 1.00"
+ModuleInfo "Version: 1.05"
 ModuleInfo "License: zlib"
-ModuleInfo "Copyright: Newton Dynamics - 2003-2011 Julio Jerez and Alain Suero"
-ModuleInfo "Copyright: Wrapper - 2015-2016 Bruce A Henderson"
+ModuleInfo "Copyright: Wrapper - 2015-2017 Bruce A Henderson, Mark Mcvittie"
+ModuleInfo "Copyright: Library - 2003-2011 Julio Jerez and Alain Suero"
 
-ModuleInfo "History: 1.00"
-ModuleInfo "History: Initial Release."
+ModuleInfo "History: 1.05 Release - added DestroyAllBodies, SetMassMatrix, SetUserData, GetUserData"
+ModuleInfo "History: 1.04 Release - added TNMesh and GC Thread support"
+ModuleInfo "History: 1.00 Initial Release"
 
 ModuleInfo "CC_OPTS: -D_NEWTON_STATIC_LIB"
 

+ 2 - 23
newtondynamics.mod/source.bmx

@@ -1,26 +1,6 @@
-' Copyright (c) 2015-2016 Bruce A Henderson
-'
-' This software is provided 'as-is', without any express or implied
-' warranty. In no event will the authors be held liable for any damages
-' arising from the use of this software.
-'
-' Permission is granted to anyone to use this software for any purpose,
-' including commercial applications, and to alter it and redistribute it
-' freely, subject to the following restrictions:
-'
-'    1. The origin of this software must not be misrepresented; you must not
-'    claim that you wrote the original software. If you use this software
-'    in a product, an acknowledgment in the product documentation would be
-'    appreciated but is not required.
-'
-'    2. Altered source versions must be plainly marked as such, and must not be
-'    misrepresented as being the original software.
-'
-'    3. This notice may not be removed or altered from any source
-'    distribution.
-'
-SuperStrict
+' source.bmx
 
+SuperStrict
 
 Import "NewtonDynamics/source/core/*.h"
 Import "NewtonDynamics/source/physics/*.h"
@@ -124,4 +104,3 @@ Import "NewtonDynamics/packages/dMath/dVector.cpp"
 Import "NewtonDynamics/packages/dMath/dMatrix.cpp"
 
 Import "glue.cpp"
-

+ 17 - 0
zlib.txt

@@ -0,0 +1,17 @@
+Copyright (c) 2015-2017 Bruce A Henderson, Mark Mcvittie
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+   claim that you wrote the original software. If you use this software
+   in a product, an acknowledgment in the product documentation would be
+   appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+   misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.