Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ode/ode-0.9/contrib/Ode.NET/README.TXT @ 216

Last change on this file since 216 was 216, checked in by mathiask, 16 years ago

[Physik] add ode-0.9

File size: 2.6 KB
Line 
1Ode.NET - .NET bindings for ODE
2Jason Perkins (starkos@gmail.com)
3
4 THIS IS A WORK IN PROGRESS! I'm not done yet!
5 
6
7---------------------------------------------------------------------
8 INSTALLATION
9---------------------------------------------------------------------
10
11 Note that this binding uses a C# 2.0 feature (the
12 UnmanagedFunctionPointer attribute). You will need to use
13 Visual Studio 2005 (C# Express is fine) or Mono's gmcs
14 compiler.
15 
16 Start by getting or building ODE as a shared library (DLL).
17 
18 The simplest way to build the bindings is probably to create a
19 new library assembly in your tool of choice and drop in the files
20 Ode/Ode.cs and Ode/AssemblyInfo.cs. Define the symbol`dDOUBLE` if
21 you used double-precision math in your ode.dll. Build, done.
22 
23 For testing purposes, I have also created bindings for the
24 Drawstuff library and a C# version of the BoxStack demo. You can
25 throw all of these files into a console executable and run it to
26 see the demo.
27 
28 If you happen to have Premake installed (http://premake.sf.net/),
29 you can generate build scripts for the library with:
30 
31  premake --target (toolset)                 # for single precision
32  premake --with-doubles --target (toolset)  # for double precision
33
34 To build the test application too, use:
35 
36  premake --with-tests --target (toolset)
37 
38 To build with Mono, you must add the --dotnet parameter to enable
39 support .NET 2.0:
40 
41   premake --dotnet mono2 --target gnu
42   
43
44---------------------------------------------------------------------
45 USAGE
46---------------------------------------------------------------------
47
48 I have tried to keep things as close to the original C API as I can,
49 rather than forcing a class structure on everyone. Everything is
50 contained within the `Ode.NET` namespace inside a static class
51 named `d`. All ODE IDs are replaced with IntPtrs. A quick example:
52 
53   using Ode.NET;
54   
55   IntPtr world = d.WorldCreate();
56   IntPtr body = d.BodyCreate(world);
57 
58 Take a look at Tests/BoxStack.cs for a more complete example.
59 
60 
61---------------------------------------------------------------------
62 KNOWN ISSUES
63---------------------------------------------------------------------
64
65 I'm not done yet, so many functions are still missing.
66
67 It is not possible to implement dBodyGetPosition(), dBodyGetRotation(),
68 etc. without resorting to unsafe code, which I was trying to avoid.
69 This binding uses the .NET friendly dBodyCopyPosition(),
70 dBodyCopyRotation(), etc. instead.
71 
72 Collision response (contact joints) do not work when built under
73 Mono as double-precision. I have not tried to track down why.
Note: See TracBrowser for help on using the repository browser.