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); }
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; }
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); } }
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()); } }