public void Mesh_NativeArray_FixedSize() { var ptr = Mocks.GetNativeMeshPtr(); var result = rna.Transcribe <Mesh_WithID>(ptr); Assert.AreEqual(66, result.id.name.Count); Assert.AreEqual((byte)'A', result.id.name[0]); Assert.AreEqual((byte)'B', result.id.name[1]); Assert.AreEqual((byte)'C', result.id.name[2]); Assert.AreEqual(0, result.id.name[3]); }
public void Mesh_OnlyPrimitives() { var ptr = Mocks.GetNativeMeshPtr(); // Convert to a C# representation only parsing out primitives var result = rna.Transcribe <Mesh_OnlyPrimitives>(ptr); Assert.AreEqual((byte)'A', result.id0); Assert.AreEqual(5, result.totverts); Assert.AreEqual(13, result.flag1); Assert.AreEqual(14, result.flag2); Assert.AreEqual(0.15f, result.flag3); Assert.AreEqual(result.mverts, (long)result.verticesPtr); }
public void CustomData_NativeArray_UnknownSize() { // Ensure that NativeArrayConverter.EmitPointerAsNativeArrayIL // can handle array element types that are not DNA entities var ptr = Mocks.GetNativeMeshPtr(); var result = rna.Transcribe <Mesh_Ldata>(ptr); // ldata.floats is an array without a defined size. // Any access without reinterpreting will result in an exception Assert.ThrowsException <IndexOutOfRangeException>(() => { var x = result.ldata.floats[0]; }); }
public void CustomData_NativeArray_Reinterpret() { var ptr = Mocks.GetNativeMeshPtr(); var result = rna.Transcribe <Mesh_Ldata>(ptr); var floats = result.ldata.floats.Reinterpret <float>(3); Assert.AreEqual(3, floats.Count); Assert.AreEqual(0, floats[0]); Assert.AreEqual(1, floats[1]); Assert.AreEqual(2, floats[2]); Assert.ThrowsException <IndexOutOfRangeException>(() => { var x = floats[3]; }); }
public void Mesh_NativeArray_DynamicSize() { var ptr = Mocks.GetNativeMeshPtr(); var result = rna.Transcribe <Mesh_NativeArrayVertices>(ptr); Assert.AreEqual(5, result.vertices.Count); // Check that an IntPtr read matches what NativeArray got Assert.AreEqual(result.verticesPtr, result.vertices.Ptr); // Read vertex data for (int i = 0; i < result.vertices.Count; i++) { Assert.AreEqual(i, result.vertices[i].position.x); Assert.AreEqual(i + 5, result.vertices[i].position.y); Assert.AreEqual(i + 10, result.vertices[i].position.z); } }