Esempio n. 1
0
        private static int GetEnumInt(MetaName type, string enumString, StructureEntryDataType dataType)
        {
            var infos = MetaInfo.GetEnumInfo(type);

            if (infos == null)
            {
                return(0);
            }


            bool isFlags = (dataType == StructureEntryDataType.IntFlags1) ||
                           (dataType == StructureEntryDataType.IntFlags2);// ||

            //(dataType == StructureEntryDataType.ShortFlags);

            if (isFlags)
            {
                //flags enum. (multiple values, comma-separated)
                var split   = enumString.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                int enumVal = 0;

                for (int i = 0; i < split.Length; i++)
                {
                    var enumName = GetHash(split[i].Trim());

                    for (int j = 0; j < infos.Entries.Count; j++)
                    {
                        var entry = infos.Entries[j];
                        if ((MetaName)entry.EntryNameHash == enumName)
                        {
                            enumVal += (1 << entry.EntryValue);
                            break;
                        }
                    }
                }

                return(enumVal);
            }
            else
            {
                //single value enum.

                var enumName = (MetaName)GetHash(enumString);

                for (int j = 0; j < infos.Entries.Count; j++)
                {
                    var entry = infos.Entries[j];

                    if ((MetaName)entry.EntryNameHash == enumName)
                    {
                        return(entry.EntryValue);
                    }
                }
            }

            return(0);
        }
Esempio n. 2
0
 public StructureEntryInfo(int entryNameHash, int dataOffset, StructureEntryDataType structureEntryDataType, byte unknown_9h, short referenceTypeIndex, int referenceKey)
 {
     this.EntryNameHash      = entryNameHash;
     this.DataOffset         = dataOffset;
     this.DataType           = structureEntryDataType;
     this.Unknown_9h         = unknown_9h;
     this.ReferenceTypeIndex = referenceTypeIndex;
     this.ReferenceKey       = referenceKey;
 }
Esempio n. 3
0
        static long GetCSharpTypeSize(StructureEntryDataType t, long size)
        {
            switch (t)
            {
            case StructureEntryDataType.Boolean: return(sizeof(bool));

            case StructureEntryDataType.SignedByte: return(sizeof(sbyte));

            case StructureEntryDataType.UnsignedByte: return(sizeof(byte));

            case StructureEntryDataType.SignedShort: return(sizeof(short));

            case StructureEntryDataType.UnsignedShort: return(sizeof(ushort));

            case StructureEntryDataType.SignedInt: return(sizeof(int));

            case StructureEntryDataType.UnsignedInt: return(sizeof(uint));

            case StructureEntryDataType.Float: return(sizeof(float));

            case StructureEntryDataType.Float_XYZ: return(sizeof(float) * 3);

            case StructureEntryDataType.Float_XYZW: return(sizeof(float) * 4);

            case StructureEntryDataType.Hash: return(sizeof(uint));     //uint hashes...

            case StructureEntryDataType.ByteEnum: return(sizeof(byte)); //convert to enum later..

            case StructureEntryDataType.IntEnum: return(sizeof(int));

            case StructureEntryDataType.ShortFlags: return(sizeof(short));

            case StructureEntryDataType.IntFlags1: return(sizeof(int));

            case StructureEntryDataType.IntFlags2: return(sizeof(int));

            case StructureEntryDataType.ArrayOfChars: return(64);

            case StructureEntryDataType.Array:
            case StructureEntryDataType.ArrayOfBytes:
            case StructureEntryDataType.DataBlockPointer:
            case StructureEntryDataType.CharPointer:
            case StructureEntryDataType.StructurePointer:
            case StructureEntryDataType.Structure:
            default:
                return(size);
            }
        }
Esempio n. 4
0
        public static string GetCSharpTypeName(StructureEntryDataType t)
        {
            switch (t)
            {
            case StructureEntryDataType.Boolean: return("bool");

            case StructureEntryDataType.SignedByte: return("sbyte");

            case StructureEntryDataType.UnsignedByte: return("byte");

            case StructureEntryDataType.SignedShort: return("short");

            case StructureEntryDataType.UnsignedShort: return("ushort");

            case StructureEntryDataType.SignedInt: return("int");

            case StructureEntryDataType.UnsignedInt: return("uint");

            case StructureEntryDataType.Float: return("float");

            case StructureEntryDataType.Float_XYZ: return("Vector3");

            case StructureEntryDataType.Float_XYZW: return("Vector4");

            case StructureEntryDataType.Hash: return("uint");     //uint hashes...

            case StructureEntryDataType.ByteEnum: return("byte"); //convert to enum later..

            case StructureEntryDataType.IntEnum: return("int");

            case StructureEntryDataType.ShortFlags: return("short");

            case StructureEntryDataType.IntFlags1: return("int");

            case StructureEntryDataType.IntFlags2: return("int");

            case StructureEntryDataType.ArrayOfChars: return("ArrayOfChars64");

            case StructureEntryDataType.Array:
            case StructureEntryDataType.ArrayOfBytes:
            case StructureEntryDataType.DataBlockPointer:
            case StructureEntryDataType.CharPointer:
            case StructureEntryDataType.StructurePointer:
            case StructureEntryDataType.Structure:
            default:
                return(t.ToString());
            }
        }