Ejemplo n.º 1
0
        private static unsafe String GetMaterialString(byte[] matPropData)
        {
            if (matPropData == null)
            {
                return(String.Empty);

                fixed(byte *ptr = &matPropData[0])
                {
                    //String is stored as 32 bit length prefix THEN followed by zero-terminated UTF8 data (basically need to reconstruct an AiString)
                    AiString aiString;

                    aiString.Length = new UIntPtr((uint)MemoryHelper.Read <int>(new IntPtr(ptr)));

                    //Memcpy starting at dataPtr + sizeof(int) for length + 1 (to account for null terminator)
                    MemoryHelper.CopyMemory(new IntPtr(aiString.Data), MemoryHelper.AddIntPtr(new IntPtr(ptr), sizeof(int)), (int)aiString.Length.ToUInt32() + 1);

                    return(aiString.GetString());
                }
        }