public async Task <List <string> > GetNames() { if (ObjEnum.Empty()) { ObjEnum = await Object.Cast <UEnum>(); } // Get Names IntPtr dataAddress = ObjEnum.Names.Data; if (ObjEnum.Names.Count > 300) { throw new IndexOutOfRangeException("Enum have more than 300 value !!, Maybe EngineStructs Problem.!"); } var cls = Utils.MemObj.ReadClassArray <FUEnumItem>(dataAddress, ObjEnum.Names.Count); var buffer = cls .Where(e => e.Key.Index < NamesStore.GNames.Names.Count || e.Key.Index != 0) .Select(e => NamesStore.GetByIndex(e.Key.Index)) .ToList(); return(buffer); }