PhysicsWorld.cs 996 B

12345678910111213141516171819202122232425262728293031
  1. using System;
  2. using System.Runtime.InteropServices;
  3. namespace AtomicEngine
  4. {
  5. [StructLayout(LayoutKind.Sequential)]
  6. public struct PhysicsRaycastResult
  7. {
  8. public Vector3 Position;
  9. public Vector3 Normal;
  10. public float Distance;
  11. public float HitFraction;
  12. IntPtr bodyPtr;
  13. public RigidBody Body => NativeCore.WrapNative<RigidBody>(bodyPtr);
  14. }
  15. public partial class PhysicsWorld : Component
  16. {
  17. public void RaycastSingle(ref PhysicsRaycastResult result, Ray ray, float maxDistance, uint collisionMask = uint.MaxValue)
  18. {
  19. csi_Atomic_PhysicsWorld_RaycastSingle(nativeInstance, ref ray, maxDistance, collisionMask, out result);
  20. }
  21. [DllImport(Constants.LIBNAME, CallingConvention = CallingConvention.Cdecl)]
  22. internal static extern IntPtr csi_Atomic_PhysicsWorld_RaycastSingle(IntPtr self, ref Ray ray, float maxDistance, uint collisionMask, out PhysicsRaycastResult result);
  23. }
  24. }