Assimp.Mesh.IMarshalable C# (CSharp) Метод

IMarshalable() приватный Метод

Reads the unmanaged data from the native value.
private IMarshalable ( &nativeValue ) : void
nativeValue Input native value
Результат void
        void IMarshalable<Mesh, AiMesh>.FromNative(ref AiMesh nativeValue)
        {
            ClearBuffers();

            int vertexCount = (int)nativeValue.NumVertices;
            m_name = nativeValue.Name.GetString();
            m_materialIndex = (int)nativeValue.MaterialIndex;

            //Load Per-vertex components
            if (vertexCount > 0)
            {

                //Positions
                if (nativeValue.Vertices != IntPtr.Zero)
                    m_vertices.AddRange(MemoryHelper.FromNativeArray<Vector3D>(nativeValue.Vertices, vertexCount));

                //Normals
                if (nativeValue.Normals != IntPtr.Zero)
                    m_normals.AddRange(MemoryHelper.FromNativeArray<Vector3D>(nativeValue.Normals, vertexCount));

                //Tangents
                if (nativeValue.Tangents != IntPtr.Zero)
                    m_tangents.AddRange(MemoryHelper.FromNativeArray<Vector3D>(nativeValue.Tangents, vertexCount));

                //BiTangents
                if (nativeValue.BiTangents != IntPtr.Zero)
                    m_bitangents.AddRange(MemoryHelper.FromNativeArray<Vector3D>(nativeValue.BiTangents, vertexCount));

                //Vertex Color channels
                for (int i = 0; i < nativeValue.Colors.Length; i++)
                {
                    IntPtr colorPtr = nativeValue.Colors[i];

                    if (colorPtr != IntPtr.Zero)
                        m_colors[i].AddRange(MemoryHelper.FromNativeArray<Color4D>(colorPtr, vertexCount));
                }

                //Texture coordinate channels
                for (int i = 0; i < nativeValue.TextureCoords.Length; i++)
                {
                    IntPtr texCoordsPtr = nativeValue.TextureCoords[i];

                    if (texCoordsPtr != IntPtr.Zero)
                        m_texCoords[i].AddRange(MemoryHelper.FromNativeArray<Vector3D>(texCoordsPtr, vertexCount));
                }

                //UV components for each tex coordinate channel
                for (int i = 0; i < nativeValue.NumUVComponents.Length; i++)
                {
                    m_texComponentCount[i] = (int)nativeValue.NumUVComponents[i];
                }
            }

            //Faces
            if (nativeValue.NumFaces > 0 && nativeValue.Faces != IntPtr.Zero)
                m_faces.AddRange(MemoryHelper.FromNativeArray<Face, AiFace>(nativeValue.Faces, (int)nativeValue.NumFaces));

            //Bones
            if (nativeValue.NumBones > 0 && nativeValue.Bones != IntPtr.Zero)
                m_bones.AddRange(MemoryHelper.FromNativeArray<Bone, AiBone>(nativeValue.Bones, (int)nativeValue.NumBones, true));

            //Attachment meshes
            if (nativeValue.NumAnimMeshes > 0 && nativeValue.AnimMeshes != IntPtr.Zero)
                m_meshAttachments.AddRange(MemoryHelper.FromNativeArray<MeshAnimationAttachment, AiAnimMesh>(nativeValue.AnimMeshes, (int)nativeValue.NumAnimMeshes, true));
        }

Same methods

Mesh::IMarshalable ( IntPtr thisPtr, &nativeValue ) : void