public unsafe override void Initialize(ContentArchive content, Camera camera) { { SphereTriangleTester tester; SphereWide sphere = default; sphere.Broadcast(new Sphere(0.5f)); TriangleWide triangle = default; var a = new Vector3(0, 0, 0); var b = new Vector3(1, 0, 0); var c = new Vector3(0, 0, 1); //var center = (a + b + c) / 3f; //a -= center; //b -= center; //c -= center; triangle.Broadcast(new Triangle(a, b, c)); var margin = new Vector <float>(1f); Vector3Wide.Broadcast(new Vector3(1, -1, 0), out var offsetB); QuaternionWide.Broadcast(QuaternionEx.CreateFromAxisAngle(new Vector3(0, 1, 0), MathF.PI / 2), out var orientationB); tester.Test(ref sphere, ref triangle, ref margin, ref offsetB, ref orientationB, Vector <float> .Count, out var manifold); } { CapsuleTriangleTester tester; CapsuleWide capsule = default; capsule.Broadcast(new Capsule(0.5f, 0.5f)); TriangleWide triangle = default; var a = new Vector3(0, 0, 0); var b = new Vector3(1, 0, 0); var c = new Vector3(0, 0, 1); //var center = (a + b + c) / 3f; //a -= center; //b -= center; //c -= center; triangle.Broadcast(new Triangle(a, b, c)); var margin = new Vector <float>(2f); Vector3Wide.Broadcast(new Vector3(-1f, -0.5f, -1f), out var offsetB); QuaternionWide.Broadcast(QuaternionEx.CreateFromAxisAngle(Vector3.Normalize(new Vector3(-1, 0, 1)), MathHelper.PiOver2), out var orientationA); QuaternionWide.Broadcast(QuaternionEx.CreateFromAxisAngle(new Vector3(0, 1, 0), 0), out var orientationB); tester.Test(ref capsule, ref triangle, ref margin, ref offsetB, ref orientationA, ref orientationB, Vector <float> .Count, out var manifold); } { BoxTriangleTester tester; BoxWide shape = default; shape.Broadcast(new Box(1f, 1f, 1f)); TriangleWide triangle = default; var a = new Vector3(0, 0, 0); var b = new Vector3(1, 0, 0); var c = new Vector3(0, 0, 1); //var center = (a + b + c) / 3f; //a -= center; //b -= center; //c -= center; triangle.Broadcast(new Triangle(a, b, c)); var margin = new Vector <float>(2f); Vector3Wide.Broadcast(new Vector3(-1f, -0.5f, -1f), out var offsetB); QuaternionWide.Broadcast(QuaternionEx.CreateFromAxisAngle(Vector3.Normalize(new Vector3(-1, 0, 1)), MathHelper.PiOver2), out var orientationA); QuaternionWide.Broadcast(QuaternionEx.CreateFromAxisAngle(new Vector3(0, 1, 0), 0), out var orientationB); tester.Test(ref shape, ref triangle, ref margin, ref offsetB, ref orientationA, ref orientationB, Vector <float> .Count, out var manifold); } { TrianglePairTester tester; TriangleWide a = default, b = default;
public static void Gather(ref Buffer <Capsule> shapes, ref Vector <int> shapeIndices, int count, out CapsuleWide capsules) { ref var radiusBase = ref Unsafe.As <Vector <float>, float>(ref capsules.Radius);