/// <summary> /// Reads the function and returns a parsed object contianing information about the function /// Ported from Unhood (Modified by Mgamerz) /// </summary> /// <param name="export"></param> /// <returns></returns> public static UnFunction ReadFunction(ExportEntry export, byte[] dataOverride = null) { if (dataOverride == null) { dataOverride = export.Data; } using var reader = new EndianReader(dataOverride) { Endian = export.FileRef.Endian }; reader.ReadBytes(12); //netindex?, none int super = reader.ReadInt32(); int nextCompilingChainItem = reader.ReadInt32(); reader.ReadBytes(12); int line = reader.ReadInt32(); //?? int textPos = reader.ReadInt32(); //?? int scriptSize = reader.ReadInt32(); byte[] bytecode = reader.ReadBytes(scriptSize); int nativeIndex = reader.ReadInt16(); int operatorPrecedence = reader.ReadByte(); int functionFlags = reader.ReadInt32(); if ((functionFlags & _flagSet.GetMask("Net")) != 0) { reader.ReadInt16(); // repOffset } int friendlyNameIndex = reader.ReadInt32(); reader.ReadInt32(); return(new UnFunction(export, export.FileRef.GetNameEntry(friendlyNameIndex), new FlagValues(functionFlags, _flagSet), bytecode, nativeIndex, operatorPrecedence)); }
public FlagValues Except(params string[] exceptNames) { int newFlags = _flags; foreach (var name in exceptNames) { newFlags &= ~_set.GetMask(name); } return(new FlagValues(newFlags, _set)); }