Ejemplo n.º 1
0
        /// <summary>
        /// Checks whether that model file was build with current sources files. If current sources of this model - FBX, XML, HKT etc. were changed, this returns false.
        /// </summary>
        /// <param name="modelFile"></param>
        /// <returns>true - if data hashes of source files are valid </returns>
        /// <returns>false - if data has been changed</returns>
        public static bool IsModelActual(string modelFile, string FBXFile, string HKTFile, string XMLFile)
        {
            m_importer.ImportData(modelFile);
            Dictionary <string, object> m_retTagData = m_importer.GetTagData();

            // FBX
            if (File.Exists(FBXFile))
            {
                if ((m_retTagData.GetValueOrDefault(MyImporterConstants.TAG_FBXHASHSTRING) != null))
                {
                    VRage.Security.Md5.Hash hash       = GetFileHash(FBXFile);
                    VRage.Security.Md5.Hash storedHash = (VRage.Security.Md5.Hash)m_retTagData.GetValueOrDefault(MyImporterConstants.TAG_FBXHASHSTRING);
                    if ((hash.A != storedHash.A) || (hash.B != storedHash.B) || (hash.C != storedHash.C) || (hash.D != storedHash.D))
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false); // if tag is not saved at all, rebuild it, so next time we can use it
                }
            }

            // HKT
            if (File.Exists(HKTFile))
            {
                if ((m_retTagData.GetValueOrDefault(MyImporterConstants.TAG_HKTHASHSTRING) != null))
                {
                    VRage.Security.Md5.Hash hash       = GetFileHash(HKTFile);
                    VRage.Security.Md5.Hash storedHash = (VRage.Security.Md5.Hash)m_retTagData.GetValueOrDefault(MyImporterConstants.TAG_HKTHASHSTRING);
                    if ((hash.A != storedHash.A) || (hash.B != storedHash.B) || (hash.C != storedHash.C) || (hash.D != storedHash.D))
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false); // if tag is not saved at all, rebuild it, so next time we can use it
                }
            }

            // XML
            if (File.Exists(XMLFile))
            {
                if ((m_retTagData.GetValueOrDefault(MyImporterConstants.TAG_XMLHASHSTRING) != null) && File.Exists(XMLFile))
                {
                    VRage.Security.Md5.Hash hash       = GetFileHash(XMLFile);
                    VRage.Security.Md5.Hash storedHash = (VRage.Security.Md5.Hash)m_retTagData.GetValueOrDefault(MyImporterConstants.TAG_XMLHASHSTRING);
                    if ((hash.A != storedHash.A) || (hash.B != storedHash.B) || (hash.C != storedHash.C) || (hash.D != storedHash.D))
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false); // if tag is not saved at all, rebuild it, so next time we can use it
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
 static VRage.Security.Md5.Hash ReadHash(BinaryReader reader)
 {
     VRage.Security.Md5.Hash hash = new VRage.Security.Md5.Hash();
     hash.A = reader.ReadUInt32();
     hash.B = reader.ReadUInt32();
     hash.C = reader.ReadUInt32();
     hash.D = reader.ReadUInt32();
     return(hash);
 }
Ejemplo n.º 3
0
        public void ExportData(string tagName, VRage.Security.Md5.Hash hash)
        {
            WriteTag(tagName);

            m_writer.Write(hash.A);
            m_writer.Write(hash.B);
            m_writer.Write(hash.C);
            m_writer.Write(hash.D);
        }