aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ode-0.9/contrib/Ode.NET/README.TXT
blob: e6f1262829b82471509a7d0a645116c980180b6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Ode.NET - .NET bindings for ODE
Jason Perkins (starkos@gmail.com)

 THIS IS A WORK IN PROGRESS! I'm not done yet!
 

--------------------------------------------------------------------- 
 INSTALLATION
--------------------------------------------------------------------- 

 Note that this binding uses a C# 2.0 feature (the
 UnmanagedFunctionPointer attribute). You will need to use
 Visual Studio 2005 (C# Express is fine) or Mono's gmcs
 compiler.
 
 Start by getting or building ODE as a shared library (DLL).
 
 The simplest way to build the bindings is probably to create a 
 new library assembly in your tool of choice and drop in the files
 Ode/Ode.cs and Ode/AssemblyInfo.cs. Define the symbol`dDOUBLE` if 
 you used double-precision math in your ode.dll. Build, done.
 
 For testing purposes, I have also created bindings for the 
 Drawstuff library and a C# version of the BoxStack demo. You can
 throw all of these files into a console executable and run it to
 see the demo.
 
 If you happen to have Premake installed (http://premake.sf.net/),
 you can generate build scripts for the library with:
 
  premake --target (toolset)                 # for single precision
  premake --with-doubles --target (toolset)  # for double precision

 To build the test application too, use:
 
  premake --with-tests --target (toolset)
  
 To build with Mono, you must add the --dotnet parameter to enable
 support .NET 2.0:
 
   premake --dotnet mono2 --target gnu
   

--------------------------------------------------------------------- 
 USAGE
--------------------------------------------------------------------- 

 I have tried to keep things as close to the original C API as I can,
 rather than forcing a class structure on everyone. Everything is
 contained within the `Ode.NET` namespace inside a static class
 named `d`. All ODE IDs are replaced with IntPtrs. A quick example:
 
   using Ode.NET;
   
   IntPtr world = d.WorldCreate();
   IntPtr body = d.BodyCreate(world);
 
 Take a look at Tests/BoxStack.cs for a more complete example.
 
 
--------------------------------------------------------------------- 
 KNOWN ISSUES
--------------------------------------------------------------------- 

 I'm not done yet, so many functions are still missing.

 It is not possible to implement dBodyGetPosition(), dBodyGetRotation(),
 etc. without resorting to unsafe code, which I was trying to avoid.
 This binding uses the .NET friendly dBodyCopyPosition(), 
 dBodyCopyRotation(), etc. instead. 
  
 Collision response (contact joints) do not work when built under 
 Mono as double-precision. I have not tried to track down why.