Esempio n. 1
0
        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]);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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];
            });
        }
Esempio n. 4
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];
            });
        }
Esempio n. 5
0
        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);
            }
        }