public PsoStructureEntryInfo(MetaName nameHash, PsoDataType type, ushort offset, byte unk, MetaName refKey) { EntryNameHash = nameHash; Type = type; Unk_5h = unk; DataOffset = offset; ReferenceKey = (uint)refKey; }
private static int GetEnumInt(MetaName type, string enumString, PsoDataType dataType) { var infos = PsoTypes.GetEnumInfo(type); if (infos == null) { return(0); } bool isFlags = (dataType == PsoDataType.Flags);// || //(dataType == PsoDataType.IntFlags2);// || //(dataType == PsoDataType.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 = (MetaName)(uint)GetHash(split[i].Trim()); for (int j = 0; j < infos.Entries.Length; j++) { var entry = infos.Entries[j]; if (entry.EntryNameHash == enumName) { enumVal += (1 << entry.EntryKey); break; } } } return(enumVal); } else { //single value enum. var enumName = (MetaName)(uint)GetHash(enumString); for (int j = 0; j < infos.Entries.Length; j++) { var entry = infos.Entries[j]; if (entry.EntryNameHash == enumName) { return(entry.EntryKey); } } } return(-1); }
public static string GetCSharpTypeName(PsoDataType t) { switch (t) { case PsoDataType.Bool: return("bool"); case PsoDataType.SByte: return("sbyte"); case PsoDataType.UByte: return("byte"); case PsoDataType.SShort: return("short"); case PsoDataType.UShort: return("ushort"); case PsoDataType.SInt: return("int"); case PsoDataType.UInt: return("int"); case PsoDataType.Float: return("float"); case PsoDataType.Float2: return("long"); case PsoDataType.String: return("uint"); //hash? NEEDS WORK? case PsoDataType.Enum: return("byte"); case PsoDataType.Flags: return("short"); case PsoDataType.HFloat: return("short"); case PsoDataType.Long: return("long"); case PsoDataType.Float3: case PsoDataType.Float4: case PsoDataType.Map: case PsoDataType.Float3a: case PsoDataType.Float4a: case PsoDataType.Structure: case PsoDataType.Array: default: return(t.ToString()); } }
public static string GetCSharpTypeName(PsoDataType t) { //MetaStructureEntryDataType mdt = (MetaStructureEntryDataType)t; switch (t) { case PsoDataType.Boolean: return("bool"); case PsoDataType.Byte1: return("sbyte"); //was LONG_01h.. why? case PsoDataType.Byte2: return("byte"); case PsoDataType.SHORT_03h: return("short"); case PsoDataType.SHORT_04h: return("short"); case PsoDataType.INT_05h: return("int"); case PsoDataType.Integer: return("int"); case PsoDataType.Float: return("float"); case PsoDataType.Float2: return("long"); case PsoDataType.String: return("uint"); //hash? NEEDS WORK? case PsoDataType.Enum: return("byte"); case PsoDataType.Flags: return("short"); case PsoDataType.SHORT_1Eh: return("short"); case PsoDataType.LONG_20h: return("long"); case PsoDataType.Float3: case PsoDataType.Float4: case PsoDataType.Map: case PsoDataType.Float3a: case PsoDataType.Float3b: case PsoDataType.Structure: case PsoDataType.Array: default: return(t.ToString()); //case MetaStructureEntryDataType.Boolean: return "bool"; //case MetaStructureEntryDataType.SignedByte: return "sbyte"; //case MetaStructureEntryDataType.UnsignedByte: return "byte"; //case MetaStructureEntryDataType.SignedShort: return "short"; //case MetaStructureEntryDataType.UnsignedShort: return "ushort"; //case MetaStructureEntryDataType.SignedInt: return "int"; //case MetaStructureEntryDataType.UnsignedInt: return "uint"; //case MetaStructureEntryDataType.Float: return "float"; //case MetaStructureEntryDataType.Float_XYZ: return "Vector3"; //case MetaStructureEntryDataType.Float_XYZW: return "Vector4"; //case MetaStructureEntryDataType.Hash: return "uint"; //uint hashes... //case MetaStructureEntryDataType.ByteEnum: return "byte"; //convert to enum later.. //case MetaStructureEntryDataType.IntEnum: return "int"; //case MetaStructureEntryDataType.ShortFlags: return "short"; //case MetaStructureEntryDataType.IntFlags1: return "int"; //case MetaStructureEntryDataType.IntFlags2: return "int"; //case MetaStructureEntryDataType.Array: //case MetaStructureEntryDataType.ArrayOfChars: //case MetaStructureEntryDataType.ArrayOfBytes: //case MetaStructureEntryDataType.DataBlockPointer: //case MetaStructureEntryDataType.CharPointer: //case MetaStructureEntryDataType.StructurePointer: //case MetaStructureEntryDataType.Structure: //default: // return t.ToString(); } }