コード例 #1
0
        public override void Read(BinaryReader reader, bool includeHeader, long leng)
        {
            if (includeHeader)
            {
                reader.ReadByte();
            }

            Flag        = reader.ReadInt32();
            HistoryType = (TextHistoryType)reader.ReadSByte();

            switch (HistoryType)
            {
            case TextHistoryType.None:
                Extras = new byte[0];
                Value  = null;
                break;

            case TextHistoryType.Base:
                Extras = reader.ReadBytes(4);
                Value  = new string[] { reader.ReadUString(), reader.ReadUString() };
                break;

            case TextHistoryType.StringTableEntry:
                Extras = reader.ReadBytes(8);
                Value  = new string[] { reader.ReadUString() };
                break;

            default:
                throw new FormatException("Unimplemented reader for " + HistoryType.ToString());
            }
        }
コード例 #2
0
ファイル: TextPropertyData.cs プロジェクト: atenfyr/UAssetAPI
        public override void Read(AssetBinaryReader reader, bool includeHeader, long leng1, long leng2 = 0)
        {
            if (includeHeader)
            {
                PropertyGuid = reader.ReadPropertyGuid();
            }

            if (reader.Asset.EngineVersion < UE4Version.VER_UE4_FTEXT_HISTORY)
            {
                CultureInvariantString = reader.ReadFString();
                if (reader.Asset.EngineVersion >= UE4Version.VER_UE4_ADDED_NAMESPACE_AND_KEY_DATA_TO_FTEXT)
                {
                    Namespace = reader.ReadFString();
                    Value     = reader.ReadFString();
                }
                else
                {
                    Namespace = null;
                    Value     = reader.ReadFString();
                }
            }

            Flags = (ETextFlag)reader.ReadUInt32();

            if (reader.Asset.EngineVersion >= UE4Version.VER_UE4_FTEXT_HISTORY)
            {
                HistoryType = (TextHistoryType)reader.ReadSByte();

                switch (HistoryType)
                {
                case TextHistoryType.None:
                    Value = null;
                    if (reader.Asset.GetCustomVersion <FEditorObjectVersion>() >= FEditorObjectVersion.CultureInvariantTextSerializationKeyStability)
                    {
                        bool bHasCultureInvariantString = reader.ReadInt32() == 1;
                        if (bHasCultureInvariantString)
                        {
                            CultureInvariantString = reader.ReadFString();
                        }
                    }
                    break;

                case TextHistoryType.Base:
                    Namespace = reader.ReadFString();
                    Value     = reader.ReadFString();
                    CultureInvariantString = reader.ReadFString();
                    break;

                case TextHistoryType.StringTableEntry:
                    TableId = reader.ReadFName();
                    Value   = reader.ReadFString();
                    break;

                default:
                    throw new NotImplementedException("Unimplemented reader for " + HistoryType.ToString());
                }
            }
        }
コード例 #3
0
ファイル: TextPropertyData.cs プロジェクト: twindan/UAssetAPI
        public override void FromString(string[] d)
        {
            if (d[1] != null)
            {
                HistoryType = TextHistoryType.Base;
                Value       = new string[] { d[0], d[1] };
                return;
            }

            if (d[0].Equals("null"))
            {
                HistoryType = TextHistoryType.None;
                Value       = new string[] { };
                return;
            }

            HistoryType = TextHistoryType.StringTableEntry;
            Value       = new string[] { d[0] };
        }
コード例 #4
0
ファイル: TextPropertyData.cs プロジェクト: twindan/UAssetAPI
        public override void Read(BinaryReader reader, bool includeHeader, long leng)
        {
            if (includeHeader)
            {
                reader.ReadByte();
            }

            Flag        = reader.ReadInt32();
            HistoryType = (TextHistoryType)reader.ReadSByte();

            switch (HistoryType)
            {
            case TextHistoryType.None:
                Extras = reader.ReadBytes(4);
                List <string> ValueList = new List <string>();
                for (int i = 0; i < BitConverter.ToInt32(Extras, 0); i++)
                {
                    ValueList.Add(reader.ReadUString());
                }
                Value = ValueList.ToArray();
                break;

            case TextHistoryType.Base:
                //Extras = reader.ReadBytes(4);
                //Console.WriteLine("EXT: " + BitConverter.ToInt32(Extras, 0));
                Extras          = new byte[0];
                BaseBlankString = reader.ReadUStringWithEncoding();
                Value           = new string[] { reader.ReadUString(), reader.ReadUString() };
                break;

            case TextHistoryType.StringTableEntry:
                Extras = reader.ReadBytes(8);
                Value  = new string[] { reader.ReadUString() };
                break;

            default:
                throw new FormatException("Unimplemented reader for " + HistoryType.ToString());
            }
        }