Quantcast
Channel: Questions in topic: "dllimport"
Viewing all articles
Browse latest Browse all 160

NullReferenceException in a wrapper

$
0
0
Hi, I'm integrating [Newton][1] physics engine inside unity, everything works perfectly simulation wise, but I'm facing a strange error happening randomly during running. While the simulation going on it will stop and throw an exception: NullReferenceException: Object reference not set to an instance of an object NewtonNet.NewtonBody.ApplyForceAndTorque (IntPtr unused, Single timestep, Int32 threadIndex) (at Assets/Plugins/NewtonNet.cs:208) NewtonNet.NewtonWorld.Update (Single timestep) (at Assets/Plugins/NewtonNet.cs:109) NewtonNet.NewtonWorld.Iterate (Single fps, Int32 iterations) (at Assets/Plugins/NewtonNet.cs:123) Main.Update () (at Assets/Main.cs:146) Newton uses a callback to apply forces and torques, and it calls it every iteration. I wrap this callback to call C# delegate function this way: public class NewtonBody : IDisposable { [UnmanagedFunctionPointer(CallingConvention.Cdecl)] delegate void ApplyForceAndTorqueCallback(IntPtr body, float timestep, int threadIndex); [DllImport(Common.NewtonDLL)] static extern void NewtonBodySetForceAndTorqueCallback(IntPtr bodyPtr, ApplyForceAndTorqueCallback callback); public IntPtr bodyPtr; public delegate void ForceAndTorqueHandler(NewtonBody sender, float timestep, int threadIndex); public event ForceAndTorqueHandler ForceAndTorqueCallback; public void ApplyForceAndTorque(IntPtr unused, float timestep, int threadIndex) { if (ForceAndTorqueCallback != null) { ForceAndTorqueCallback(this, timestep, threadIndex); } } public NewtonBody(IntPtr bodyPtr) { this.bodyPtr = bodyPtr; NewtonBodySetForceAndTorqueCallback(this.bodyPtr, ApplyForceAndTorque); } } In the main script I declare the event method like this: void ApplyGravity(NewtonBody body, float timestep, int threadIndex) { body.SetForce(new [] { 0f, -9.8f * body.Mass, 0f, 0f }); } I kind of desperate, I tried everything but nothing works. I read around it's the GC that frees some unmanaged memory but I can't tell which?? Please help! Thanks! ![alt text][2] [1]: http://newtondynamics.com/forum/newton.php [2]: /storage/temp/50923-clipboard-image.jpg

Viewing all articles
Browse latest Browse all 160

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>