Collision.cs 890 B

123456789101112131415161718192021222324252627282930
  1. //
  2. // Helpers to surface a simpler API for collisions
  3. //
  4. using System;
  5. using System.Runtime.InteropServices;
  6. namespace Urho.Physics {
  7. public unsafe struct CollisionData
  8. {
  9. public Vector3 ContactPosition, ContactNormal;
  10. public float ContactDistance, ContactImpulse;
  11. public override string ToString ()
  12. {
  13. return $"[CollisionData: Position={ContactPosition}, Normal={ContactNormal}, Distance={ContactDistance}, Impuse={ContactImpulse}";
  14. }
  15. [DllImport (Consts.NativeImport, CallingConvention=CallingConvention.Cdecl)]
  16. extern static int MemoryStream_Size (IntPtr data);
  17. [DllImport (Consts.NativeImport, CallingConvention=CallingConvention.Cdecl)]
  18. extern static int MemoryStream_GetData (IntPtr data);
  19. internal static CollisionData [] FromContactData (IntPtr data, int size)
  20. {
  21. return data.ToStructsArray<CollisionData>(size / sizeof(CollisionData));
  22. }
  23. }
  24. }