Showing preview only (5,256K chars total). Download the full file or copy to clipboard to get everything.
Repository: orkido/LViewLoL
Branch: master
Commit: 49db3ea7e048
Files: 296
Total size: 19.7 MB
Directory structure:
gitextract_vav3an8l/
├── .gitignore
├── GameplayScripts/
│ ├── auto_smite.py
│ ├── auto_spell.py
│ ├── base_script.py
│ ├── champ_tracker.py
│ ├── commons/
│ │ ├── __init__.py
│ │ ├── damage_calculator.py
│ │ ├── items.py
│ │ ├── skills.py
│ │ └── targeting.py
│ ├── drawings.py
│ ├── execution_notifier.py
│ ├── map_awareness.py
│ ├── object_viewer.py
│ ├── orb_walker.py
│ ├── spell_tracker.py
│ ├── tf_card_picker.py
│ ├── util_make_heightmap.py____
│ └── vision_tracker.py
├── LView/
│ ├── AntiCrack.cpp
│ ├── AntiCrack.h
│ ├── Benchmark.h
│ ├── ConfigSet.cpp
│ ├── ConfigSet.h
│ ├── GameData.cpp
│ ├── GameData.h
│ ├── GameObject.cpp
│ ├── GameObject.h
│ ├── GameRenderer.cpp
│ ├── GameRenderer.h
│ ├── Input.cpp
│ ├── Input.h
│ ├── ItemInfo.h
│ ├── ItemSlot.cpp
│ ├── ItemSlot.h
│ ├── LView.cpp
│ ├── LView.vcxproj
│ ├── LView.vcxproj.filters
│ ├── LView.vcxproj.user
│ ├── LeagueMemoryReader.cpp
│ ├── LeagueMemoryReader.h
│ ├── MapObject.cpp
│ ├── MapObject.h
│ ├── MemSnapshot.h
│ ├── MemoryLoadable.h
│ ├── Offsets.cpp
│ ├── Offsets.h
│ ├── Overlay.cpp
│ ├── Overlay.h
│ ├── PyGame.h
│ ├── PyImguiInterface.h
│ ├── PyStructs.h
│ ├── Script.cpp
│ ├── Script.h
│ ├── ScriptManager.cpp
│ ├── ScriptManager.h
│ ├── Spell.cpp
│ ├── Spell.h
│ ├── SpellInfo.cpp
│ ├── SpellInfo.h
│ ├── SpellInterface.h
│ ├── Structs.cpp
│ ├── Structs.h
│ ├── Texture2D.cpp
│ ├── Texture2D.h
│ ├── UnitInfo.cpp
│ ├── UnitInfo.h
│ ├── Utils.cpp
│ ├── Utils.h
│ ├── Vector.h
│ ├── boost_container-vc142-mt-gd-x32-1_75.pdb
│ ├── boost_json-vc142-mt-gd-x32-1_75.pdb
│ ├── boost_python39-vc142-mt-gd-x32-1_75.pdb
│ ├── config.ini
│ ├── data/
│ │ ├── ItemData.json
│ │ ├── SpellData.json
│ │ ├── SpellDataCustom.json
│ │ └── UnitData.json
│ ├── external_includes/
│ │ ├── Python-ast.h
│ │ ├── Python.h
│ │ ├── abstract.h
│ │ ├── asdl.h
│ │ ├── ast.h
│ │ ├── bitset.h
│ │ ├── bltinmodule.h
│ │ ├── boolobject.h
│ │ ├── bytearrayobject.h
│ │ ├── bytesobject.h
│ │ ├── cellobject.h
│ │ ├── ceval.h
│ │ ├── classobject.h
│ │ ├── code.h
│ │ ├── codecs.h
│ │ ├── compile.h
│ │ ├── complexobject.h
│ │ ├── context.h
│ │ ├── cpython/
│ │ │ ├── abstract.h
│ │ │ ├── bytearrayobject.h
│ │ │ ├── bytesobject.h
│ │ │ ├── ceval.h
│ │ │ ├── code.h
│ │ │ ├── dictobject.h
│ │ │ ├── fileobject.h
│ │ │ ├── fileutils.h
│ │ │ ├── frameobject.h
│ │ │ ├── import.h
│ │ │ ├── initconfig.h
│ │ │ ├── interpreteridobject.h
│ │ │ ├── listobject.h
│ │ │ ├── methodobject.h
│ │ │ ├── object.h
│ │ │ ├── objimpl.h
│ │ │ ├── pyerrors.h
│ │ │ ├── pylifecycle.h
│ │ │ ├── pymem.h
│ │ │ ├── pystate.h
│ │ │ ├── sysmodule.h
│ │ │ ├── traceback.h
│ │ │ ├── tupleobject.h
│ │ │ └── unicodeobject.h
│ │ ├── datetime.h
│ │ ├── descrobject.h
│ │ ├── dictobject.h
│ │ ├── dynamic_annotations.h
│ │ ├── enumobject.h
│ │ ├── errcode.h
│ │ ├── eval.h
│ │ ├── exports.h
│ │ ├── fileobject.h
│ │ ├── fileutils.h
│ │ ├── floatobject.h
│ │ ├── frameobject.h
│ │ ├── funcobject.h
│ │ ├── genericaliasobject.h
│ │ ├── genobject.h
│ │ ├── graminit.h
│ │ ├── grammar.h
│ │ ├── import.h
│ │ ├── internal/
│ │ │ ├── pegen_interface.h
│ │ │ ├── pycore_abstract.h
│ │ │ ├── pycore_accu.h
│ │ │ ├── pycore_atomic.h
│ │ │ ├── pycore_bytes_methods.h
│ │ │ ├── pycore_byteswap.h
│ │ │ ├── pycore_call.h
│ │ │ ├── pycore_ceval.h
│ │ │ ├── pycore_code.h
│ │ │ ├── pycore_condvar.h
│ │ │ ├── pycore_context.h
│ │ │ ├── pycore_dtoa.h
│ │ │ ├── pycore_fileutils.h
│ │ │ ├── pycore_gc.h
│ │ │ ├── pycore_getopt.h
│ │ │ ├── pycore_gil.h
│ │ │ ├── pycore_hamt.h
│ │ │ ├── pycore_hashtable.h
│ │ │ ├── pycore_import.h
│ │ │ ├── pycore_initconfig.h
│ │ │ ├── pycore_interp.h
│ │ │ ├── pycore_object.h
│ │ │ ├── pycore_pathconfig.h
│ │ │ ├── pycore_pyerrors.h
│ │ │ ├── pycore_pyhash.h
│ │ │ ├── pycore_pylifecycle.h
│ │ │ ├── pycore_pymem.h
│ │ │ ├── pycore_pystate.h
│ │ │ ├── pycore_runtime.h
│ │ │ ├── pycore_sysmodule.h
│ │ │ ├── pycore_traceback.h
│ │ │ ├── pycore_tupleobject.h
│ │ │ └── pycore_warnings.h
│ │ ├── interpreteridobject.h
│ │ ├── intrcheck.h
│ │ ├── iterobject.h
│ │ ├── listobject.h
│ │ ├── longintrepr.h
│ │ ├── longobject.h
│ │ ├── marshal.h
│ │ ├── memoryobject.h
│ │ ├── methodobject.h
│ │ ├── modsupport.h
│ │ ├── moduleobject.h
│ │ ├── namespaceobject.h
│ │ ├── node.h
│ │ ├── object.h
│ │ ├── objimpl.h
│ │ ├── odictobject.h
│ │ ├── opcode.h
│ │ ├── osdefs.h
│ │ ├── osmodule.h
│ │ ├── parsetok.h
│ │ ├── patchlevel.h
│ │ ├── picklebufobject.h
│ │ ├── py_curses.h
│ │ ├── pyarena.h
│ │ ├── pycapsule.h
│ │ ├── pyconfig.h
│ │ ├── pyctype.h
│ │ ├── pydebug.h
│ │ ├── pydtrace.h
│ │ ├── pyerrors.h
│ │ ├── pyexpat.h
│ │ ├── pyfpe.h
│ │ ├── pyframe.h
│ │ ├── pyhash.h
│ │ ├── pylifecycle.h
│ │ ├── pymacconfig.h
│ │ ├── pymacro.h
│ │ ├── pymath.h
│ │ ├── pymem.h
│ │ ├── pyport.h
│ │ ├── pystate.h
│ │ ├── pystrcmp.h
│ │ ├── pystrhex.h
│ │ ├── pystrtod.h
│ │ ├── pythonrun.h
│ │ ├── pythread.h
│ │ ├── pytime.h
│ │ ├── rangeobject.h
│ │ ├── setobject.h
│ │ ├── sliceobject.h
│ │ ├── structmember.h
│ │ ├── structseq.h
│ │ ├── symtable.h
│ │ ├── sysmodule.h
│ │ ├── token.h
│ │ ├── traceback.h
│ │ ├── tracemalloc.h
│ │ ├── tupleobject.h
│ │ ├── typeslots.h
│ │ ├── ucnhash.h
│ │ ├── unicodeobject.h
│ │ ├── warnings.h
│ │ └── weakrefobject.h
│ ├── external_libs/
│ │ ├── DxErr.lib
│ │ ├── DxErr9.lib
│ │ ├── X3DAudio.lib
│ │ ├── XAPOFX.lib
│ │ ├── XInput.lib
│ │ ├── _tkinter.lib
│ │ ├── boost_python39-vc142-mt-gd-x32-1_75.lib
│ │ ├── boost_python39-vc142-mt-x32-1_75.lib
│ │ ├── d3d10.lib
│ │ ├── d3d10_1.lib
│ │ ├── d3d11_beta.lib
│ │ ├── d3d9.lib
│ │ ├── d3dcompiler.lib
│ │ ├── d3dx10.lib
│ │ ├── d3dx10d.lib
│ │ ├── d3dx11.lib
│ │ ├── d3dx9.lib
│ │ ├── d3dx9d.lib
│ │ ├── d3dxof.lib
│ │ ├── ddraw.lib
│ │ ├── dinput8.lib
│ │ ├── dsetup.lib
│ │ ├── dsound.lib
│ │ ├── dxgi.lib
│ │ ├── dxgi_beta.lib
│ │ ├── dxguid.lib
│ │ ├── libboost_container-vc142-mt-gd-x32-1_75.lib
│ │ ├── libboost_container-vc142-mt-x32-1_75.lib
│ │ ├── libboost_json-vc142-mt-gd-x32-1_75.lib
│ │ ├── libboost_json-vc142-mt-x32-1_75.lib
│ │ ├── python3.lib
│ │ ├── python39.lib
│ │ ├── python39.pdb
│ │ ├── python39_d.lib
│ │ ├── python39_d.pdb
│ │ ├── python3_d.lib
│ │ ├── xapobase.lib
│ │ └── xapobased.lib
│ ├── imconfig.h
│ ├── imgui.cpp
│ ├── imgui.h
│ ├── imgui.ini
│ ├── imgui_demo.cpp
│ ├── imgui_draw.cpp
│ ├── imgui_impl_dx11.cpp
│ ├── imgui_impl_dx11.h
│ ├── imgui_impl_win32.cpp
│ ├── imgui_impl_win32.h
│ ├── imgui_internal.h
│ ├── imgui_log.txt
│ ├── imgui_tables.cpp
│ ├── imgui_widgets.cpp
│ ├── imstb_rectpack.h
│ ├── imstb_textedit.h
│ ├── imstb_truetype.h
│ └── stb_image.h
├── LView.sln
├── README.md
└── UtilityScripts/
├── DownloadIcons.py
├── DownloadUnitData.py
├── GenerateItemData.py
└── GenerateUnitData.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
x64/
Debug/
Release/
LView/boost/
LView/Debug/
LView/Release/
LView/x64/
================================================
FILE: GameplayScripts/auto_smite.py
================================================
from lview import *
enable_key = 0
show_smitable = False
enabled_autosmite = False
lview_script_info = {
"script": "Auto Smite",
"author": "leryss",
"description": "Auto smites the jungle mob under the cursor"
}
def lview_load_cfg(cfg):
global enable_key, show_smitable
enable_key = cfg.get_int("enable_key", 0)
show_smitable = cfg.get_bool("show_smitable", True)
def lview_save_cfg(cfg):
global enable_key, show_smitable
cfg.set_int("enable_key", enable_key)
cfg.set_bool("show_smitable", show_smitable)
def lview_draw_settings(game, ui):
global enable_key, show_smitable
show_smitable = ui.checkbox("Show when to smite", show_smitable)
enable_key = ui.keyselect("Enable auto smite key", enable_key)
def lview_update(game, ui):
global enable_key, enabled_autosmite, show_smitable
smite = game.player.get_summoner_spell(SummonerSpellType.Smite)
if smite == None:
return
if game.was_key_pressed(enable_key):
enabled_autosmite = ~enabled_autosmite
hovered = game.hovered_obj
is_smitable = (hovered and (hovered.has_tags(UnitTag.Unit_Monster_Large) or hovered.has_tags(UnitTag.Unit_Monster_Epic)) and hovered.health - smite.value <= 0)
if enabled_autosmite:
p = game.world_to_screen(game.player.pos)
p.y -= 50
game.draw_button(p, "AutoSmiteOn", Color.BLACK, Color.YELLOW, 10);
if is_smitable:
smite.trigger()
if show_smitable and is_smitable:
game.draw_circle_world(hovered.pos, hovered.gameplay_radius, 30, 3, Color.YELLOW)
================================================
FILE: GameplayScripts/auto_spell.py
================================================
from lview import *
from commons.targeting import TargetingConfig
from commons.skills import *
import json, time
from pprint import pprint
lview_script_info = {
"script": "Auto Spell",
"author": "leryss",
"description": "Automatically casts spells on targets. Skillshots are cast using movement speed prediction. Works great for MOST skills but fails miserably for a few (for example yuumis Q)",
}
targeting = TargetingConfig()
cast_keys = {
'Q': 0,
'W': 0,
'E': 0,
'R': 0
}
def lview_load_cfg(cfg):
global targeting, cast_keys
targeting.load_from_cfg(cfg)
cast_keys = json.loads(cfg.get_str('cast_keys', json.dumps(cast_keys)))
def lview_save_cfg(cfg):
global targeting, cast_keys
targeting.save_to_cfg(cfg)
cfg.set_str('cast_keys', json.dumps(cast_keys))
def lview_draw_settings(game, ui):
global targeting, cast_keys
targeting.draw(ui)
for slot, key in cast_keys.items():
cast_keys[slot] = ui.keyselect(f'Key to cast {slot}', key)
draw_prediction_info(game, ui)
def lview_update(game, ui):
global targeting, cast_keys
for slot, key in cast_keys.items():
if game.was_key_pressed(key):
skill = getattr(game.player, slot)
b_is_skillshot = is_skillshot(skill.name)
skill_range = get_skillshot_range(game, skill.name) if b_is_skillshot else 1500.0
target = targeting.get_target(game, skill_range)
if target:
if b_is_skillshot:
cast_point = castpoint_for_collision(game, skill, game.player, target)
else:
cast_point = target.pos
if cast_point:
cast_point = game.world_to_screen(cast_point)
old_cpos = game.get_cursor()
game.move_cursor(cast_point)
skill.trigger()
time.sleep(0.01)
game.move_cursor(old_cpos)
================================================
FILE: GameplayScripts/base_script.py
================================================
from lview import *
lview_script_info = {
"script": "<script-name>",
"author": "<author-name>",
"description": "<script-description>",
"target_champ": "none"
}
def lview_load_cfg(cfg):
pass
def lview_save_cfg(cfg):
pass
def lview_draw_settings(game, ui):
pass
def lview_update(game, ui):
pass
================================================
FILE: GameplayScripts/champ_tracker.py
================================================
from lview import *
from time import time
lview_script_info = {
"script": "Champion Tracker",
"author": "leryss",
"description": "Tracks a enemy throughout the map leaving a trail on the minimap. It will track the enemy jungler by default"
}
first_iter = True
champ_ids = []
tracks = {}
tracked_champ_id = 0
seconds_to_track = 3.0
t_last_save_tracks = 0
def lview_load_cfg(cfg):
global seconds_to_track
seconds_to_track = cfg.get_float("seconds_to_track", 10)
def lview_save_cfg(cfg):
global seconds_to_track
cfg.set_float("seconds_to_track", seconds_to_track)
def lview_draw_settings(game, ui):
global tracked_champ_id, seconds_to_track, tracks, champ_ids
seconds_to_track = ui.dragfloat("Seconds to track", seconds_to_track, 0.1, 3, 20)
tracked_champ_id = ui.listbox("Champion to track", [game.get_obj_by_netid(net_id).name for net_id in champ_ids], tracked_champ_id)
def lview_update(game, ui):
global first_iter, champ_ids
global tracks, tracked_champ_id, seconds_to_track, t_last_save_tracks
if first_iter:
first_iter = False
# Populate tracks dict and find jungler to track
for champ in game.champs:
if champ.is_ally_to(game.player):
continue
champ_ids.append(champ.net_id)
last_idx = len(champ_ids) - 1
tracks[last_idx] = []
if champ.get_summoner_spell(SummonerSpellType.Smite) != None:
tracked_champ_id = last_idx
# If we didnt find a jungler we just track the first champ by default
if tracked_champ_id == 0:
tracked_champ_id = 0
if len(tracks) == 0:
return
now = time()
if now - t_last_save_tracks > 0.4:
t_last_save_tracks = now
for idx, track in tracks.items():
champ = game.get_obj_by_netid(champ_ids[idx])
if champ and champ.is_alive:
tracks[idx].append((Vec3(champ.pos.x, champ.pos.y, champ.pos.z), now))
tracks[idx] = list(filter(lambda t: now - t[1] < seconds_to_track, tracks[idx]))
for i, (pos, t) in enumerate(tracks[tracked_champ_id]):
x = i/len(tracks[tracked_champ_id])
green = (1-2*(x-0.5)/1.0 if x > 0.5 else 1.0);
red = (1.0 if x > 0.5 else 2*x/1.0);
p = game.world_to_minimap(pos)
game.draw_circle_filled(p, 4, 4, Color(red, green, 0.0, 1.0))
================================================
FILE: GameplayScripts/commons/__init__.py
================================================
================================================
FILE: GameplayScripts/commons/damage_calculator.py
================================================
import enum
from typing import Optional
class DamageType(enum.Enum):
True_ = 0
Normal = 1
Magic = 2
class DamageSpecification:
damage_type: Optional[DamageType] = None
base_damage = 0.0
percent_ad = 0.0
percent_ap = 0.0
# Damage is increased by up to missing_health_multiplier based on missing enemy health. Maximum if enemy health is below missing_health_max_multiplier
missing_health_scale_multiplier = 0.0
missing_health_max_scale_multiplier = 1.0
# Damage increased by missing_health_multiplier * enemy_missing_health
missing_health_multiplier = 0.0
# Damage increased by max_health_multiplier * enemy_max_health
max_health_multiplier = 0.0
# damage dealt by source to target
def calculate_damage(self, source, target):
# Calculate resistance
resistance_value = 0.0
penetration_percent = 0.0
penetration_flat = 0.0
penetration_lethality = 0.0
if self.damage_type is None:
return 0
elif self.damage_type == DamageType.True_:
pass
elif self.damage_type == DamageType.Normal:
resistance_value = target.armour
penetration_percent = 0.0 # TODO
penetration_flat = 0.0 # TODO
penetration_lethality = 0.0 # TODO
elif self.damage_type == DamageType.Magic:
resistance_value = target.magic_resist
penetration_percent = 0.0 # TODO
penetration_flat = 0.0 # TODO
penetration_lethality = 0.0 # TODO
# Lethality calculation
penetration_flat += penetration_lethality * (0.6 + 0.4 * source.lvl / 18.0)
# Negative resistance is not affected by penetration
if(resistance_value > 0.0):
resistance_value = resistance_value * penetration_percent - penetration_flat
# Penetration cannot reduce resistance below 0
resistance_value = max(0.0, resistance_value)
# Damage multiplier for armor, magic resistance or true damage (resistance_value is zero for true damage)
if resistance_value >= 0.0:
damage_multiplier = 100.0 / (100.0 + resistance_value)
else:
damage_multiplier = 2.0 - 100.0 / (100.0 - resistance_value)
dealt_damage = (
self.base_damage
+ self.missing_health_multiplier * (target.max_health - target.health)
+ self.max_health_multiplier * target.max_health
+ self.percent_ad * (source.base_atk + source.bonus_atk)
+ self.percent_ap * source.ap
)
percent_current_health = target.health / target.max_health
if percent_current_health <= self.missing_health_max_scale_multiplier:
dealt_damage = dealt_damage * (1.0 + self.missing_health_scale_multiplier)
else:
dealt_damage = (dealt_damage *
(1.0 + self.missing_health_scale_multiplier - self.missing_health_scale_multiplier
* ((percent_current_health - self.missing_health_max_scale_multiplier) / (1.0 - self.missing_health_max_scale_multiplier))))
# Multiplier for armor, magic resist or true damage
dealt_damage = damage_multiplier * dealt_damage
return dealt_damage
def get_damage_specification(champ) -> Optional[DamageSpecification]:
spec = DamageSpecification()
if champ.name == "darius":
# TODO: passive damage multiplier
spec.damage_type = DamageType.True_
spec.percent_ad = 0.75
if champ.R.level == 1:
spec.base_damage = 100.0
elif champ.R.level == 2:
spec.base_damage = 200.0
elif champ.R.level == 3:
spec.base_damage = 300.0
elif champ.name == "garen":
spec.damage_type = DamageType.True_
if champ.R.level == 1:
spec.base_damage = 150.0
spec.missing_health_multiplier = 0.20
elif champ.R.level == 2:
spec.base_damage = 300.0
spec.missing_health_multiplier = 0.25
elif champ.R.level == 3:
spec.base_damage = 450.0
spec.missing_health_multiplier = 0.30
elif champ.name == "lux":
spec.damage_type = DamageType.Magic
spec.percent_ap = 1.0
if champ.R.level == 1:
spec.base_damage = 300.0
elif champ.R.level == 2:
spec.base_damage = 400.0
elif champ.R.level == 3:
spec.base_damage = 500.0
elif champ.name == "veigar":
spec.damage_type = DamageType.Magic
spec.percent_ap = 0.75
spec.missing_health_scale_multiplier = 1.0
spec.missing_health_max_scale_multiplier = 0.33
if champ.R.level == 1:
spec.base_damage = 175.0
elif champ.R.level == 2:
spec.base_damage = 250.0
elif champ.R.level == 3:
spec.base_damage = 325.0
else:
return None
return spec
================================================
FILE: GameplayScripts/commons/items.py
================================================
from lview import *
def crit_from_items(items):
crit = 0.0
for item in items:
crit += item.crit
return crit
def onhit_guinsoo(src, target):
return crit_from_items(src.items) * 100.0 * 2.0
def onhit_rageknife(src, target):
return crit_from_items(src.items) * 100.0 * 1.75
def onhit_noonquiver(src, target):
return 0.0 if target.has_tags(UnitTag.Unit_Champion) else 20.0
def onhit_recurve_bow(src, target):
return 15.0
def onhit_botrk(src, target):
dmg = target.health * (0.06 if src.is_ranged else 0.1)
if dmg > 60.0 and not target.has_tags(UnitTag.Unit_Champion):
return 60.0
return dmg
def onhit_doran_ring(src, target):
return 5.0
def onhit_nashors(src, target):
return 15.0 + 0.2 * src.ap
def onhit_wits_end(src, target):
return 11.7 + 3.82 * src.lvl
OnHit_Physical = {
3124: onhit_guinsoo,
6677: onhit_rageknife,
6670: onhit_noonquiver,
1043: onhit_recurve_bow,
3153: onhit_botrk,
1056: onhit_doran_ring
}
OnHit_Magical = {
3115: onhit_nashors,
3091: onhit_wits_end
}
def get_onhit_physical(source, target):
global OnHit_Physical
phys = source.base_atk + source.bonus_atk
for item in source.items:
if item.id in OnHit_Physical:
phys += OnHit_Physical[item.id](source, target)
return phys
def get_onhit_magical(source, target):
global OnHit_Magical
magical = 0.0
for item in source.items:
if item.id in OnHit_Magical:
magical += OnHit_Magical[item.id](source, target)
return magical
================================================
FILE: GameplayScripts/commons/skills.py
================================================
from lview import *
import math, itertools, time
from . import items
Version = "experimental version"
MissileToSpell = {}
Spells = {}
ChampionSpells = {}
class SFlag:
Targeted = 1
Line = 2
Cone = 4
Area = 8
CollideWindwall = 16
CollideChampion = 32
CollideMob = 64
CollideGeneric = CollideMob | CollideChampion | CollideWindwall
SkillshotLine = CollideGeneric | Line
class Spell:
def __init__(self, name, missile_names, flags, delay = 0.0):
global MissileToSpell, Spells
self.flags = flags
self.name = name
self.missiles = missile_names
self.delay = delay
Spells[name] = self
for missile in missile_names:
MissileToSpell[missile] = self
delay = 0.0
flags = 0
name = "?"
missiles = []
ChampionSpells = {
"aatrox": [
Spell("aatroxw", ["aatroxw"], SFlag.CollideGeneric)
],
"aurelionsol": [
Spell("aurelionsolq", ["aurelionsolqmissile"], SFlag.SkillshotLine),
Spell("aurelionsolr", ["aurelionsolrbeammissile"], SFlag.Line | SFlag.CollideWindwall)
],
"ahri": [
Spell("ahriorbofdeception", ["ahriorbmissile"], SFlag.Line | SFlag.CollideWindwall),
Spell("ahriseduce", ["ahriseducemissile"], SFlag.CollideGeneric)
],
"ashe": [
Spell("volleyattack", ["volleyattack", "volleyattackwithsound"], SFlag.SkillshotLine),
Spell("enchantedcrystalarrow", ["enchantedcrystalarrow"], SFlag.Line | SFlag.CollideWindwall | SFlag.CollideChampion)
],
"brand": [
Spell("brandq", ["brandqmissile"], SFlag.SkillshotLine),
Spell("brandw", [], SFlag.Area)
],
"caitlyn": [
Spell("caitlynpiltoverpeacemaker", ["caitlynpiltoverpeacemaker", "caitlynpiltoverpeacemaker2"], SFlag.Line | SFlag.CollideWindwall),
Spell("caitlynyordletrap", [], SFlag.Area),
Spell("caitlynentrapment", ["caitlynentrapmentmissile"], SFlag.SkillshotLine)
],
"chogath": [
Spell("rupture", [], SFlag.Area, delay = 0.627),
Spell("feralscream", [], SFlag.Cone | SFlag.CollideWindwall)
],
"drmundo": [
Spell("infectedcleavermissilecast", ["infectedcleavermissile"], SFlag.SkillshotLine)
],
"diana": [
Spell("dianaq", ["dianaqinnermissile", "dianaqoutermissile"], SFlag.Area)
],
"ekko": [
Spell("ekkoq", ["ekkoqmis"], SFlag.Line | SFlag.CollideChampion),
Spell("ekkow", ["ekkowmis"], SFlag.Area, delay=3.0)
],
"fizz": [
Spell("fizzr", ["fizzrmissile"], SFlag.Line | SFlag.CollideChampion | SFlag.CollideWindwall)
],
"irelia": [
Spell("ireliae", ["ireliaemissile"], SFlag.Area),
Spell("ireliar", ["ireliar"], SFlag.SkillshotLine)
],
"illaoi": [
Spell("illaoiq", [], SFlag.Area),
Spell("illaoie", ["illaoiemis"], SFlag.SkillshotLine)
],
"jarvaniv": [
Spell("jarvanivdemacianstandard", [], SFlag.Area)
],
"khazix": [
Spell("khazixw", ["khazixwmissile"], SFlag.SkillshotLine),
Spell("khazixwlong", ["khazixwmissile"], SFlag.SkillshotLine)
],
"ezreal": [
Spell("ezrealq", ["ezrealq"], SFlag.SkillshotLine),
Spell("ezrealw", ["ezrealw"], SFlag.SkillshotLine),
Spell("ezrealr", ["ezrealr"], SFlag.SkillshotLine)
],
"evelynn": [
Spell("evelynnq", ["evelynnq"], SFlag.SkillshotLine)
],
"graves": [
Spell("gravesqlinespell", ["gravesqlinemis", "gravesqreturn"], SFlag.Line | SFlag.CollideChampion | SFlag.CollideWindwall),
Spell("gravessmokegrenade", ["gravessmokegrenadeboom"], SFlag.Area | SFlag.CollideWindwall),
Spell("graveschargeshot", ["graveschargeshotshot"], SFlag.Line | SFlag.CollideWindwall)
],
"twistedfate": [
Spell("wildcards", ["sealfatemissile"], SFlag.CollideWindwall | SFlag.Line)
],
"leesin": [
Spell("blindmonkqone", ["blindmonkqone"], SFlag.SkillshotLine)
],
"leona": [
Spell("leonazenithblade", ["leonazenithblademissile"], SFlag.Line | SFlag.CollideChampion | SFlag.CollideWindwall),
Spell("leonasolarflare", [], SFlag.Area)
],
"leblanc": [
Spell("leblancw", [], SFlag.Area),
Spell("leblancrw", [], SFlag.Area),
Spell("leblance", ["leblancemissile"], SFlag.SkillshotLine),
Spell("leblancre", ["leblancremissile"], SFlag.SkillshotLine)
],
"lucian": [
Spell("lucianw", ["lucianwmissile"], SFlag.SkillshotLine),
Spell("lucianr", ["lucianrmissile", "lucianrmissileoffhand"], SFlag.SkillshotLine)
],
"rengar": [
Spell("rengare", ["rengaremis"], SFlag.SkillshotLine),
Spell("rengareemp", ["rengareempmis"], SFlag.SkillshotLine),
],
"ryze": [
Spell("ryzeqwrapper", ["ryzeq"], SFlag.SkillshotLine)
],
"varus": [
Spell("varusq", ["varusqmissile"], SFlag.Line | SFlag.CollideWindwall),
Spell("varuse", ["varusemissile"], SFlag.Area),
Spell("varusr", ["varusrmissile"], SFlag.Line | SFlag.CollideChampion | SFlag.CollideWindwall)
],
"veigar": [
Spell("veigarbalefulstrike", ["veigarbalefulstrikemis"], SFlag.SkillshotLine),
Spell("veigardarkmatter", [], SFlag.Area, delay=1.0),
Spell("veigareventhorizon", [], SFlag.Area, delay=0.5)
],
"lux": [
Spell("luxlightbinding", ["luxlightbindingmis"], SFlag.SkillshotLine),
Spell("luxlightstrikekugel", ["luxlightstrikekugel"], SFlag.Area | SFlag.CollideWindwall),
Spell("luxmalicecannon", ["luxmalicecannon"], SFlag.Line)
],
"ziggs": [
Spell("ziggsq", ["ziggsqspell", "ziggsqspell2", "ziggsqspell3"], SFlag.Area | SFlag.CollideWindwall),
Spell("ziggsw", ["ziggsw"], SFlag.Area | SFlag.CollideWindwall),
Spell("ziggse", ["ziggse2"], SFlag.Area | SFlag.CollideWindwall),
Spell("ziggsr", ["ziggsrboom", "ziggsrboommedium", "ziggsrboomlong", "ziggsrboomextralong"], SFlag.Area),
],
"jhin": [
Spell("jhinw", ["jhinw"], SFlag.Line | SFlag.CollideChampion | SFlag.CollideWindwall, delay=0.5),
Spell("jhine", ["jhinetrap"], SFlag.Area | SFlag.CollideWindwall),
Spell("jhinrshot", ["jhinrshotmis", "jhinrshotmis4"], SFlag.Line | SFlag.CollideWindwall | SFlag.CollideChampion)
],
"nasus": [
Spell("nasuse", [], SFlag.Area)
],
"nami": [
Spell("namiq", ["namiqmissile"], SFlag.Area),
Spell("namir", ["namirmissile"], SFlag.Line | SFlag.CollideWindwall)
],
"nidalee": [
Spell("javelintoss", ["javelintoss"], SFlag.SkillshotLine),
Spell("bushwhack", [], SFlag.Area)
],
"malphite": [
Spell("ufslash", [], SFlag.Area)
],
"thresh": [
Spell("threshq", ["threshqmissile"], SFlag.SkillshotLine),
Spell("threshw", ["threshwlanternout"], SFlag.Area | SFlag.CollideWindwall)
],
"morgana": [
Spell("morganaq", ["morganaq"], SFlag.SkillshotLine),
Spell("morganaw", [], SFlag.Area, delay=0.25)
],
"missfortune": [
Spell("missfortunescattershot", [], SFlag.Area, delay=0.25),
Spell("missfortunebullettime", ["missfortunebullets"], SFlag.Line | SFlag.CollideWindwall)
],
"pantheon": [
Spell("pantheonq", ["pantheonqmissile"], SFlag.Line | SFlag.CollideWindwall),
Spell("pantheonr", ["pantheonrmissile"], SFlag.Area)
],
"annie": [
Spell("anniew", [], SFlag.Cone | SFlag.CollideWindwall),
Spell("annier", [], SFlag.Area)
],
"olaf": [
Spell("olafaxethrowcast", ["olafaxethrow"], SFlag.Line | SFlag.CollideWindwall)
],
"anivia": [
Spell("flashfrost", ["flashfrostspell"], SFlag.Line | SFlag.CollideWindwall),
Spell("crystallize", [], SFlag.Area, delay=0.25),
Spell("glacialstorm", [], SFlag.Area)
],
"urgot": [
Spell("urgotq", ["urgotqmissile"], SFlag.Area | SFlag.CollideWindwall, delay = 0.2),
Spell("urgotr", ["urgotr"], SFlag.Line | SFlag.CollideWindwall | SFlag.CollideChampion)
],
"senna": [
Spell("sennaw", ["sennaw"], SFlag.SkillshotLine),
Spell("sennar", ["sennar"], SFlag.Line)
],
"shyvana": [
Spell("shyvanafireball", ["shyvanafireballmissile"], SFlag.Line | SFlag.CollideChampion | SFlag.CollideWindwall),
Spell("shyvanafireballdragon2", ["shyvanafireballdragonmissile"], SFlag.Line | SFlag.Area | SFlag.CollideChampion | SFlag.CollideWindwall)
],
"singed": [
Spell("megaadhesive", ["singedwparticlemissile"], SFlag.Area)
],
"sivir": [
Spell("sivirq", ["sivirqmissile"], SFlag.Line | SFlag.CollideWindwall)
],
"soraka": [
Spell("sorakaq", ["sorakaqmissile"], SFlag.Area),
Spell("sorakae", [], SFlag.Area)
],
"sona": [
Spell("sonar", ["sonar"], SFlag.Line | SFlag.CollideWindwall)
],
"kayle": [
Spell("kayleq", ["kayleqmis"], SFlag.SkillshotLine)
],
"zac": [
Spell("zacq", ["zacqmissile"], SFlag.SkillshotLine),
Spell("zace", [], SFlag.Area)
],
"zyra": [
Spell("zyraq", [], SFlag.Area),
Spell("zyraw", [], SFlag.Area),
Spell("zyrae", ["zyrae"], SFlag.Line | SFlag.CollideWindwall),
Spell("zyrar", [], SFlag.Area)
],
"zilean": [
Spell("zileanq", ["zileanqmissile"], SFlag.Area | SFlag.CollideWindwall)
],
"orianna": [
Spell("orianaizunacommand", ["orianaizuna"], SFlag.Line | SFlag.Area | SFlag.CollideWindwall)
],
"warwick": [
Spell("warwickr", [], SFlag.Area | SFlag.CollideChampion)
]
}
def draw_prediction_info(game, ui):
global ChampionSpells, Version
ui.separator()
ui.text("Using LPrediction " + Version, Color.PURPLE)
if is_champ_supported(game.player):
ui.text(game.player.name.upper() + " has skillshot prediction support", Color.GREEN)
else:
ui.text(game.player.name.upper() + " doesnt have skillshot prediction support", Color.RED)
if ui.treenode(f'Supported Champions ({len(ChampionSpells)})'):
for champ, spells in sorted(ChampionSpells.items()):
ui.text(f"{champ.upper()} {' '*(20 - len(champ))}: {str([spell.name for spell in spells])}")
ui.treepop()
def get_skillshot_range(game, skill_name):
global Spells
if skill_name not in Spells:
raise Exception("Not a skillshot")
# Get the range of the missile if it has a missile
skillshot = Spells[skill_name]
if len(skillshot.missiles) > 0:
return game.get_spell_info(skillshot.missiles[0]).cast_range
# If it doesnt have a missile get simply the cast_range from the skill
info = game.get_spell_info(skill_name)
return info.cast_range*2.0 if is_skillshot_cone(skill_name) else info.cast_range
def is_skillshot(skill_name):
global Spells, MissileToSpell
return skill_name in Spells or skill_name in MissileToSpell
def get_missile_parent_spell(missile_name):
global MissileToSpell
return MissileToSpell.get(missile_name, None)
def is_champ_supported(champ):
global ChampionSpells
return champ.name in ChampionSpells
def is_skillshot_cone(skill_name):
if skill_name not in Spells:
return False
return Spells[skill_name].flags & SFlag.Cone
def is_last_hitable(game, player, enemy):
missile_speed = player.basic_missile_speed + 1
hit_dmg = items.get_onhit_physical(player, enemy) + items.get_onhit_magical(player, enemy)
hp = enemy.health
atk_speed = player.base_atk_speed * player.atk_speed_multi
t_until_basic_hits = game.distance(player, enemy)/missile_speed#(missile_speed*atk_speed/player.base_atk_speed)
for missile in game.missiles:
if missile.dest_id == enemy.id:
src = game.get_obj_by_id(missile.src_id)
if src:
t_until_missile_hits = game.distance(missile, enemy)/(missile.speed + 1)
if t_until_missile_hits < t_until_basic_hits:
hp -= src.base_atk
return hp - hit_dmg <= 0
# Returns a point where the mouse should click to cast a spells taking into account the targets movement speed
def castpoint_for_collision(game, spell, caster, target):
global Spells
print('predicted')
if spell.name not in Spells:
return None
# Get extra data for spell that isnt provided by lview
spell_extra = Spells[spell.name]
if len(spell_extra.missiles) > 0:
missile = game.get_spell_info(spell_extra.missiles[0])
else:
missile = spell
t_delay = spell.delay + spell_extra.delay
if missile.travel_time > 0.0:
t_missile = missile.travel_time
else:
t_missile = (missile.cast_range / missile.speed) if len(spell_extra.missiles) > 0 and missile.speed > 0.0 else 0.0
# Get direction of target
target_dir = target.pos.sub(target.prev_pos).normalize()
if math.isnan(target_dir.x):
target_dir.x = 0.0
if math.isnan(target_dir.y):
target_dir.y = 0.0
if math.isnan(target_dir.z):
target_dir.z = 0.0
#print(f'{target_dir.x} {target_dir.y} {target_dir.z}')
# If the spell is a line we simulate the main missile to get the collision point
if spell_extra.flags & SFlag.Line:
iterations = int(missile.cast_range/30.0)
step = t_missile/iterations
last_dist = 9999999
last_target_pos = None
for i in range(iterations):
t = i*step
target_future_pos = target.pos.add(target_dir.scale((t_delay + t)*target.movement_speed))
spell_dir = target_future_pos.sub(caster.pos).normalize().scale(t*missile.speed)
spell_future_pos = caster.pos.add(spell_dir)
dist = target_future_pos.distance(spell_future_pos)
#print(dist)
if dist < missile.width/2.0:
return target_future_pos
elif dist > last_dist:
return last_target_pos
else:
last_dist = dist
last_target_pos = target_future_pos
return None
# If the spell is an area spell we return the position of the player when the spell procs
elif spell_extra.flags & SFlag.Area:
return target.pos.add(target_dir.scale((t_delay + t_missile)*target.movement_speed))
else:
return target.pos
================================================
FILE: GameplayScripts/commons/targeting.py
================================================
from enum import Enum
class Target(Enum):
ClosestToPlayer = 0
LowestHealth = 1
MostFed = 2
class TargetingConfig:
targets = [ Target.ClosestToPlayer, Target.LowestHealth, Target.MostFed ]
targeting_lambdas = {
Target.ClosestToPlayer: (lambda player, enemy: player.pos.distance(enemy.pos)),
Target.LowestHealth: (lambda player, enemy: enemy.health),
Target.MostFed: (lambda player, enemy: -sum([item.cost for item in enemy.items]))
}
selected = 0
target_minions = False
target_jungle = False
def draw(self, ui):
ui.separator()
self.selected = ui.listbox("Target", [str(target)[7:] for target in self.targets], self.selected)
self.target_jungle = ui.checkbox("Allow targeting jungle monsters", self.target_jungle)
self.target_minions = ui.checkbox("Allow targeting minions", self.target_minions)
def get_target(self, game, range):
player = game.player
target_info = self.targets[self.selected]
target = self.find_target(game, game.champs, range, self.targeting_lambdas[target_info])
if not target:
others = []
if self.target_jungle:
others.extend(game.jungle)
if self.target_minions:
others.extend(game.minions)
if len(others) > 0:
target = self.find_target(game, others, range, self.targeting_lambdas[target_info])
return target
def find_target(self, game, array, range, value_extractor):
target = None
min = 99999999
for obj in array:
if not obj.is_alive or not obj.is_visible or obj.is_ally_to(game.player) or (game.distance(game.player, obj) - game.player.gameplay_radius - obj.gameplay_radius) > range:
continue
val = value_extractor(game.player, obj)
if val < min:
min = val
target = obj
return target
def load_from_cfg(self, cfg):
self.selected = cfg.get_int("targeting_target", 0)
self.target_jungle = cfg.get_bool("target_jungle", False)
self.target_minions = cfg.get_bool("target_minions", False)
def save_to_cfg(self, cfg):
cfg.set_int("targeting_target", self.selected)
cfg.set_bool("target_jungle", self.target_jungle)
cfg.set_bool("target_minions", self.target_minions)
================================================
FILE: GameplayScripts/drawings.py
================================================
### Note:
### Currently the code to draw skillshots is disabled because there are way too many exceptions to make a general renderer.
### Each skill must have flags/ranges defined separately. Maybe in the future ill make a separate python package with skillshot related things if im helped.
from lview import *
from time import time
import itertools, math
from commons.skills import *
from copy import copy
lview_script_info = {
"script": "Drawings",
"author": "leryss",
"description": "Draws indicators for different things"
}
turret_ranges = False
minion_last_hit = False
attack_range = False
skillshots = False
skillshots_predict = False
skillshots_min_range = 0
skillshots_max_speed = 0
skillshots_show_ally = False
skillshots_show_enemy = False
def lview_load_cfg(cfg):
global turret_ranges, minion_last_hit, attack_range
global skillshots, skillshots_predict, skillshots_min_range, skillshots_max_speed, skillshots_show_ally, skillshots_show_enemy
turret_ranges = cfg.get_bool("turret_ranges", True)
minion_last_hit = cfg.get_bool("minion_last_hit", True)
attack_range = cfg.get_bool("attack_range", True)
skillshots = cfg.get_bool("skillshots", True)
skillshots_show_ally = cfg.get_bool("skillshots_show_ally", True)
skillshots_show_enemy = cfg.get_bool("skillshots_show_enemy", True)
#skillshots_predict = cfg.get_bool("skillshots_predict", True)
skillshots_min_range = cfg.get_float("skillshots_min_range", 500)
skillshots_max_speed = cfg.get_float("skillshots_max_speed", 2500)
def lview_save_cfg(cfg):
global turret_ranges, minion_last_hit, attack_range
global skillshots, skillshots_predict, skillshots_min_range, skillshots_max_speed, skillshots_show_ally, skillshots_show_enemy
cfg.set_bool("turret_ranges", turret_ranges)
cfg.set_bool("minion_last_hit", minion_last_hit)
cfg.set_bool("attack_range", attack_range)
cfg.set_bool("skillshots", skillshots)
cfg.set_bool("skillshots_show_ally", skillshots_show_ally)
cfg.set_bool("skillshots_show_enemy", skillshots_show_enemy)
#cfg.set_bool("skillshots_predict", skillshots_predict)
cfg.set_float("skillshots_min_range", skillshots_min_range)
cfg.set_float("skillshots_max_speed", skillshots_max_speed)
def lview_draw_settings(game, ui):
global turret_ranges, minion_last_hit, attack_range
global skillshots, skillshots_predict, skillshots_min_range, skillshots_max_speed, skillshots_show_ally, skillshots_show_enemy
turret_ranges = ui.checkbox("Turret ranges", turret_ranges)
minion_last_hit = ui.checkbox("Minion last hit", minion_last_hit)
attack_range = ui.checkbox("Champion attack range", attack_range)
ui.separator()
ui.text("Skillshots (Experimental)")
skillshots = ui.checkbox("Draw skillshots", skillshots)
skillshots_show_ally = ui.checkbox("Show for allies", skillshots_show_ally)
skillshots_show_enemy = ui.checkbox("Show for enemies", skillshots_show_enemy)
#skillshots_predict = ui.checkbox("Use skillshot prediction", skillshots_predict)
skillshots_min_range = ui.dragfloat("Minimum skillshot range", skillshots_min_range, 100, 0, 3000)
skillshots_max_speed = ui.dragfloat("Maximum skillshot speed", skillshots_max_speed, 100, 1000, 5000)
draw_prediction_info(game, ui)
def draw_rect(game, start_pos, end_pos, radius, color):
dir = Vec3(end_pos.x - start_pos.x, 0, end_pos.z - start_pos.z).normalize()
left_dir = Vec3(dir.x, dir.y, dir.z).rotate_y(90).scale(radius)
right_dir = Vec3(dir.x, dir.y, dir.z).rotate_y(-90).scale(radius)
p1 = Vec3(start_pos.x + left_dir.x, start_pos.y + left_dir.y, start_pos.z + left_dir.z)
p2 = Vec3(end_pos.x + left_dir.x, end_pos.y + left_dir.y, end_pos.z + left_dir.z)
p3 = Vec3(end_pos.x + right_dir.x, end_pos.y + right_dir.y, end_pos.z + right_dir.z)
p4 = Vec3(start_pos.x + right_dir.x, start_pos.y + right_dir.y, start_pos.z + right_dir.z)
game.draw_rect_world(p1, p2, p3, p4, 3, color)
def draw_atk_range(game, player):
color = Color.GREEN
color.a = 0.5
game.draw_circle_world(player.pos, player.base_atk_range + player.gameplay_radius, 100, 2, color)
def draw_turret_ranges(game, player):
color = Color.RED
color.a = 0.5
for turret in game.turrets:
if turret.is_alive and turret.is_enemy_to(player) and game.is_point_on_screen(turret.pos):
range = turret.base_atk_range + turret.gameplay_radius
game.draw_circle_world(turret.pos, range, 100, 2, color)
dist = turret.pos.distance(player.pos) - range
if dist <= player.gameplay_radius:
game.draw_circle_world(player.pos, player.gameplay_radius*2, 30, 3, Color.RED)
def draw_minion_last_hit(game, player):
color = Color.CYAN
for minion in game.minions:
if minion.is_visible and minion.is_alive and minion.is_enemy_to(player) and game.is_point_on_screen(minion.pos):
if is_last_hitable(game, player, minion):
p = game.hp_bar_pos(minion)
game.draw_rect(Vec4(p.x - 34, p.y - 9, p.x + 32, p.y + 1), Color.CYAN, 0, 2)
def draw_skillshots(game, player):
global skillshots, skillshots_predict, skillshots_min_range, skillshots_max_speed, skillshots_show_ally, skillshots_show_enemy
color = Color.WHITE
for missile in game.missiles:
if not skillshots_show_ally and missile.is_ally_to(game.player):
continue
if not skillshots_show_enemy and missile.is_enemy_to(game.player):
continue
if not is_skillshot(missile.name) or missile.speed > skillshots_max_speed or missile.start_pos.distance(missile.end_pos) < skillshots_min_range:
continue
spell = get_missile_parent_spell(missile.name)
if not spell:
continue
end_pos = missile.end_pos.clone()
start_pos = missile.start_pos.clone()
curr_pos = missile.pos.clone()
impact_pos = None
start_pos.y = game.map.height_at(start_pos.x, start_pos.z) + missile.height
end_pos.y = start_pos.y
curr_pos.y = start_pos.y
if spell.flags & SFlag.Line:
draw_rect(game, curr_pos, end_pos, missile.width, color)
game.draw_circle_world_filled(curr_pos, missile.width, 20, Color.RED)
elif spell.flags & SFlag.Area:
r = game.get_spell_info(spell.name).cast_radius
end_pos.y = game.map.height_at(end_pos.x, end_pos.z)
percent_done = missile.start_pos.distance(curr_pos)/missile.start_pos.distance(end_pos)
color = Color(1, 1.0 - percent_done, 0, 0.5)
game.draw_circle_world(end_pos, r, 40, 3, color)
game.draw_circle_world_filled(end_pos, r*percent_done, 40, color)
def lview_update(game, ui):
global turret_ranges, minion_last_hit, attack_range, skillshots
player = game.player
if attack_range and game.is_point_on_screen(player.pos):
draw_atk_range(game, player)
if turret_ranges:
draw_turret_ranges(game, player)
if minion_last_hit:
draw_minion_last_hit(game, player)
if skillshots:
draw_skillshots(game, player)
================================================
FILE: GameplayScripts/execution_notifier.py
================================================
from lview import *
import commons.damage_calculator as damage_calculator
lview_script_info = {
"script": "Execution notifier",
"author": "orkido",
"description": "Shows message if a enemy champion can be executed with an ability"
}
def lview_load_cfg(cfg):
pass
def lview_save_cfg(cfg):
pass
def lview_draw_settings(game, ui):
pass
def lview_update(game, ui):
damage_spec = damage_calculator.get_damage_specification(game.player)
if damage_spec is None:
# Current champion is not supported
return
for champ in game.champs:
if champ.is_enemy_to(game.player):
dmg = damage_spec.calculate_damage(game.player, champ)
if champ.health <= dmg:
game.draw_circle_filled(game.world_to_screen(champ.pos), 100.0, 100, Color.RED)
================================================
FILE: GameplayScripts/map_awareness.py
================================================
from lview import *
lview_script_info = {
"script": "Map Awareness",
"author": "leryss",
"description": "Cheat that improves your map awareness."
}
bound_max = 0
show_alert_enemy_close = False
show_last_enemy_pos = False
show_last_enemy_pos_minimap = False
def lview_load_cfg(cfg):
global bound_max, show_alert_enemy_close, show_last_enemy_pos, show_last_enemy_pos_minimap
show_alert_enemy_close = cfg.get_bool("show_alert_enemy_close", True)
show_last_enemy_pos = cfg.get_bool("show_last_enemy_pos", True)
show_last_enemy_pos_minimap = cfg.get_bool("show_last_enemy_pos_minimap", True)
bound_max = cfg.get_float("bound_max", 4000)
def lview_save_cfg(cfg):
global bound_max, show_alert_enemy_close, show_last_enemy_pos, show_last_enemy_pos_minimap
cfg.set_float("bound_max", bound_max)
cfg.set_bool("show_alert_enemy_close", show_alert_enemy_close)
cfg.set_bool("show_last_enemy_pos", show_last_enemy_pos)
cfg.set_bool("show_last_enemy_pos_minimap", show_last_enemy_pos_minimap)
def lview_draw_settings(game, ui):
global bound_max, show_alert_enemy_close, show_last_enemy_pos, show_last_enemy_pos_minimap
show_last_enemy_pos = ui.checkbox("Show last position of champions", show_last_enemy_pos)
show_last_enemy_pos_minimap = ui.checkbox("Show last position of champions on minimap", show_last_enemy_pos_minimap)
ui.separator()
show_alert_enemy_close = ui.checkbox("Show champions that are getting close", show_alert_enemy_close)
bound_max = ui.dragfloat("Alert when distance less than", bound_max, 100.0, 500.0, 10000.0)
def draw_champ_world_icon(game, champ, pos, size, draw_distance = False, draw_hp_bar = False, draw_invisible_duration = False):
size_hp_bar = size/10.0
percent_hp = champ.health/champ.max_health
# Draw champ icon
pos.x -= size/2.0
pos.y -= size/2.0
game.draw_image(champ.name.lower() + "_square", pos, pos.add(Vec2(size, size)), Color.WHITE if champ.is_visible else Color.GRAY, 100.0)
# Draw hp bar
if draw_hp_bar:
pos.y += size
game.draw_rect_filled(Vec4(pos.x, pos.y, pos.x + size, pos.y + size_hp_bar), Color.BLACK)
game.draw_rect_filled(Vec4(pos.x + 1, pos.y + 1, pos.x + 1 + (size - 1)*percent_hp, pos.y + size_hp_bar - 1), Color.GREEN)
# Draw distance
if draw_distance:
pos.x += size_hp_bar
pos.y += size_hp_bar
game.draw_text(pos, '{:.0f}m'.format(game.distance(champ, game.player)), Color.WHITE)
if not champ.is_visible and draw_invisible_duration:
pos.x += 2*size_hp_bar
pos.y += size_hp_bar
game.draw_text(pos, '{:.0f}'.format(game.time - champ.last_visible_at), Color.WHITE)
def show_alert(game, champ):
if game.is_point_on_screen(champ.pos) or not champ.is_alive or not champ.is_visible or champ.is_ally_to(game.player):
return
dist = champ.pos.distance(game.player.pos)
if dist > bound_max:
return
pos = game.world_to_screen(champ.pos.sub(game.player.pos).normalize().scale(500).add(game.player.pos))
draw_champ_world_icon(game, champ, pos, 48.0, True, True, False)
def show_last_pos_world(game, champ):
if champ.is_visible or not champ.is_alive or not game.is_point_on_screen(champ.pos):
return
draw_champ_world_icon(game, champ, game.world_to_screen(champ.pos), 48.0, False, True, True)
def show_last_pos_minimap(game, champ):
if champ.is_visible or not champ.is_alive:
return
draw_champ_world_icon(game, champ, game.world_to_minimap(champ.pos), 24.0, False, False, False)
def lview_update(game, ui):
global bound_max, show_alert_enemy_close, show_last_enemy_pos, show_last_enemy_pos_minimap
for champ in game.champs:
if show_alert_enemy_close:
show_alert(game, champ)
if show_last_enemy_pos:
show_last_pos_world(game, champ)
if show_last_enemy_pos_minimap:
show_last_pos_minimap(game, champ)
================================================
FILE: GameplayScripts/object_viewer.py
================================================
from lview import *
from pprint import pprint
lview_script_info = {
"script": "Object Explorer",
"author": "leryss",
"description": "This is not a cheat. This just provides a way to explore ingame objects"
}
def draw_spell(spell, ui):
if ui.treenode(str(spell.slot)):
ui.labeltext("name", spell.name)
ui.labeltext("summmoner_spell_type", str(spell.summoner_spell_type))
ui.dragint("level", spell.level)
ui.dragfloat("ready_at", spell.ready_at)
ui.dragfloat("value", spell.value)
ui.separator()
ui.dragfloat("speed", spell.speed)
ui.dragfloat("cast_range", spell.cast_range)
ui.dragfloat("width", spell.width)
ui.dragfloat("cast_radius", spell.cast_radius)
ui.dragfloat("height", spell.height)
ui.dragfloat("delay", spell.delay)
ui.treepop()
def draw_items(items, ui):
for item in items:
if ui.treenode(str(item.id)):
ui.dragint("slot", item.slot)
if item.movement_speed > 0: ui.dragfloat("movement_speed", item.movement_speed)
if item.health > 0: ui.dragfloat("health", item.health)
if item.crit > 0: ui.dragfloat("crit", item.crit)
if item.ability_power > 0: ui.dragfloat("ability_power", item.ability_power)
if item.mana > 0: ui.dragfloat("mana", item.mana)
if item.armour > 0: ui.dragfloat("armour", item.armour)
if item.magic_resist > 0: ui.dragfloat("magic_resist", item.magic_resist)
if item.physical_damage > 0: ui.dragfloat("physical_damage", item.physical_damage)
if item.attack_speed > 0: ui.dragfloat("attack_speed", item.attack_speed)
if item.life_steal > 0: ui.dragfloat("life_steal", item.life_steal)
if item.hp_regen > 0: ui.dragfloat("hp_regen", item.hp_regen)
if item.movement_speed_percent > 0: ui.dragfloat("movement_speed_percent", item.movement_speed_percent)
ui.treepop()
def draw_missile(obj, ui):
if ui.treenode("{}_({}->{}) ({})".format(obj.name, obj.src_id, obj.dest_id, hex(obj.address))):
ui.dragint("id", obj.id)
ui.labeltext("net_id", hex(obj.net_id))
ui.dragint("team", obj.team)
ui.labeltext("start_pos", f"x={obj.start_pos.x:.2f}, y={obj.start_pos.y:.2f}, z={obj.start_pos.z:.2f}")
ui.labeltext("end_pos", f"x={obj.end_pos.x:.2f}, y={obj.end_pos.y:.2f}, z={obj.end_pos.z:.2f}")
ui.labeltext("pos", f"x={obj.pos.x:.2f}, y={obj.pos.y:.2f}, z={obj.pos.z:.2f}")
ui.dragint("src_id", obj.src_id)
ui.dragint("dest_id", obj.dest_id)
ui.separator()
ui.dragfloat("speed", obj.speed)
ui.dragfloat("cast_range", obj.cast_range)
ui.dragfloat("width", obj.width)
ui.dragfloat("cast_radius", obj.cast_radius)
ui.dragfloat("height", obj.height)
ui.dragfloat("delay", obj.delay)
ui.treepop()
def draw_game_object(obj, ui, additional_draw = None, set_open=False):
if(obj == None):
ui.text("null", Color.RED)
return
if(set_open):
ui.opennext()
if ui.treenode("{}_{} ({})".format(obj.name, obj.id, hex(obj.address))):
ui.labeltext("address", hex(obj.address))
ui.labeltext("net_id", hex(obj.net_id))
ui.labeltext("name", obj.name, Color.ORANGE)
ui.labeltext("pos", f"x={obj.pos.x:.2f}, y={obj.pos.y:.2f}, z={obj.pos.z:.2f}")
ui.dragint("id", obj.id)
ui.separator()
ui.dragfloat("health", obj.health)
ui.checkbox("is_alive", obj.is_alive)
ui.separator()
ui.dragfloat("base_atk", obj.base_atk)
ui.dragfloat("bonus_atk", obj.bonus_atk)
ui.dragfloat("armour", obj.armour)
ui.dragfloat("magic_resist", obj.magic_resist)
ui.dragfloat("ap", obj.ap)
ui.dragfloat("crit", obj.crit)
ui.dragfloat("crit_multi", obj.crit_multi)
ui.separator()
ui.dragfloat("atk_range", obj.atk_range)
ui.dragfloat("base_atk_range", obj.base_atk_range)
ui.dragfloat("base_atk_speed", obj.base_atk_speed)
ui.dragfloat("atk_speed_multi", obj.atk_speed_multi)
ui.dragfloat("atk_speed_ratio", obj.atk_speed_ratio)
ui.dragfloat("basic_missile_speed", obj.basic_missile_speed)
ui.dragfloat("base_ms", obj.base_ms)
ui.dragfloat("movement_speed", obj.movement_speed)
ui.separator()
ui.dragfloat("selection_radius", obj.selection_radius)
ui.dragfloat("gameplay_radius", obj.gameplay_radius)
ui.dragfloat("pathing_radius", obj.pathing_radius)
ui.dragfloat("acquisition_radius", obj.acquisition_radius)
ui.separator()
ui.dragfloat("duration", obj.duration)
ui.dragfloat("last_visible_at", obj.last_visible_at)
ui.checkbox("is_visible", obj.is_visible)
if additional_draw != None:
additional_draw()
ui.treepop()
def draw_champion(obj, ui):
def draw_spells():
ui.dragint("Level", obj.lvl)
ui.text("Items")
draw_items(obj.items, ui)
ui.text("Skills")
draw_spell(obj.Q, ui)
draw_spell(obj.W, ui)
draw_spell(obj.E, ui)
draw_spell(obj.R, ui)
draw_spell(obj.D, ui)
draw_spell(obj.F, ui)
draw_game_object(obj, ui, additional_draw = draw_spells)
def draw_list(label, objs, ui, draw_func):
if ui.treenode(label):
for obj in objs:
draw_func(obj, ui)
ui.treepop()
def lview_load_cfg(cfg):
pass
def lview_save_cfg(cfg):
pass
def lview_draw_settings(objs, ui):
pass
def lview_update(game, ui):
ui.begin("Object Viewer")
ui.dragfloat("time", game.time)
if game.hovered_obj:
ui.labeltext("hovered_obj", f"{game.hovered_obj.name} ({hex(game.hovered_obj.address)})")
else:
ui.labeltext("hovered_obj", "none")
ui.text("Local Champion")
draw_champion(game.player, ui)
ui.text("Lists")
draw_list("Champions", game.champs, ui, draw_champion)
draw_list("Minions", game.minions, ui, draw_game_object)
draw_list("Jungle", game.jungle, ui, draw_game_object)
draw_list("Turrets", game.turrets, ui, draw_game_object)
draw_list("Missiles", game.missiles, ui, draw_missile)
draw_list("Others", game.others, ui, draw_game_object)
ui.end()
================================================
FILE: GameplayScripts/orb_walker.py
================================================
from lview import *
from commons import skills
from commons.targeting import TargetingConfig
import time, json
lview_script_info = {
"script": "Orbwalker",
"author": "leryss",
"description": "Automatically kites enemies. Also has last hit built in"
}
last_attacked = 0
last_moved = 0
key_attack_move = 0
key_orbwalk = 0
auto_last_hit = False
max_atk_speed = 0
toggle_mode = False
toggled = False
targeting = TargetingConfig()
def lview_load_cfg(cfg):
global key_attack_move, key_orbwalk, max_atk_speed, auto_last_hit, toggle_mode
global targeting
key_attack_move = cfg.get_int("key_attack_move", 0)
key_orbwalk = cfg.get_int("key_orbwalk", 0)
max_atk_speed = cfg.get_float("max_atk_speed", 2.0)
auto_last_hit = cfg.get_bool("auto_last_hit", True)
toggle_mode = cfg.get_bool("toggle_mode", False)
targeting.load_from_cfg(cfg)
def lview_save_cfg(cfg):
global key_attack_move, key_orbwalk, max_atk_speed, auto_last_hit, toggle_mode
global targeting
cfg.set_int("key_attack_move", key_attack_move)
cfg.set_int("key_orbwalk", key_orbwalk)
cfg.set_float("max_atk_speed", max_atk_speed)
cfg.set_bool("auto_last_hit", auto_last_hit)
cfg.set_bool("toggle_mode", toggle_mode)
targeting.save_to_cfg(cfg)
def lview_draw_settings(game, ui):
global key_attack_move, key_orbwalk, max_atk_speed, auto_last_hit, toggle_mode
global targeting
champ_name = game.player.name
max_atk_speed = ui.sliderfloat("Max attack speed", max_atk_speed, 1.5, 3.0)
key_attack_move = ui.keyselect("Attack move key", key_attack_move)
key_orbwalk = ui.keyselect("Orbwalk activate key", key_orbwalk)
auto_last_hit = ui.checkbox("Last hit minions when no targets", auto_last_hit)
toggle_mode = ui.checkbox("Toggle mode", toggle_mode)
targeting.draw(ui)
def find_minion_target(game):
atk_range = game.player.base_atk_range + game.player.gameplay_radius
min_health = 9999999999
target = None
for minion in game.minions:
if minion.is_enemy_to(game.player) and minion.is_alive and minion.health < min_health and game.distance(game.player, minion) < atk_range and skills.is_last_hitable(game, game.player, minion):
target = minion
min_health = minion.health
return target
def get_target(game):
global auto_last_hit
target = targeting.get_target(game, game.player.base_atk_range + game.player.gameplay_radius)
if not target and auto_last_hit:
return find_minion_target(game)
return target
def lview_update(game, ui):
global last_attacked, alternate, last_moved
global key_attack_move, key_orbwalk, max_atk_speed
global toggle_mode, toggled
if toggle_mode:
if game.was_key_pressed(key_orbwalk):
toggled = not toggled
if not toggled:
return
elif not game.is_key_down(key_orbwalk):
return
game.draw_button(game.world_to_screen(game.player.pos), "OrbWalking", Color.BLACK, Color.WHITE)
# Handle basic attacks
self = game.player
atk_speed = self.base_atk_speed * self.atk_speed_multi
b_windup_time = (1.0/self.base_atk_speed)*game.player.basic_atk_windup
c_atk_time = 1.0/atk_speed
max_atk_time = 1.0/max_atk_speed
target = get_target(game)
t = time.time()
if t - last_attacked > max(c_atk_time, max_atk_time) and target:
last_attacked = t
game.press_key(key_attack_move)
game.click_at(True, game.world_to_screen(target.pos))
else:
dt = t - last_attacked
if dt > b_windup_time and t - last_moved > 0.15:
last_moved = t
game.press_right_click()
================================================
FILE: GameplayScripts/spell_tracker.py
================================================
from lview import *
show_local_champ = False
show_allies = False
show_enemies = False
lview_script_info = {
"script": "Spell Tracker",
"author": "leryss",
"description": "Tracks spell cooldowns and levels"
}
def get_color_for_cooldown(cooldown):
if cooldown > 0.0:
return Color.DARK_RED
else:
return Color(1, 1, 1, 1)
def draw_spell(game, spell, pos, size, show_lvl = True, show_cd = True):
cooldown = spell.get_current_cooldown(game.time)
color = get_color_for_cooldown(cooldown) if spell.level > 0 else Color.GRAY
game.draw_image(spell.icon, pos, pos.add(Vec2(size, size)), color, 10.0)
if show_cd and cooldown > 0.0:
game.draw_text(pos.add(Vec2(4, 5)), str(int(cooldown)), Color.WHITE)
if show_lvl:
for i in range(spell.level):
offset = i*4
game.draw_rect_filled(Vec4(pos.x + offset, pos.y + 24, pos.x + offset + 3, pos.y + 26), Color.YELLOW)
def draw_overlay_on_champ(game, champ):
p = game.hp_bar_pos(champ)
p.x -= 70
if not game.is_point_on_screen(p):
return
p.x += 25
draw_spell(game, champ.Q, p, 24)
p.x += 25
draw_spell(game, champ.W, p, 24)
p.x += 25
draw_spell(game, champ.E, p, 24)
p.x += 25
draw_spell(game, champ.R, p, 24)
p.x += 37
p.y -= 32
draw_spell(game, champ.D, p, 15, False, False)
p.y += 16
draw_spell(game, champ.F, p, 15, False, False)
def lview_update(game, ui):
global show_allies, show_enemies, show_local_champ
for champ in game.champs:
if not champ.is_visible or not champ.is_alive:
continue
if champ == game.player and show_local_champ:
draw_overlay_on_champ(game, champ)
elif champ != game.player:
if champ.is_ally_to(game.player) and show_allies:
draw_overlay_on_champ(game, champ)
elif champ.is_enemy_to(game.player) and show_enemies:
draw_overlay_on_champ(game, champ)
def lview_load_cfg(cfg):
global show_allies, show_enemies, show_local_champ
show_allies = cfg.get_bool("show_allies", False)
show_enemies = cfg.get_bool("show_enemies", True)
show_local_champ = cfg.get_bool("show_local_champ", False)
def lview_save_cfg(cfg):
global show_allies, show_enemies, show_local_champ
cfg.set_bool("show_allies", show_allies)
cfg.set_bool("show_enemies", show_enemies)
cfg.set_bool("show_local_champ", show_local_champ)
def lview_draw_settings(game, ui):
global show_allies, show_enemies, show_local_champ
show_allies = ui.checkbox("Show overlay on allies", show_allies)
show_enemies = ui.checkbox("Show overlay on enemies", show_enemies)
show_local_champ = ui.checkbox("Show overlay on self", show_local_champ)
================================================
FILE: GameplayScripts/tf_card_picker.py
================================================
from lview import *
lview_script_info = {
"script": "Twisted Fate Card Picker",
"author": "leryss",
"description": "Picks specific cards for twisted fate",
"target_champ": "twistedfate"
}
key_blue, key_red, key_yellow = 0, 0, 0
card_to_lock = None
key_w = 17
def lview_load_cfg(cfg):
global key_blue, key_red, key_yellow
key_blue = cfg.get_int("key_blue", 0)
key_red = cfg.get_int("key_red", 0)
key_yellow = cfg.get_int("key_yellow", 0)
def lview_save_cfg(cfg):
global key_blue, key_red, key_yellow
cfg.set_int("key_blue", key_blue)
cfg.set_int("key_red", key_red)
cfg.set_int("key_yellow", key_yellow)
def lview_draw_settings(game, ui):
global key_blue, key_red, key_yellow
key_blue = ui.keyselect("Key blue card", key_blue)
key_red = ui.keyselect("Key red card", key_red)
key_yellow = ui.keyselect("Key yellow card", key_yellow)
def lview_update(game, ui):
global key_blue, key_red, key_yellow, key_w
global card_to_lock
if card_to_lock is not None:
if card_to_lock == game.player.W.name:
game.press_key(key_w)
card_to_lock = None
elif game.player.W.name == 'pickacard' and game.player.W.get_current_cooldown(game.time) == 0.0:
key_to_press = None
if game.was_key_pressed(key_blue):
card_to_lock = "bluecardlock"
key_to_press = key_blue
elif game.was_key_pressed(key_red):
card_to_lock = "redcardlock"
key_to_press = key_red
elif game.was_key_pressed(key_yellow):
card_to_lock = "goldcardlock"
key_to_press = key_yellow
if key_to_press:
game.press_key(key_w)
================================================
FILE: GameplayScripts/util_make_heightmap.py____
================================================
from lview import *
import json, time, os
from pprint import pformat
lview_script_info = {
"script": "Util Make Height Map",
"author": "<author-name>",
"description": "<script-description>"
}
def lview_load_cfg(cfg):
pass
def lview_save_cfg(cfg):
pass
def lview_draw_settings(game, ui):
global enable_draw
if ui.button("Extrapolate"):
extrapolate()
enable_draw = ui.checkbox("Draw map", enable_draw)
enable_draw = False
size = 512
m = [[0 for i in range(size)] for i in range(size)]
file_name = ""
time_last_save = 0
first_iter = True
def get_neighbours(m, i, j):
neighbours = []
if m[i - 1][j - 1] != 0:
neighbours.append(m[i - 1][j - 1])
if m[i - 1][j] != 0:
neighbours.append(m[i - 1][j])
if m[i - 1][j + 1] != 0:
neighbours.append(m[i - 1][j + 1])
if m[i][j - 1] != 0:
neighbours.append(m[i][j - 1])
if m[i][j + 1] != 0:
neighbours.append(m[i][j + 1])
if m[i + 1][j - 1] != 0:
neighbours.append(m[i + 1][j - 1])
if m[i + 1][j] != 0:
neighbours.append(m[i + 1][j])
if m[i + 1][j + 1] != 0:
neighbours.append(m[i + 1][j + 1])
return neighbours
def extrapolate():
global m, size
to_modify = []
for i in range(1, size - 1):
for j in range(1, size - 1):
if m[i][j] != 0:
continue
neighbours = get_neighbours(m, i, j)
if len(neighbours) > 0:
to_modify.append((i, j, sum(neighbours)/len(neighbours)))
print(f'Extrapolated {len(to_modify)} points')
for (i, j, h) in to_modify:
m[i][j] = h
def save(s):
global m
with open(s, 'w') as f:
f.write(json.dumps(m))
def load(s):
global m
if os.path.exists(s):
with open(s, 'r') as f:
m = json.loads(f.read())
def draw(game):
global m, size
c = game.player.pos.clone()
c.scale(size/15000)
window = 50
cx = int(c.x)
cz = int(c.z)
startx = 0 if cx - window < 0 else cx - window
endx = size if cx + window > size else cx + window
startz = 0 if cz - window < 0 else cz - window
endz = size if cz + window > size else cz + window
for i in range(startx, endx):
for j in range(startz, endz):
color = Color(0, 0, 0, 0)
if m[i][j] != 0:
color = Color(0, (m[i][j] + 300)/400, 0, 0.8)
p = Vec3(i/size*15000, 0, j/size*15000)
p2 = Vec3(i/size*15000, 100 + m[i][j], j/size*15000)
#game.draw_line(game.world_to_screen(p), game.world_to_screen(p2), 2, color)
#game.draw_circle_world_filled(p2, 10, 5, color)
game.draw_text(game.world_to_screen(p), f'{m[i][j]:.0f}', Color.GREEN)
last_launched_t = 0
last_moved_t = 0
def lview_update(game, ui):
global m, size, enable_draw, time_last_save, first_iter
global file_name
global last_launched_t, last_moved_t
if first_iter:
first_iter = False
file_name = "HeightMap_" + str(game.map.type) + ".json"
load(file_name)
if game.is_key_down(2):
if time.time() - last_launched_t > 0.01:
game.player.R.trigger()
last_launched_t = time.time()
p = game.player.pos.clone()
p.scale(size/15000)
#game.draw_button(game.world_to_screen(game.player.pos), f'{abs(game.player.pos.y - m[int(p.x)][int(p.z)])}', Color.WHITE, Color.BLACK)
game.draw_button(game.world_to_screen(game.player.pos), f'{abs(game.player.pos.y - game.map.height_at(game.player.pos.x, game.player.pos.z))}', Color.WHITE, Color.BLACK)
'''
for champ in game.champs:
p = champ.pos.clone()
p.scale(size/15000)
if m[int(p.x)][int(p.z)] == 0:
m[int(p.x)][int(p.z)] = champ.pos.y
else:
m[int(p.x)][int(p.z)] = min(champ.pos.y, m[int(p.x)][int(p.z)])
'''
for missile in game.missiles:
if missile.dest_id != 0:
continue
p = missile.pos.clone()
p.scale(size/15000)
px, pz = int(p.x), int(p.z)
if px < size and px > 0 and pz < size and pz > 0:
if m[px][pz] == 0:
m[px][pz] = missile.pos.y - 100
else:
m[px][pz] = min(missile.pos.y - 100, m[px][pz])
if time.time() - time_last_save > 10:
save(file_name)
time_last_save = time.time()
if enable_draw:
draw(game)
================================================
FILE: GameplayScripts/vision_tracker.py
================================================
from lview import *
import json
lview_script_info = {
"script": "Vision Tracker",
"author": "leryss",
"description": "Tracks enemy invisible objects and clones"
}
show_clones, show_wards, show_traps = None, None, None
traps = {
#Name -> (radius, show_radius_circle, show_radius_circle_minimap, icon)
'caitlyntrap' : [50, True, False, "caitlyn_yordlesnaptrap"],
'jhintrap' : [140, True, False, "jhin_e"],
'jinxmine' : [50, True, False, "jinx_e"],
'maokaisproutling' : [50, False, False, "maokai_e"],
'nidaleespear' : [50, True, False, "nidalee_w1"],
'shacobox' : [300, True, False, "jester_deathward"],
'teemomushroom' : [75, True, True, "teemo_r"]
}
wards = {
'bluetrinket' : [900, True, True, "bluetrinket"],
'jammerdevice' : [900, True, True, "pinkward"],
'perkszombieward' : [900, True, True, "bluetrinket"],
'sightward' : [900, True, True, "sightward"],
'visionward' : [900, True, True, "sightward"],
'yellowtrinket' : [900, True, True, "yellowtrinket"],
'yellowtrinketupgrade' : [900, True, True, "yellowtrinket"],
'ward' : [900, True, True, "sightward"],
}
clones = {
'shaco' : [0, False, False, "shaco_square"],
'leblanc' : [0, False, False, "leblanc_square"],
'monkeyking' : [0, False, False, "monkeyking_square"],
'neeko' : [0, False, False, "neeko_square"],
'fiddlesticks' : [0, False, False, "fiddlesticks_square"],
}
def lview_load_cfg(cfg):
global show_clones, show_wards, show_traps, traps, wards
show_clones = cfg.get_bool("show_clones", True)
show_wards = cfg.get_bool("show_wards", True)
show_traps = cfg.get_bool("show_traps", True)
traps = json.loads(cfg.get_str("traps", json.dumps(traps)))
wards = json.loads(cfg.get_str("wards", json.dumps(wards)))
def lview_save_cfg(cfg):
global show_clones, show_wards, show_traps, traps, wards
cfg.set_bool("show_clones", show_clones)
cfg.set_bool("show_wards", show_wards)
cfg.set_bool("show_traps", show_traps)
cfg.set_str("traps", json.dumps(traps))
cfg.set_str("wards", json.dumps(wards))
def lview_draw_settings(game, ui):
global traps, wards
global show_clones, show_wards, show_traps
show_clones = ui.checkbox("Show clones", show_clones)
show_wards = ui.checkbox("Show wards", show_wards)
show_traps = ui.checkbox("Show clones", show_traps)
ui.text("Traps")
for x in traps.keys():
if ui.treenode(x):
traps[x][1] = ui.checkbox("Show range circles", traps[x][1])
traps[x][2] = ui.checkbox("Show on minimap", traps[x][2])
ui.treepop()
ui.text("Wards")
for x in wards.keys():
if ui.treenode(x):
wards[x][1] = ui.checkbox("Show range circles", wards[x][1])
wards[x][2] = ui.checkbox("Show on minimap", wards[x][2])
ui.treepop()
def draw(game, obj, radius, show_circle_world, show_circle_map, icon):
sp = game.world_to_screen(obj.pos)
if game.is_point_on_screen(sp):
duration = obj.duration + obj.last_visible_at - game.time
if duration > 0:
game.draw_text(sp.add(Vec2(5, 30)), f'{duration:.0f}', Color.WHITE)
game.draw_image(icon, sp, sp.add(Vec2(30, 30)), Color.WHITE, 10)
if show_circle_world:
game.draw_circle_world(obj.pos, radius, 30, 3, Color.RED)
if show_circle_map:
p = game.world_to_minimap(obj.pos)
game.draw_circle(game.world_to_minimap(obj.pos), game.distance_to_minimap(radius), 15, 2, Color.RED)
def lview_update(game, ui):
global show_clones, show_wards, show_traps
global traps, wards, clones
for obj in game.others:
if obj.is_ally_to(game.player) or not obj.is_alive:
continue
if show_wards and obj.has_tags(UnitTag.Unit_Ward) and obj.name in wards:
draw(game, obj, *(wards[obj.name]))
elif show_traps and obj.has_tags(UnitTag.Unit_Special_Trap) and obj.name in traps:
draw(game, obj, *(traps[obj.name]))
if show_clones:
for champ in game.champs:
if champ.is_ally_to(game.player) or not champ.is_alive:
continue
if champ.name in clones and champ.R.name == champ.D.name:
draw(game, champ, *(clones[champ.name]))
================================================
FILE: LView/AntiCrack.cpp
================================================
#include "AntiCrack.h"
#include "Windows.h"
#include <array>
#include <unordered_map>
#include <sstream>
std::string exec(const char* cmd) {
std::array<char, 128> buffer;
std::string result;
std::unique_ptr<FILE, decltype(&_pclose)> pipe(_popen(cmd, "r"), _pclose);
if (!pipe) {
throw std::runtime_error("popen() failed!");
}
while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
result += buffer.data();
}
return result;
}
std::string HashHardwareComponents(std::string components) {
std::stringstream in(components);
std::stringstream out;
std::string buff;
std::hash<std::string> hasher;
while (std::getline(in, buff, '\n')) {
size_t hash = hasher(buff);
out << std::hex << hash;
}
return out.str();
}
std::string AntiCrack::GetHardwareID() {
std::string hwComponents = exec(
"wmic PATH Win32_VideoController GET PNPDeviceID | more +1 | findstr /R \"[^\\n]\" &"
"wmic PATH Win32_PhysicalMemory GET SerialNumber | more +1 | findstr /R \"[^\\n]\" &"
"wmic PATH Win32_LogicalDisk GET VolumeSerialNumber | more +1 | findstr /R \"[^\\n]\" &"
"wmic PATH Win32_Processor GET ProcessorId | more +1 | findstr /R \"[^\\n]\" &"
"wmic PATH win32_computersystem GET name | more +1 | findstr /R \"[^\\n]\"");
return HashHardwareComponents(hwComponents);
}
================================================
FILE: LView/AntiCrack.h
================================================
#pragma once
#include <string>
/// Utilities to prevent people from craking the cheat in 1 hour
namespace AntiCrack {
std::string GetHardwareID();
};
================================================
FILE: LView/Benchmark.h
================================================
#pragma once
struct UIBenchmark {
float renderTimeMs;
float processTimeMs;
};
struct ReadBenchmark {
float readObjectsMs;
float readRendererMs;
};
struct ViewBenchmark {
float drawSettingsMs;
float drawPanelMs;
float drawOverlayMs;
};
================================================
FILE: LView/ConfigSet.cpp
================================================
#include "ConfigSet.h"
#include <fstream>
ConfigSet* ConfigSet::instance = nullptr;
void ConfigSet::LoadFromFile() {
std::string line;
size_t delimiterIdx;
std::ifstream file("config.ini");
if (file.is_open()) {
while (std::getline(file, line)) {
delimiterIdx = line.find("=");
if (delimiterIdx == std::string::npos)
throw std::runtime_error(std::string("Config file line does not contain delimiter `=`: ").append(line));
rawValues[line.substr(0, delimiterIdx)] = line.substr(delimiterIdx + 1, line.length());
}
file.close();
}
}
void ConfigSet::SetPrefixKey(std::string prefix) {
prefixKey = prefix;
}
std::string ConfigSet::GetPrefixKey() {
return prefixKey;
}
void ConfigSet::SaveToFile() {
std::ofstream file("config.ini");
if (!file.is_open())
throw std::runtime_error("Couldn't open file to save config set");
for (auto it = rawValues.begin(); it != rawValues.end(); ++it) {
file << it->first << "=" << it->second << "\n";
}
file.close();
}
int ConfigSet::GetInt(const char* key, int defaultVal) {
auto it = rawValues.find(prefixKey + "::" + key);
if (it == rawValues.end())
return defaultVal;
std::string& val = it->second;
if (val.substr(0, 2).compare("0x") == 0)
return std::stoi(val, nullptr, 16);
return std::stoi(val);
}
float ConfigSet::GetFloat(const char* key, float defaultVal) {
auto it = rawValues.find(prefixKey + "::" + key);
if (it == rawValues.end())
return defaultVal;
std::string& val = it->second;
return std::stof(val);
}
bool ConfigSet::GetBool(const char* key, bool defaultVal) {
auto it = rawValues.find(prefixKey + "::" + key);
if (it == rawValues.end())
return defaultVal;
std::string& val = it->second;
return std::stod(val);
}
std::string ConfigSet::GetStr(const char* key, const char* defaultVal) {
auto it = rawValues.find(prefixKey + "::" + key);
if (it == rawValues.end())
return defaultVal;
return it->second;
}
void ConfigSet::SetInt(const char* key, int value) {
rawValues[(prefixKey + "::" + key)] = std::to_string(value);
}
void ConfigSet::SetFloat(const char* key, float value) {
rawValues[(prefixKey + "::" + key)] = std::to_string(value);
}
void ConfigSet::SetBool(const char* key, bool value) {
rawValues[(prefixKey + "::" + key)] = std::to_string(value);
}
void ConfigSet::SetStr(const char* key, const char* value) {
rawValues[(prefixKey + "::" + key)] = value;
}
================================================
FILE: LView/ConfigSet.h
================================================
#pragma once
#include <string>
#include <map>
/// Class used to save and load configs
class ConfigSet {
public:
/// Only made public for C++ to python bindings. Use ConfigSet::Get() to retrieve the singleton instance
ConfigSet() {};
int GetInt(const char* key, int defaultVal);
bool GetBool(const char* key, bool defaultVal);
float GetFloat(const char* key, float defaultVal);
std::string GetStr(const char*, const char* defaultVal);
void SetInt(const char*, int val);
void SetBool(const char*, bool val);
void SetFloat(const char*, float val);
void SetStr(const char*, const char* val);
void LoadFromFile();
void SaveToFile();
/// Sets a prefix to all the keys provided in all the Get/Set calls.
void SetPrefixKey(std::string prefixKey);
std::string GetPrefixKey();
/// Gets singleton instance
static ConfigSet* Get() {
if (instance == nullptr) {
instance = new ConfigSet();
instance->LoadFromFile();
}
return instance;
}
private:
static ConfigSet* instance;
std::string prefixKey;
std::map<std::string, std::string> rawValues;
};
================================================
FILE: LView/GameData.cpp
================================================
#include "GameData.h"
#include <boost/json.hpp>
#include <fstream>
#include <filesystem>
#include "Utils.h"
#include "Overlay.h"
using namespace std;
UnitInfo* GameData::UnknownUnit = new UnitInfo();
SpellInfo* GameData::UnknownSpell = new SpellInfo();
ItemInfo* GameData::UnknownItem = new ItemInfo();
std::map<std::string, UnitInfo*> GameData::Units = {};
std::map<std::string, SpellInfo*> GameData::Spells = {};
std::map<std::string, Texture2D*> GameData::Images = {};
std::map<int, ItemInfo*> GameData::Items = {};
void GameData::Load(std::string& dataFolder)
{
std::string unitData = dataFolder + "/UnitData.json";
std::string spellData = dataFolder + "/SpellData.json";
std::string spellDataCustom = dataFolder + "/SpellDataCustom.json";
std::string itemData = dataFolder + "/ItemData.json";
std::string spellIcons = dataFolder + "/icons_spells";
std::string champIcons = dataFolder + "/icons_champs";
std::string extraIcons = dataFolder + "/icons_extra";
printf("\r Loading item data \n");
LoadItemData(itemData);
printf("\r Loading unit data \n");
LoadUnitData(unitData);
printf("\r Loading spell data \n");
LoadSpellData(spellData);
LoadSpellData(spellDataCustom);
printf("\r Loading images \n");
LoadIcons(spellIcons);
LoadIcons(champIcons);
LoadIcons(extraIcons);
printf("\r Loading complete \n");
}
UnitInfo * GameData::GetUnitInfoByName(std::string& name)
{
auto it = Units.find(name);
if (it != Units.end())
return it->second;
return UnknownUnit;
}
SpellInfo * GameData::GetSpellInfoByName(std::string& name)
{
auto it = Spells.find(name);
if (it != Spells.end())
return it->second;
return UnknownSpell;
}
ItemInfo * GameData::GetItemInfoById(int id)
{
auto it = Items.find(id);
if (it != Items.end())
return it->second;
return UnknownItem;
}
boost::json::value parse_json_file(std::string& path) {
std::ifstream inputData;
inputData.open(path);
if (!inputData.is_open())
throw std::runtime_error("Can't open unit data file");
boost::json::stream_parser p;
boost::json::error_code ec;
do {
char buf[4096];
inputData.read(buf, sizeof(buf));
p.write(buf, inputData.gcount(), ec);
} while (!inputData.eof());
if (ec)
throw std::runtime_error("Failed to parse JSON file");
p.finish(ec);
if (ec)
throw std::runtime_error("Failed to parse JSON file");
boost::json::value jv = p.release();
return jv;
}
double json_to_double(boost::json::value val) {
if (val.is_int64())
return val.as_int64();
else
return val.as_double();
}
void GameData::LoadUnitData(std::string& path)
{
boost::json::value jv = parse_json_file(path);
auto& units = jv.get_array();
for (auto& unit : units) {
auto& unitObj = unit.get_object();
UnitInfo* unit = new UnitInfo();
unit->acquisitionRange = (float)json_to_double(unitObj["acquisitionRange"]);
unit->attackSpeedRatio = (float)json_to_double(unitObj["attackSpeedRatio"]);
unit->baseAttackRange = (float)json_to_double(unitObj["attackRange"]);
unit->baseAttackSpeed = (float)json_to_double(unitObj["attackSpeed"]);
unit->baseMovementSpeed = (float)json_to_double(unitObj["baseMoveSpeed"]);
unit->basicAttackMissileSpeed = (float)json_to_double(unitObj["basicAtkMissileSpeed"]);
unit->basicAttackWindup = (float)json_to_double(unitObj["basicAtkWindup"]);
unit->gameplayRadius = (float)json_to_double(unitObj["gameplayRadius"]);
unit->healthBarHeight = (float)json_to_double(unitObj["healthBarHeight"]);
unit->name = Character::ToLower(std::string(unitObj["name"].as_string().c_str()));
unit->pathRadius = (float)json_to_double(unitObj["pathingRadius"]);
unit->selectionRadius = (float)json_to_double(unitObj["selectionRadius"]);
auto& tags = unitObj["tags"].as_array();
for (auto& tag : tags)
unit->SetTag(tag.as_string().c_str());
Units[unit->name] = unit;
}
}
void GameData::LoadSpellData(std::string& path)
{
boost::json::value jv = parse_json_file(path);
auto& spells = jv.as_array();
for (auto& spell : spells) {
auto& spellObj = spell.as_object();
SpellInfo* info = new SpellInfo();
info->flags = (SpellFlags)spellObj["flags"].as_int64();
info->delay = (float)json_to_double(spellObj["delay"]);
info->height = (float)json_to_double(spellObj["height"]);
info->icon = Character::ToLower(std::string(spellObj["icon"].as_string().c_str()));
info->name = Character::ToLower(std::string(spellObj["name"].as_string().c_str()));
info->width = (float)json_to_double(spellObj["width"]);
info->castRange = (float)json_to_double(spellObj["castRange"]);
info->castRadius = (float)json_to_double(spellObj["castRadius"]);
info->speed = (float)json_to_double(spellObj["speed"]);
info->travelTime = (float)json_to_double(spellObj["travelTime"]);
info->flags = (SpellFlags) (info->flags | (spellObj["projectDestination"].as_bool() ? ProjectedDestination : 0));
Spells[info->name] = info;
}
}
void GameData::LoadIcons(std::string& path)
{
std::string folder(path);
WIN32_FIND_DATAA findData;
HANDLE hFind;
int nrFiles = std::distance(filesystem::directory_iterator(path), filesystem::directory_iterator());
int nrFile = 0;
hFind = FindFirstFileA((folder + "\\*.png").c_str(), &findData);
do {
if (hFind != INVALID_HANDLE_VALUE) {
if(nrFile % 100 == 0)
printf("\r Loading %d/%d ", nrFile, nrFiles);
std::string filePath = folder + "/" + findData.cFileName;
Texture2D* image = Texture2D::LoadFromFile(Overlay::GetDxDevice(), filePath);
if (image == nullptr)
printf("Failed to load: %s\n", filePath.c_str());
else {
std::string fileName(findData.cFileName);
fileName.erase(fileName.find(".png"), 4);
Images[Character::ToLower(fileName)] = image;
}
}
nrFile++;
} while (FindNextFileA(hFind, &findData));
}
void GameData::LoadItemData(std::string & path)
{
boost::json::value jv = parse_json_file(path);
auto& items = jv.as_array();
for (auto& itemObj : items) {
auto& item = itemObj.as_object();
ItemInfo* info = new ItemInfo();
info->movementSpeed = (float)json_to_double(item["movementSpeed"]);
info->health = (float)json_to_double(item["health"]);
info->crit = (float)json_to_double(item["crit"]);
info->abilityPower = (float)json_to_double(item["abilityPower"]);
info->mana = (float)json_to_double(item["mana"]);
info->armour = (float)json_to_double(item["armour"]);
info->magicResist = (float)json_to_double(item["magicResist"]);
info->physicalDamage = (float)json_to_double(item["physicalDamage"]);
info->attackSpeed = (float)json_to_double(item["attackSpeed"]);
info->lifeSteal = (float)json_to_double(item["lifeSteal"]);
info->hpRegen = (float)json_to_double(item["hpRegen"]);
info->movementSpeedPercent = (float)json_to_double(item["movementSpeedPercent"]);
info->cost = (float)json_to_double(item["cost"]);
info->id = item["id"].as_int64();
Items[info->id] = info;
}
}
================================================
FILE: LView/GameData.h
================================================
#pragma once
#include <map>
#include "UnitInfo.h"
#include "SpellInfo.h"
#include "Texture2D.h"
#include "ItemInfo.h"
/// Data that cant be read from memory or it is too inefficient to do so can be accessed with this class.
class GameData {
public:
static void Load(std::string& dataFolder);
static UnitInfo* GetUnitInfoByName(std::string& name);
static SpellInfo* GetSpellInfoByName(std::string& name);
static ItemInfo* GetItemInfoById(int id);
private:
static void LoadUnitData(std::string& path);
static void LoadSpellData(std::string& path);
static void LoadIcons(std::string& path);
static void LoadItemData(std::string& path);
public:
static UnitInfo* UnknownUnit;
static SpellInfo* UnknownSpell;
static ItemInfo* UnknownItem;
static std::map<std::string, UnitInfo*> Units;
static std::map<std::string, SpellInfo*> Spells;
static std::map<std::string, Texture2D*> Images;
static std::map<int, ItemInfo*> Items;
};
================================================
FILE: LView/GameObject.cpp
================================================
#include "GameObject.h"
#include "Utils.h"
#include "Offsets.h"
#include "Spell.h"
#include "GameData.h"
BYTE GameObject::buff[GameObject::sizeBuff] = {};
BYTE GameObject::buffDeep[GameObject::sizeBuffDeep] = {};
bool GameObject::HasUnitTags(const UnitTag& type1) const {
return unitInfo->tags.test(type1);
}
bool GameObject::IsEqualTo(const GameObject& other) const {
return this->objectIndex == other.objectIndex;
}
bool GameObject::IsNotEqualTo(const GameObject& other) const {
return this->objectIndex != other.objectIndex;
}
float GameObject::GetAcquisitionRadius() const
{
return unitInfo->acquisitionRange;
}
float GameObject::GetSelectionRadius() const
{
return unitInfo->selectionRadius;
}
float GameObject::GetPathingRadius() const
{
return unitInfo->pathRadius;
}
float GameObject::GetGameplayRadius() const
{
return unitInfo->gameplayRadius;
}
float GameObject::GetBasicAttackMissileSpeed() const
{
return unitInfo->basicAttackMissileSpeed;
}
float GameObject::GetBasicAttackWindup() const
{
return unitInfo->basicAttackWindup;
}
float GameObject::GetAttackSpeedRatio() const
{
return unitInfo->attackSpeedRatio;
}
float GameObject::GetBaseMovementSpeed() const
{
return unitInfo->baseMovementSpeed;
}
float GameObject::GetBaseAttackSpeed() const
{
return unitInfo->baseAttackSpeed;
}
float GameObject::GetBaseAttackRange() const
{
return unitInfo->baseAttackRange;
}
float GameObject::GetAttackRange() const {
return GetBaseAttackRange() + GetGameplayRadius();
}
float GameObject::GetHpBarHeight() const
{
return unitInfo->healthBarHeight;
}
bool GameObject::IsEnemyTo(const GameObject& other) const {
return this->team != other.team;
}
bool GameObject::IsAllyTo(const GameObject& other) const {
return this->team == other.team;
}
void GameObject::LoadFromMem(DWORD base, HANDLE hProcess, bool deepLoad) {
address = base;
Mem::Read(hProcess, base, buff, sizeBuff);
// Store previous position once N milliseconds to avoid the case when position == previousPosition but the object is moving
std::chrono::duration<float, std::milli> timeDuration = high_resolution_clock::now() - timeSinceLastPreviousPosition;
if (timeDuration.count() > 20) {
previousPosition = position.clone();
timeSinceLastPreviousPosition = high_resolution_clock::now();
}
memcpy(&team, &buff[Offsets::ObjTeam], sizeof(short));
memcpy(&position, &buff[Offsets::ObjPos], sizeof(Vector3));
memcpy(&health, &buff[Offsets::ObjHealth], sizeof(float));
memcpy(&maxHealth, &buff[Offsets::ObjMaxHealth], sizeof(float));
memcpy(&baseAttack, &buff[Offsets::ObjBaseAtk], sizeof(float));
memcpy(&bonusAttack, &buff[Offsets::ObjBonusAtk], sizeof(float));
memcpy(&armour, &buff[Offsets::ObjArmor], sizeof(float));
memcpy(&magicResist, &buff[Offsets::ObjMagicRes], sizeof(float));
memcpy(&duration, &buff[Offsets::ObjExpiry], sizeof(float));
memcpy(&isVisible, &buff[Offsets::ObjVisibility], sizeof(bool));
memcpy(&objectIndex, &buff[Offsets::ObjIndex], sizeof(short));
memcpy(&crit, &buff[Offsets::ObjCrit], sizeof(float));
memcpy(&critMulti, &buff[Offsets::ObjCritMulti], sizeof(float));
memcpy(&abilityPower, &buff[Offsets::ObjAbilityPower], sizeof(float));
memcpy(&atkSpeedMulti, &buff[Offsets::ObjAtkSpeedMulti], sizeof(float));
memcpy(&movementSpeed, &buff[Offsets::ObjMoveSpeed], sizeof(float));
memcpy(&networkId, &buff[Offsets::ObjNetworkID], sizeof(DWORD));
// Check if alive
DWORD spawnCount;
memcpy(&spawnCount, &buff[Offsets::ObjSpawnCount], sizeof(int));
isAlive = (spawnCount % 2 == 0);
if (deepLoad) {
char nameBuff[50];
Mem::Read(hProcess, Mem::ReadDWORDFromBuffer(buff, Offsets::ObjName), nameBuff, 50);
if (Character::ContainsOnlyASCII(nameBuff, 50))
name = Character::ToLower(std::string(nameBuff));
else
name = std::string("");
unitInfo = GameData::GetUnitInfoByName(name);
}
// Read extension of object
if (HasUnitTags(Unit_Champion)) {
LoadChampionFromMem(base, hProcess, deepLoad);
}
else if(unitInfo == GameData::UnknownUnit) {
// Try reading missile extension
LoadMissileFromMem(base, hProcess, deepLoad);
}
}
// Champion stuff
DWORD GameObject::spellSlotPointerBuffer[6] = {};
BYTE GameObject::itemListBuffer[0x100] = {};
void GameObject::LoadChampionFromMem(DWORD base, HANDLE hProcess, bool deepLoad) {
// Read spells
memcpy(&spellSlotPointerBuffer, &buff[Offsets::ObjSpellBook], sizeof(DWORD) * 6);
Q.LoadFromMem(spellSlotPointerBuffer[0], hProcess);
W.LoadFromMem(spellSlotPointerBuffer[1], hProcess);
E.LoadFromMem(spellSlotPointerBuffer[2], hProcess);
R.LoadFromMem(spellSlotPointerBuffer[3], hProcess);
D.LoadFromMem(spellSlotPointerBuffer[4], hProcess);
F.LoadFromMem(spellSlotPointerBuffer[5], hProcess);
// Read items
DWORD ptrList = Mem::ReadDWORD(hProcess, address + Offsets::ObjItemList);
Mem::Read(hProcess, ptrList, itemListBuffer, 0x100);
for (int i = 0; i < 6; ++i) {
itemSlots[i].isEmpty = true;
itemSlots[i].slot = i;
DWORD itemPtr = 0, itemInfoPtr = 0;
memcpy(&itemPtr, itemListBuffer + i * 0x10 + Offsets::ItemListItem, sizeof(DWORD));
if (itemPtr == 0)
continue;
itemInfoPtr = Mem::ReadDWORD(hProcess, itemPtr + Offsets::ItemInfo);
if (itemInfoPtr == 0)
continue;
int id = Mem::ReadDWORD(hProcess, itemInfoPtr + Offsets::ItemInfoId);
itemSlots[i].isEmpty = false;
itemSlots[i].stats = GameData::GetItemInfoById(id);
}
// Read level
level = Mem::ReadDWORD(hProcess, base + Offsets::ObjLvl);
}
float GameObject::GetBasicAttackDamage() {
return baseAttack + bonusAttack;
}
Spell* GameObject::GetSummonerSpell(SummonerSpellType type) {
if (D.summonerSpellType == type)
return &D;
if (F.summonerSpellType == type)
return &F;
return nullptr;
}
bool GameObject::IsRanged() {
return GetBaseAttackRange() >= 300.f;
}
list GameObject::ItemsToPyList() {
list l;
for (int i = 0; i < 6; ++i){
if (!itemSlots[i].isEmpty)
l.append(boost::ref(itemSlots[i]));
}
return l;
}
// Missile stuff
void GameObject::LoadMissileFromMem(DWORD base, HANDLE hProcess, bool deepLoad) {
if (!deepLoad)
return;
DWORD spellInfoPtr = Mem::ReadDWORDFromBuffer(buff, Offsets::MissileSpellInfo);
if (spellInfoPtr == 0)
return;
DWORD spellDataPtr = Mem::ReadDWORD(hProcess, spellInfoPtr + Offsets::SpellInfoSpellData);
if (spellDataPtr == 0)
return;
memcpy(&srcIndex, buff + Offsets::MissileSrcIdx, sizeof(short));
memcpy(&destIndex, buff + Offsets::MissileDestIdx, sizeof(short));
memcpy(&startPos, buff + Offsets::MissileStartPos, sizeof(Vector3));
memcpy(&endPos, buff + Offsets::MissileEndPos, sizeof(Vector3));
Mem::Read(hProcess, spellDataPtr, buff, 0x500);
// Read name
char nameBuff[50];
Mem::Read(hProcess, Mem::ReadDWORD(hProcess, spellDataPtr + Offsets::SpellDataMissileName), nameBuff, 50);
if (Character::ContainsOnlyASCII(nameBuff, 50))
name = Character::ToLower(std::string(nameBuff));
else
name = std::string("");
// Find static data
spellInfo = GameData::GetSpellInfoByName(name);
// Some spells require their end position to be projected using the range of the spell
if (spellInfo != GameData::UnknownSpell && HasSpellFlags(ProjectedDestination)) {
startPos.y += spellInfo->height;
// Calculate direction vector and normalize
endPos = Vector3(endPos.x - startPos.x, 0, endPos.z - startPos.z);
endPos = endPos.normalize();
// Update endposition using the height of the current position
endPos.x = endPos.x*spellInfo->castRange + startPos.x;
endPos.y = startPos.y;
endPos.z = endPos.z*spellInfo->castRange + startPos.z;
}
}
bool GameObject::EqualSpellFlags(SpellFlags flags) const
{
return spellInfo->flags == flags;
}
bool GameObject::HasSpellFlags(SpellFlags flags) const
{
return (spellInfo->flags & flags) == flags;
}
float GameObject::GetSpeed() const
{
return spellInfo->speed;
}
float GameObject::GetCastRange() const
{
return spellInfo->castRange;
}
float GameObject::GetWidth() const
{
return spellInfo->width;
}
float GameObject::GetCastRadius() const
{
return spellInfo->castRadius;
}
float GameObject::GetDelay() const
{
return spellInfo->delay;
}
float GameObject::GetHeight() const
{
return spellInfo->height;
}
float GameObject::GetTravelTime() const
{
return spellInfo->travelTime;
}
std::string GameObject::GetIcon() const
{
return spellInfo->icon;
}
================================================
FILE: LView/GameObject.h
================================================
#pragma once
#include <string>
#include <map>
#include <chrono>
#include "Vector.h"
#include "windows.h"
#include "MemoryLoadable.h"
#include "UnitInfo.h"
#include "GameData.h"
#include "Spell.h"
#include "SpellInterface.h"
#include "ItemSlot.h"
#include <boost/python/suite/indexing/map_indexing_suite.hpp>
#include <boost/python.hpp>
using namespace boost::python;
using namespace std::chrono;
/// Base game object
///
/// Due to how league's game objects are implemented and to achieve good performance reading game objects
/// this class doesnt use inheritance instead it packs all the types together in this class
class GameObject: MemoryLoadable, SpellInterface {
public:
// Base
void LoadFromMem(DWORD base, HANDLE hProcess, bool deepLoad = true);
bool HasUnitTags(const UnitTag& type1) const;
float GetAcquisitionRadius() const;
float GetSelectionRadius() const;
float GetPathingRadius() const;
float GetGameplayRadius() const;
float GetBasicAttackMissileSpeed() const;
float GetBasicAttackWindup() const;
float GetAttackSpeedRatio() const;
float GetBaseMovementSpeed() const;
float GetBaseAttackSpeed() const;
float GetBaseAttackRange() const;
float GetAttackRange() const;
float GetHpBarHeight() const;
bool IsEnemyTo(const GameObject& other) const;
bool IsAllyTo(const GameObject& other) const;
bool IsEqualTo(const GameObject& other) const;
bool IsNotEqualTo(const GameObject& other) const;
public:
float health;
float maxHealth;
float baseAttack;
float bonusAttack;
float armour;
float magicResist;
float crit;
float critMulti;
float abilityPower;
float atkSpeedMulti;
float movementSpeed;
float duration;
short objectIndex;
short team;
bool isVisible;
bool isAlive;
float lastVisibleAt;
std::string name;
Vector3 position;
high_resolution_clock::time_point timeSinceLastPreviousPosition;
Vector3 previousPosition;
DWORD networkId;
DWORD address;
UnitInfo* unitInfo = GameData::UnknownUnit;
protected:
static const SIZE_T sizeBuff = 0x4000;
static const SIZE_T sizeBuffDeep = 0x1000;
static BYTE buff[sizeBuff];
static BYTE buffDeep[sizeBuffDeep];
// Champion related stuff
public:
void LoadChampionFromMem(DWORD base, HANDLE hProcess, bool deepLoad = true);
float GetBasicAttackDamage();
Spell* GetSummonerSpell(SummonerSpellType type);
bool IsRanged();
list ItemsToPyList();
Spell Q = Spell(SpellSlot::Q);
Spell W = Spell(SpellSlot::W);
Spell E = Spell(SpellSlot::E);
Spell R = Spell(SpellSlot::R);
Spell D = Spell(SpellSlot::D);
Spell F = Spell(SpellSlot::F);
DWORD level;
ItemSlot itemSlots[6];
private:
static DWORD spellSlotPointerBuffer[6];
static BYTE itemListBuffer[0x100];
// Spell related stuff
public:
void LoadMissileFromMem(DWORD base, HANDLE hProcess, bool deepLoad = true);
bool HasSpellFlags(SpellFlags flags) const override;
bool EqualSpellFlags(SpellFlags flags) const override;
float GetSpeed() const override;
float GetCastRange() const override;
float GetWidth() const override;
float GetCastRadius() const override;
float GetDelay() const override;
float GetHeight() const override;
float GetTravelTime() const override;
std::string GetIcon() const override;
short srcIndex;
short destIndex;
Vector3 startPos;
Vector3 endPos;
SpellInfo* spellInfo = GameData::UnknownSpell;
};
================================================
FILE: LView/GameRenderer.cpp
================================================
#include "GameRenderer.h"
#include "Offsets.h"
#include "Utils.h"
#include "MapObject.h"
#include <algorithm>
void GameRenderer::LoadFromMem(DWORD_PTR renderBase, DWORD_PTR moduleBase, HANDLE hProcess) {
char buff[128];
Mem::Read(hProcess, renderBase, buff, 128);
memcpy(&width, &buff[Offsets::RendererWidth], sizeof(int));
memcpy(&height, &buff[Offsets::RendererHeight], sizeof(int));
Mem::Read(hProcess, moduleBase + Offsets::ViewProjMatrices, buff, 128);
memcpy(viewMatrix, buff, 16 * sizeof(float));
memcpy(projMatrix, &buff[16 * sizeof(float)], 16 * sizeof(float));
MultiplyMatrices(viewProjMatrix, viewMatrix, 4, 4, projMatrix, 4, 4);
}
/* Multiply two matrices */
void GameRenderer::MultiplyMatrices(float *out, float *a, int row1, int col1, float *b, int row2, int col2) {
int size = row1 * col2;
for (int i = 0; i < row1; i++) {
for (int j = 0; j < col2; j++) {
float sum = 0.f;
for (int k = 0; k < col1; k++)
sum = sum + a[i * col1 + k] * b[k * col2 + j];
out[i * col2 + j] = sum;
}
}
}
Vector2 GameRenderer::WorldToScreen(const Vector3& pos) const {
Vector2 out = { 0.f, 0.f };
Vector2 screen = { (float)width, (float)height };
static Vector4 clipCoords;
clipCoords.x = pos.x * viewProjMatrix[0] + pos.y * viewProjMatrix[4] + pos.z * viewProjMatrix[8] + viewProjMatrix[12];
clipCoords.y = pos.x * viewProjMatrix[1] + pos.y * viewProjMatrix[5] + pos.z * viewProjMatrix[9] + viewProjMatrix[13];
clipCoords.z = pos.x * viewProjMatrix[2] + pos.y * viewProjMatrix[6] + pos.z * viewProjMatrix[10] + viewProjMatrix[14];
clipCoords.w = pos.x * viewProjMatrix[3] + pos.y * viewProjMatrix[7] + pos.z * viewProjMatrix[11] + viewProjMatrix[15];
if (clipCoords.w < 1.0f)
clipCoords.w = 1.f;
Vector3 M;
M.x = clipCoords.x / clipCoords.w;
M.y = clipCoords.y / clipCoords.w;
M.z = clipCoords.z / clipCoords.w;
out.x = (screen.x / 2.f * M.x) + (M.x + screen.x / 2.f);
out.y = -(screen.y / 2.f * M.y) + (M.y + screen.y / 2.f);
return out;
}
Vector2 GameRenderer::WorldToMinimap(const Vector3& pos, const Vector2& wPos, const Vector2& wSize) const {
Vector2 result = { pos.x / 15000.f, pos.z / 15000.f };
result.x = wPos.x + result.x * wSize.x;
result.y = wPos.y + wSize.y - (result.y * wSize.y);
return result;
}
float GameRenderer::DistanceToMinimap(float dist, const Vector2& wSize) const {
// This assumes that the minimap is a square !
return (dist / 15000.f) * wSize.x;
}
bool GameRenderer::IsScreenPointOnScreen(const Vector2& point, float offsetX, float offsetY) const {
return point.x > -offsetX && point.x < (width + offsetX) && point.y > -offsetY && point.y < (height + offsetY);
}
bool GameRenderer::IsWorldPointOnScreen(const Vector3& point, float offsetX, float offsetY) const {
return IsScreenPointOnScreen(WorldToScreen(point), offsetX, offsetY);
}
void GameRenderer::DrawCircleAt(ImDrawList* canvas, const Vector3& worldPos, float radius, bool filled, int numPoints, ImColor color, float thickness) const {
if (numPoints >= 200)
return;
static ImVec2 points[200];
float step = 6.2831f / numPoints;
float theta = 0.f;
for (int i = 0; i < numPoints; i++, theta += step) {
Vector3 worldSpace = { worldPos.x + radius * cos(theta), worldPos.y, worldPos.z - radius * sin(theta) };
Vector2 screenSpace = WorldToScreen(worldSpace);
points[i].x = screenSpace.x;
points[i].y = screenSpace.y;
}
if (filled)
canvas->AddConvexPolyFilled(points, numPoints, color);
else
canvas->AddPolyline(points, numPoints, color, true, thickness);
}
================================================
FILE: LView/GameRenderer.h
================================================
#pragma once
#include "Vector.h"
#include "windows.h"
#include "imgui.h"
/// Represents the state of the games renderer
class GameRenderer {
public:
int width, height;
float viewMatrix[16];
float projMatrix[16];
float viewProjMatrix[16];
void LoadFromMem(DWORD_PTR renderBase, DWORD_PTR moduleBase, HANDLE hProcess);
/// Converts world coordinates to screen coordinates
Vector2 WorldToScreen(const Vector3& pos) const;
/// Converts world coordinates to minimap coordinates
Vector2 WorldToMinimap(const Vector3& pos, const Vector2& wPos, const Vector2& wSize) const;
/// Converts distances in world space to minimap space
float DistanceToMinimap(float dist, const Vector2& wSize) const;
/// Draws a circle at the given coordinate. Coordinates and radius must be in world space
void DrawCircleAt(ImDrawList* canvas, const Vector3& worldPos, float radius, bool filled, int numPoints, ImColor color, float thickness = 3.f) const;
/// Used to determine if a screen space point is on screen
bool IsScreenPointOnScreen(const Vector2& point, float offsetX = 0.f, float offsetY = 0.f) const;
/// Used to determine if a world space point is on screen
bool IsWorldPointOnScreen(const Vector3& point, float offsetX = 0.f, float offsetY = 0.f) const;
private:
void MultiplyMatrices(float *out, float *a, int row1, int col1, float *b, int row2, int col2);
};
================================================
FILE: LView/Input.cpp
================================================
#include "Input.h"
#include "windows.h"
#include <chrono>
#include "Vector.h"
using namespace std::chrono;
void Input::PressKey(HKey key) {
INPUT input;
input.type = INPUT_KEYBOARD;
input.ki.wScan = key;
input.ki.time = 0;
input.ki.dwExtraInfo = 0;
input.ki.wVk = 0;
input.ki.dwFlags = KEYEVENTF_SCANCODE;
SendInput(1, &input, sizeof(INPUT));
Sleep(8);
input.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(1, &input, sizeof(INPUT));
}
bool Input::WasKeyPressed(HKey key) {
static high_resolution_clock::time_point nowTime;
static high_resolution_clock::time_point lastTimePressed[300] = {high_resolution_clock::now()};
static bool pressed[300] = { 0 };
static duration<float, std::milli> timeDiff;
int virtualKey = MapVirtualKeyA(key, MAPVK_VSC_TO_VK);
if (virtualKey == 0)
return false;
nowTime = high_resolution_clock::now();
timeDiff = nowTime - lastTimePressed[virtualKey];
if (pressed[virtualKey]) {
if (timeDiff.count() > 200)
pressed[virtualKey] = false;
return false;
}
bool keyDown = GetAsyncKeyState(virtualKey) & 0x8000;
if (keyDown) {
lastTimePressed[virtualKey] = high_resolution_clock::now();
pressed[virtualKey] = true;
return true;
}
return false;
}
bool Input::IsKeyDown(HKey key) {
int virtualKey = MapVirtualKeyA(key, MAPVK_VSC_TO_VK);
if (virtualKey == 0)
return false;
return GetAsyncKeyState(virtualKey);
}
Vector2 Input::GetCursorPosition()
{
POINT pos;
GetCursorPos(&pos);
return { (float)pos.x, (float)pos.y };
}
void Input::PressLeftClick()
{
INPUT input = {0};
input.type = INPUT_MOUSE;
input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
SendInput(1, &input, sizeof(INPUT));
Sleep(8);
input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, &input, sizeof(INPUT));
}
void Input::PressRightClick()
{
INPUT input = { 0 };
input.type = INPUT_MOUSE;
input.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;
SendInput(1, &input, sizeof(INPUT));
Sleep(8);
input.mi.dwFlags = MOUSEEVENTF_RIGHTUP;
SendInput(1, &input, sizeof(INPUT));
}
void Input::ClickAt(bool leftClick, float x, float y)
{
static float fScreenWidth = (float)::GetSystemMetrics(SM_CXSCREEN) - 1;
static float fScreenHeight = (float)::GetSystemMetrics(SM_CYSCREEN) - 1;
POINT oldPos;
GetCursorPos(&oldPos);
INPUT input = { 0 };
input.type = INPUT_MOUSE;
input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
input.mi.dx = (LONG)(x * (65535.0f / fScreenWidth));
input.mi.dy = (LONG)(y * (65535.0f / fScreenHeight));
SendInput(1, &input, sizeof(INPUT));
input.mi.dwFlags = (leftClick ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_RIGHTDOWN);
SendInput(1, &input, sizeof(INPUT));
Sleep(8);
input.mi.dwFlags = (leftClick ? MOUSEEVENTF_LEFTUP: MOUSEEVENTF_RIGHTUP);
SendInput(1, &input, sizeof(INPUT));
input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
input.mi.dx = (LONG)(oldPos.x * (65535.0f / fScreenWidth));
input.mi.dy = (LONG)(oldPos.y * (65535.0f / fScreenHeight));
SendInput(1, &input, sizeof(INPUT));
SendInput(1, &input, sizeof(INPUT));
}
void Input::MoveCursorTo(float x, float y)
{
static float fScreenWidth = (float)::GetSystemMetrics(SM_CXSCREEN) - 1;
static float fScreenHeight = (float)::GetSystemMetrics(SM_CYSCREEN) - 1;
INPUT input = { 0 };
input.type = INPUT_MOUSE;
input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
input.mi.dx = (LONG)(x * (65535.0f / fScreenWidth));
input.mi.dy = (LONG)(y * (65535.0f / fScreenHeight));
// Sometimes this fails idk why the fuck but calling the function two times seems to solve it
SendInput(1, &input, sizeof(INPUT));
SendInput(1, &input, sizeof(INPUT));
}
================================================
FILE: LView/Input.h
================================================
#pragma once
#include "Vector.h"
/* Took from https://www.millisecond.com/support/docs/v6/html/language/scancodes.htm */
enum HKey {
NO_KEY = 0, ESC, N_1, N_2, N_3, N_4, N_5, N_6, N_7, N_8, N_9, N_0, MINUS, EQUAL, BS, Tab, Q, W, E, R, T, Y, U, I, O, P, LBRACKET, RBRACKET, ENTER, CTRL, A, S, D, F, G,
H, J, K, L, SEMICOLON, SINGLE_QUOTE, TILDE, LSHIFT, BACKSLASH, Z, X, C, V, B, N, M, COMMA, DOT, FRONTSLASH, RSHIFT, PRINT_SCREEN, ALT, SPACE, CAPS, F1, F2,
F3, F4, F5, F6, F7, F8, F9, F10, NUM, SCROLL, HOME, UP, PAGE_UP, NUM_MINUS, LEFT, CENTER, RIGHT, PLUS, END, DOWN, PAGE_DOWN, INSERT, DEL
};
static const char* HKeyNames[] = {
"None", "Esc", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "Backspace", "Tab", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]", "Enter", "Ctrl", "A", "S", "D", "F", "G",
"H", "J", "K", "L", ";", "'", "`", "LShift", "\\", "Z", "X", "C", "V", "B", "N", "M", ",", ".", "/", "RShift", "PrtScrn", "Alt", "Space", "Caps", "F1", "F2",
"F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "Num", "Scrl", "Home", "Num8", "PgUp", "NumMinus", "Num4", "Num5", "Num6", "NumPlus", "End", "NumDown", "PgDown", "Insert", "Del"
};
/// Keyboard/Mouse input related utilities. For keyboards the hardware key codes are used instead of the virtual ones.
namespace Input {
/// Presses the specified hardware key
void PressKey(HKey key);
/// Checks if a key was pressed recently. Only one caller can use this function for a given key.
bool WasKeyPressed(HKey key);
/// Checks if the key is held down.
bool IsKeyDown(HKey key);
/// Gets the cursor position in window coordinates
Vector2 GetCursorPosition();
/// Sends a left click input
void PressLeftClick();
/// Sends a right click input
void PressRightClick();
/// Moves the cursor at the specified location, clicks and then moves the cursor back at the initial location
void ClickAt(bool leftClick, float x, float y);
/// Moves the cursor to the specified window coordinates.
void MoveCursorTo(float x, float y);
}
================================================
FILE: LView/ItemInfo.h
================================================
#pragma once
#include <map>
struct ItemInfo {
public:
int id;
float cost;
float movementSpeed;
float health;
float crit;
float abilityPower;
float mana;
float armour;
float magicResist;
float physicalDamage;
float attackSpeed;
float lifeSteal;
float hpRegen;
float movementSpeedPercent;
};
================================================
FILE: LView/ItemSlot.cpp
================================================
#include "ItemSlot.h"
int ItemSlot::GetId()
{
return stats->id;
}
float ItemSlot::GetCost()
{
return stats->cost;
}
float ItemSlot::GetMovementSpeed()
{
return stats->movementSpeed;
}
float ItemSlot::GetHealth()
{
return stats->health;
}
float ItemSlot::GetCrit()
{
return stats->crit;
}
float ItemSlot::GetAbilityPower()
{
return stats->abilityPower;
}
float ItemSlot::GetMana()
{
return stats->mana;
}
float ItemSlot::GetArmour()
{
return stats->armour;
}
float ItemSlot::GetMagicResist()
{
return stats->magicResist;
}
float ItemSlot::GetPhysicalDamage()
{
return stats->physicalDamage;
}
float ItemSlot::GetAttackSpeed()
{
return stats->attackSpeed;
}
float ItemSlot::GetLifeSteal()
{
return stats->lifeSteal;
}
float ItemSlot::GetHpRegen()
{
return stats->hpRegen;
}
float ItemSlot::GetMovementSpeedPercent()
{
return stats->movementSpeed;
}
================================================
FILE: LView/ItemSlot.h
================================================
#pragma once
#include "ItemInfo.h"
class ItemSlot {
public:
int GetId();
float GetCost();
float GetMovementSpeed();
float GetHealth();
float GetCrit();
float GetAbilityPower();
float GetMana();
float GetArmour();
float GetMagicResist();
float GetPhysicalDamage();
float GetAttackSpeed();
float GetLifeSteal();
float GetHpRegen();
float GetMovementSpeedPercent();
public:
bool isEmpty = true;
int slot = 0;
ItemInfo* stats = nullptr;
};
================================================
FILE: LView/LView.cpp
================================================
#define BOOST_DEBUG_PYTHON
#define USE_IMPORT_EXPORT
#define USE_WINDOWS_DLL_SEMANTICS
#define STB_IMAGE_IMPLEMENTATION
#include "PyStructs.h"
#include <iostream>
#include "windows.h"
#include "Utils.h"
#include "Structs.h"
#include "LeagueMemoryReader.h"
#include "Offsets.h"
#include "AntiCrack.h"
#include "MapObject.h"
#include "GameData.h"
#include <chrono>
#include "Overlay.h"
#include <map>
#include <list>
#include <conio.h>
using namespace std::chrono;
/* bool Authenticate(); */
void MainLoop(Overlay& overlay, LeagueMemoryReader& reader);
int main()
{
printf(
" ::: ::: ::: ::::::::::: :::::::::: ::: ::: \n"
" :+: :+: :+: :+: :+: :+: :+: \n"
" +:+ +:+ +:+ +:+ +:+ +:+ +:+ \n"
" +#+ +#+ +:+ +#+ +#++:++# +#+ +:+ +#+ \n"
" +#+ +#+ +#+ +#+ +#+ +#+ +#+#+ +#+ \n"
" #+# #+#+#+# #+# #+# #+#+# #+#+# \n"
" ########## ### ########### ########## ### ### \n\n"
);
Overlay overlay = Overlay();
LeagueMemoryReader reader = LeagueMemoryReader();
try {
printf("[+] Initializing PyModule\n");
PyImport_AppendInittab("lview", &PyInit_lview);
Py_Initialize();
printf("[+] Initialising imgui and directx UI\n");
overlay.Init();
printf("[+] Loading static map data\n\n");
MapObject::Get(MapType::SUMMONERS_RIFT)->Load("data/height_map_sru.bin");
MapObject::Get(MapType::HOWLING_ABYSS)->Load("data/height_map_ha.bin");
printf("[+] Loading unit data\n");
std::string dataPath("data");
GameData::Load(dataPath);
MainLoop(overlay, reader);
Py_Finalize();
}
catch (std::runtime_error exception) {
std::cout << exception.what() << std::endl;
}
printf("Press any key to exit...");
getch();
}
void MainLoop(Overlay& overlay, LeagueMemoryReader& reader) {
MemSnapshot memSnapshot;
bool rehook = true;
bool firstIter = true;
printf("[i] Waiting for league process...\n");
while (true) {
bool isLeagueWindowActive = reader.IsLeagueWindowActive();
if (overlay.IsVisible()) {
// One some systems the ingame cursor is replaced with the default Windows cursor
// With the WS_EX_TRANSPARENT window flag enabled the cursor is as expected but the user cannot control the overlay
if (Input::WasKeyPressed(HKey::F8)) {
overlay.ToggleTransparent();
}
if (!isLeagueWindowActive) {
overlay.Hide();
}
}
else if (isLeagueWindowActive) {
overlay.Show();
}
try {
overlay.StartFrame();
// Try to find the league process and get its information necessary for reading
if (rehook) {
reader.HookToProcess();
rehook = false;
firstIter = true;
memSnapshot = MemSnapshot();
printf("[i] Found league process. The UI will appear when the game stars.\n");
}
else {
if (!reader.IsHookedToProcess()) {
rehook = true;
printf("[i] League process is dead.\n");
printf("[i] Waiting for league process...\n");
}
reader.MakeSnapshot(memSnapshot);
// If the game started
if (memSnapshot.gameTime > 2.f) {
// Tell the UI that a new game has started
if (firstIter) {
overlay.GameStart(memSnapshot);
firstIter = false;
}
overlay.Update(memSnapshot);
}
}
}
catch (WinApiException exception) {
// This should trigger only when we don't find the league process.
rehook = true;
}
catch (std::runtime_error exception) {
printf("[!] Unexpected error occured: \n [!] %s \n", exception.what());
break;
}
overlay.RenderFrame();
}
}
/*
#include <aws/core/Aws.h>
#include <aws/lambda/LambdaClient.h>
#include <aws/lambda/model/InvokeRequest.h>
#include <aws/core/auth/AWSCredentials.h>
#include <aws/core/client/ClientConfiguration.h>
/// Authentication using AWS. Calls a lambda from AWS that will do the authentication.
bool Authenticate() {
Aws::SDKOptions options;
Aws::InitAPI(options);
ConfigSet* cfg = ConfigSet::Get();
cfg->SetPrefixKey("auth");
std::string name = cfg->GetStr("user", "");
std::string region = cfg->GetStr("region", "");
std::string accessKey = cfg->GetStr("access_key", "");
std::string secretKey = cfg->GetStr("secret_key", "");
cfg->SetPrefixKey("");
if (region.empty() || name.empty() || accessKey.empty() || secretKey.empty()) {
printf("[!] auth:: config fields are missing");
return false;
}
Aws::Auth::AWSCredentials credentials;
credentials.SetAWSAccessKeyId(accessKey.c_str());
credentials.SetAWSSecretKey(secretKey.c_str());
Aws::Client::ClientConfiguration config;
config.region = Aws::String(region.c_str());
std::string hwid = AntiCrack::GetHardwareID();
std::shared_ptr<Aws::IOStream> payload = Aws::MakeShared<Aws::StringStream>("FunctionTest");
Aws::Utils::Json::JsonValue json;
json.WithString("operation", "auth");
json.WithString("name", name.c_str());
json.WithString("secret_key", secretKey.c_str());
json.WithString("access_key", accessKey.c_str());
json.WithString("hwid", hwid.c_str());
*payload << json.View().WriteReadable();
auto client = Aws::MakeShared<Aws::Lambda::LambdaClient>("alloc_tag", credentials, config);
Aws::Lambda::Model::InvokeRequest invokeRequest;
invokeRequest.SetFunctionName("lview-auth");
invokeRequest.SetInvocationType(Aws::Lambda::Model::InvocationType::RequestResponse);
invokeRequest.SetLogType(Aws::Lambda::Model::LogType::Tail);
invokeRequest.SetBody(payload);
invokeRequest.SetContentType("application/javascript");
auto outcome = client->Invoke(invokeRequest);
if (!outcome.IsSuccess()) {
printf("[!] Access denied.\n");
auto err = outcome.GetError();
printf(err.GetExceptionName().c_str());
return false;
}
auto& result = outcome.GetResult();
Aws::Utils::Json::JsonValue resultJson(result.GetPayload());
int statusCode = resultJson.View().GetInteger("status");
Aws::String msg = resultJson.View().GetString("msg");
if (statusCode != 200) {
printf("[!] Server authentication failed: %s\n", msg.c_str());
return false;
}
printf("[+] Server authentication succeeded: %s\n", msg.c_str());
return true;
}
*/
================================================
FILE: LView/LView.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{B1847FC4-24EC-448C-8478-1AF955EF2C28}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>LView</RootNamespace>
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<TargetName>ConsoleApplication</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<TargetName>ConsoleApplication</TargetName>
<ExecutablePath>$(VC_ExecutablePath_x86);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH);</ExecutablePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)\LView\boost;$(SolutionDir)\LView\external_includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)\LView\external_libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>python39.lib;d3d11.lib;dxgi.lib;dcomp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>F:\Github\LViewLoL\LView\external_includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>F:\Github\LViewLoL\LView\external_libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>python39_d.lib;python39.lib;d3d9.lib;d3dx9.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)\LView\boost;$(SolutionDir)\LView\external_includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)\LView\external_libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>python39.lib;d3d11.lib;dxgi.lib;dcomp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>F:\Github\LViewLoL\LView\external_includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>F:\Github\LViewLoL\LView\external_libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>python39_d.lib;python39.lib;d3d9.lib;d3dx9.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="AntiCrack.cpp" />
<ClCompile Include="ConfigSet.cpp" />
<ClCompile Include="GameData.cpp" />
<ClCompile Include="GameObject.cpp" />
<ClCompile Include="imgui.cpp" />
<ClCompile Include="imgui_demo.cpp" />
<ClCompile Include="imgui_draw.cpp" />
<ClCompile Include="imgui_impl_dx11.cpp" />
<ClCompile Include="imgui_impl_win32.cpp" />
<ClCompile Include="imgui_tables.cpp" />
<ClCompile Include="imgui_widgets.cpp" />
<ClCompile Include="Input.cpp" />
<ClCompile Include="ItemSlot.cpp" />
<ClCompile Include="LeagueMemoryReader.cpp" />
<ClCompile Include="LView.cpp" />
<ClCompile Include="MapObject.cpp" />
<ClCompile Include="Offsets.cpp" />
<ClCompile Include="GameRenderer.cpp" />
<ClCompile Include="Script.cpp" />
<ClCompile Include="ScriptManager.cpp" />
<ClCompile Include="Spell.cpp" />
<ClCompile Include="Overlay.cpp" />
<ClCompile Include="SpellInfo.cpp" />
<ClCompile Include="SpellInterface.h" />
<ClCompile Include="Texture2D.cpp" />
<ClCompile Include="UnitInfo.cpp" />
<ClCompile Include="Utils.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="AntiCrack.h" />
<ClInclude Include="Benchmark.h" />
<ClInclude Include="ConfigSet.h" />
<ClInclude Include="GameData.h" />
<ClInclude Include="GameObject.h" />
<ClInclude Include="ItemSlot.h" />
<ClInclude Include="Offsets.h" />
<ClInclude Include="Texture2D.h" />
<ClInclude Include="imgui_impl_dx11.h" />
<ClInclude Include="ItemInfo.h" />
<ClInclude Include="MapObject.h" />
<ClInclude Include="PyGame.h" />
<ClInclude Include="imconfig.h" />
<ClInclude Include="imgui.h" />
<ClInclude Include="imgui_impl_win32.h" />
<ClInclude Include="imgui_internal.h" />
<ClInclude Include="imstb_rectpack.h" />
<ClInclude Include="imstb_textedit.h" />
<ClInclude Include="imstb_truetype.h" />
<ClInclude Include="Input.h" />
<ClInclude Include="LeagueMemoryReader.h" />
<ClInclude Include="MemoryLoadable.h" />
<ClInclude Include="MemSnapshot.h" />
<ClInclude Include="PyImguiInterface.h" />
<ClInclude Include="PyStructs.h" />
<ClInclude Include="GameRenderer.h" />
<ClInclude Include="Script.h" />
<ClInclude Include="ScriptManager.h" />
<ClInclude Include="Spell.h" />
<ClInclude Include="Overlay.h" />
<ClInclude Include="SpellInfo.h" />
<ClInclude Include="stb_image.h" />
<ClInclude Include="UnitInfo.h" />
<ClInclude Include="Utils.h" />
<ClInclude Include="Vector.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
================================================
FILE: LView/LView.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Source Files\GUI">
<UniqueIdentifier>{32136a6d-8cd7-4799-985c-41045dbdfc59}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Structs">
<UniqueIdentifier>{c41e4a3e-5831-4f46-b805-716fdeccd807}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Utils">
<UniqueIdentifier>{896ec100-64c0-4b57-aba6-5b62f361dff3}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Structs\GameRelated">
<UniqueIdentifier>{3f16e38a-ff17-45e9-9c82-26e29044bd89}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Python">
<UniqueIdentifier>{277024ac-8f44-404e-aec4-a058949713dd}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Core">
<UniqueIdentifier>{d28b0c84-0437-4186-bf25-e02b6db8c8c7}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Structs\GameRelated\Spells">
<UniqueIdentifier>{a2f140b9-3045-40da-be66-60eabf10af5d}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Structs\GameRelated\Units">
<UniqueIdentifier>{f24696f8-27e0-4883-9478-56065f8048e4}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Structs\GameRelated\Data">
<UniqueIdentifier>{0ffb7377-39cd-40f3-8539-0eba6297aefe}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Structs\GameRelated\Others">
<UniqueIdentifier>{c139ef89-3486-4f32-bff6-8e82d5fe5a24}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\External">
<UniqueIdentifier>{7ab4a644-702d-449c-b876-0ddde6ddd978}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\External\imgui">
<UniqueIdentifier>{462e78dd-f859-45e0-8411-dd4643618c9a}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\External\stb_image">
<UniqueIdentifier>{890199b9-57ab-45fd-bd47-9b8cd568f133}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="imgui.cpp">
<Filter>Source Files\External\imgui</Filter>
</ClCompile>
<ClCompile Include="imgui_demo.cpp">
<Filter>Source Files\External\imgui</Filter>
</ClCompile>
<ClCompile Include="imgui_draw.cpp">
<Filter>Source Files\External\imgui</Filter>
</ClCompile>
<ClCompile Include="imgui_tables.cpp">
<Filter>Source Files\External\imgui</Filter>
</ClCompile>
<ClCompile Include="imgui_widgets.cpp">
<Filter>Source Files\External\imgui</Filter>
</ClCompile>
<ClCompile Include="imgui_impl_win32.cpp">
<Filter>Source Files\External\imgui</Filter>
</ClCompile>
<ClCompile Include="Utils.cpp">
<Filter>Source Files\Utils</Filter>
</ClCompile>
<ClCompile Include="ConfigSet.cpp">
<Filter>Source Files\Utils</Filter>
</ClCompile>
<ClCompile Include="Input.cpp">
<Filter>Source Files\Utils</Filter>
</ClCompile>
<ClCompile Include="ScriptManager.cpp">
<Filter>Source Files\Python</Filter>
</ClCompile>
<ClCompile Include="AntiCrack.cpp">
<Filter>Source Files\Utils</Filter>
</ClCompile>
<ClCompile Include="LeagueMemoryReader.cpp">
<Filter>Source Files\Core</Filter>
</ClCompile>
<ClCompile Include="LView.cpp">
<Filter>Source Files\Core</Filter>
</ClCompile>
<ClCompile Include="Offsets.cpp">
<Filter>Source Files\Core</Filter>
</ClCompile>
<ClCompile Include="imgui_impl_dx11.cpp">
<Filter>Source Files\External\imgui</Filter>
</ClCompile>
<ClCompile Include="Overlay.cpp">
<Filter>Source Files\GUI</Filter>
</ClCompile>
<ClCompile Include="Spell.cpp">
<Filter>Source Files\Structs\GameRelated\Spells</Filter>
</ClCompile>
<ClCompile Include="GameObject.cpp">
<Filter>Source Files\Structs\GameRelated\Units</Filter>
</ClCompile>
<ClCompile Include="Script.cpp">
<Filter>Source Files\Python</Filter>
</ClCompile>
<ClCompile Include="GameData.cpp">
<Filter>Source Files\Structs\GameRelated\Data</Filter>
</ClCompile>
<ClCompile Include="SpellInfo.cpp">
<Filter>Source Files\Structs\GameRelated\Spells</Filter>
</ClCompile>
<ClCompile Include="SpellInterface.h">
<Filter>Source Files\Structs\GameRelated\Spells</Filter>
</ClCompile>
<ClCompile Include="UnitInfo.cpp">
<Filter>Source Files\Structs\GameRelated\Units</Filter>
</ClCompile>
<ClCompile Include="MapObject.cpp">
<Filter>Source Files\Structs\GameRelated\Data</Filter>
</ClCompile>
<ClCompile Include="GameRenderer.cpp">
<Filter>Source Files\Structs\GameRelated\Others</Filter>
</ClCompile>
<ClCompile Include="Texture2D.cpp">
<Filter>Source Files\Utils</Filter>
</ClCompile>
<ClCompile Include="ItemSlot.cpp">
<Filter>Source Files\Structs\GameRelated\Others</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="imgui.h">
<Filter>Source Files\External\imgui</Filter>
</ClInclude>
<ClInclude Include="imgui_internal.h">
<Filter>Source Files\External\imgui</Filter>
</ClInclude>
<ClInclude Include="imstb_rectpack.h">
<Filter>Source Files\External\imgui</Filter>
</ClInclude>
<ClInclude Include="imstb_textedit.h">
<Filter>Source Files\External\imgui</Filter>
</ClInclude>
<ClInclude Include="imstb_truetype.h">
<Filter>Source Files\External\imgui</Filter>
</ClInclude>
<ClInclude Include="imgui_impl_win32.h">
<Filter>Source Files\External\imgui</Filter>
</ClInclude>
<ClInclude Include="imconfig.h">
<Filter>Source Files\External\imgui</Filter>
</ClInclude>
<ClInclude Include="Utils.h">
<Filter>Source Files\Utils</Filter>
</ClInclude>
<ClInclude Include="ConfigSet.h">
<Filter>Source Files\Utils</Filter>
</ClInclude>
<ClInclude Include="Input.h">
<Filter>Source Files\Utils</Filter>
</ClInclude>
<ClInclude Include="MemSnapshot.h">
<Filter>Source Files\Utils</Filter>
</ClInclude>
<ClInclude Include="PyStructs.h">
<Filter>Source Files\Python</Filter>
</ClInclude>
<ClInclude Include="PyImguiInterface.h">
<Filter>Source Files\Python</Filter>
</ClInclude>
<ClInclude Include="PyGame.h">
<Filter>Source Files\Python</Filter>
</ClInclude>
<ClInclude Include="ScriptManager.h">
<Filter>Source Files\Python</Filter>
</ClInclude>
<ClInclude Include="Script.h">
<Filter>Source Files\Python</Filter>
</ClInclude>
<ClInclude Include="AntiCrack.h">
<Filter>Source Files\Utils</Filter>
</ClInclude>
<ClInclude Include="LeagueMemoryReader.h">
<Filter>Source Files\Core</Filter>
</ClInclude>
<ClInclude Include="imgui_impl_dx11.h">
<Filter>Source Files\External\imgui</Filter>
</ClInclude>
<ClInclude Include="Overlay.h">
<Filter>Source Files\GUI</Filter>
</ClInclude>
<ClInclude Include="Spell.h">
<Filter>Source Files\Structs\GameRelated\Spells</Filter>
</ClInclude>
<ClInclude Include="GameObject.h">
<Filter>Source Files\Structs\GameRelated\Units</Filter>
</ClInclude>
<ClInclude Include="Vector.h">
<Filter>Source Files\Utils</Filter>
</ClInclude>
<ClInclude Include="Benchmark.h">
<Filter>Source Files\Utils</Filter>
</ClInclude>
<ClInclude Include="GameData.h">
<Filter>Source Files\Structs\GameRelated\Data</Filter>
</ClInclude>
<ClInclude Include="SpellInfo.h">
<Filter>Source Files\Structs\GameRelated\Spells</Filter>
</ClInclude>
<ClInclude Include="UnitInfo.h">
<Filter>Source Files\Structs\GameRelated\Units</Filter>
</ClInclude>
<ClInclude Include="MapObject.h">
<Filter>Source Files\Structs\GameRelated\Data</Filter>
</ClInclude>
<ClInclude Include="MemoryLoadable.h">
<Filter>Source Files\Structs\GameRelated\Others</Filter>
</ClInclude>
<ClInclude Include="GameRenderer.h">
<Filter>Source Files\Structs\GameRelated\Others</Filter>
</ClInclude>
<ClInclude Include="stb_image.h">
<Filter>Source Files\External\stb_image</Filter>
</ClInclude>
<ClInclude Include="Texture2D.h">
<Filter>Source Files\Utils</Filter>
</ClInclude>
<ClInclude Include="ItemInfo.h">
<Filter>Source Files\Structs\GameRelated\Others</Filter>
</ClInclude>
<ClInclude Include="ItemSlot.h">
<Filter>Source Files\Structs\GameRelated\Others</Filter>
</ClInclude>
<ClInclude Include="Offsets.h">
<Filter>Source Files\Core</Filter>
</ClInclude>
</ItemGroup>
</Project>
================================================
FILE: LView/LView.vcxproj.user
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
================================================
FILE: LView/LeagueMemoryReader.cpp
================================================
#include "LeagueMemoryReader.h"
#include "windows.h"
#include "Utils.h"
#include "Structs.h"
#include "psapi.h"
#include <limits>
#include <stdexcept>
LeagueMemoryReader::LeagueMemoryReader()
{
// Some trash object not worth reading
blacklistedObjectNames.insert("testcube");
blacklistedObjectNames.insert("testcuberender");
blacklistedObjectNames.insert("testcuberender10vision");
blacklistedObjectNames.insert("s5test_wardcorpse");
blacklistedObjectNames.insert("sru_camprespawnmarker");
blacklistedObjectNames.insert("sru_plantrespawnmarker");
blacklistedObjectNames.insert("preseason_turret_shield");
}
bool LeagueMemoryReader::IsLeagueWindowActive() {
HWND handle = GetForegroundWindow();
DWORD h;
GetWindowThreadProcessId(handle, &h);
return pid == h;
}
bool LeagueMemoryReader::IsHookedToProcess() {
return Process::IsProcessRunning(pid);
}
void LeagueMemoryReader::HookToProcess() {
// Find the window
hWindow = FindWindowA("RiotWindowClass", NULL);
if (hWindow == NULL) {
throw WinApiException("League window not found");
}
// Get the process ID
GetWindowThreadProcessId(hWindow, &pid);
if (pid == NULL) {
throw WinApiException("Couldn't retrieve league process id");
}
// Open the process
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (hProcess == NULL) {
throw WinApiException("Couldn't open league process");
}
// Check architecture
if (0 == IsWow64Process(hProcess, &is64Bit)) {
throw WinApiException("Failed to identify if process has 32 or 64 bit architecture");
}
HMODULE hMods[1024];
DWORD cbNeeded;
if (EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded)) {
moduleBaseAddr = (DWORD_PTR)hMods[0];
}
else {
throw WinApiException("Couldn't retrieve league base address");
}
blacklistedObjects.clear();
}
void LeagueMemoryReader::ReadRenderer(MemSnapshot& ms) {
high_resolution_clock::time_point readTimeBegin;
duration<float, std::milli> readDuration;
readTimeBegin = high_resolution_clock::now();
DWORD rendererAddr = Mem::ReadDWORD(hProcess, moduleBaseAddr + Offsets::Renderer);
ms.renderer->LoadFromMem(rendererAddr, moduleBaseAddr, hProcess);
readDuration = high_resolution_clock::now() - readTimeBegin;
ms.benchmark->readRendererMs = readDuration.count();
}
void LeagueMemoryReader::FindHoveredObject(MemSnapshot& ms) {
int addrObj = Mem::ReadDWORD(hProcess, moduleBaseAddr + Offsets::UnderMouseObject);
int netId = Mem::ReadDWORD(hProcess, addrObj + Offsets::ObjNetworkID);
auto it = ms.objectMap.find(netId);
if (it != ms.objectMap.end())
ms.hoveredObject = it->second;
else
ms.hoveredObject = nullptr;
}
/// This method reads the game objects from memory. It reads the tree structure of a std::map<int, GameObject*>
/// in this std::map reside Champions, Minions, Turrets, Missiles, Jungle mobs etc. Basically non static objects.
void LeagueMemoryReader::ReadObjects(MemSnapshot& ms) {
static const int maxObjects = 500;
static int pointerArray[maxObjects];
high_resolution_clock::time_point readTimeBegin;
duration<float, std::milli> readDuration;
readTimeBegin = high_resolution_clock::now();
ms.champions.clear();
ms.minions.clear();
ms.jungle.clear();
ms.missiles.clear();
ms.turrets.clear();
ms.others.clear();
int objectManager = Mem::ReadDWORD(hProcess, moduleBaseAddr + Offsets::ObjectManager);
static char buff[0x500];
Mem::Read(hProcess, objectManager, buff, 0x100);
int numMissiles, rootNode;
memcpy(&numMissiles, buff + Offsets::ObjectMapCount, sizeof(int));
memcpy(&rootNode, buff + Offsets::ObjectMapRoot, sizeof(int));
std::queue<int> nodesToVisit;
std::set<int> visitedNodes;
nodesToVisit.push(rootNode);
// Read object pointers from tree
int nrObj = 0;
int reads = 0;
int childNode1, childNode2, childNode3, node;
while (reads < maxObjects && nodesToVisit.size() > 0) {
node = nodesToVisit.front();
nodesToVisit.pop();
if (visitedNodes.find(node) != visitedNodes.end())
continue;
reads++;
visitedNodes.insert(node);
Mem::Read(hProcess, node, buff, 0x30);
memcpy(&childNode1, buff, sizeof(int));
memcpy(&childNode2, buff + 4, sizeof(int));
memcpy(&childNode3, buff + 8, sizeof(int));
nodesToVisit.push(childNode1);
nodesToVisit.push(childNode2);
nodesToVisit.push(childNode3);
unsigned int netId = 0;
memcpy(&netId, buff + Offsets::ObjectMapNodeNetId, sizeof(int));
// Network ids of the objects we are interested in start from 0x40000000. We do this check for performance reasons.
if (netId - (unsigned int)0x40000000 > 0x100000)
continue;
int addr;
memcpy(&addr, buff + Offsets::ObjectMapNodeObject, sizeof(int));
if (addr == 0)
continue;
pointerArray[nrObj] = addr;
nrObj++;
}
// Read objects from the pointers we just read
for (int i = 0; i < nrObj; ++i) {
int netId;
Mem::Read(hProcess, pointerArray[i] + Offsets::ObjNetworkID, &netId, sizeof(int));
if (blacklistedObjects.find(netId) != blacklistedObjects.end())
continue;
std::shared_ptr<GameObject> obj;
auto it = ms.objectMap.find(netId);
if (it == ms.objectMap.end()) {
obj = std::shared_ptr<GameObject>(new GameObject());
obj->LoadFromMem(pointerArray[i], hProcess, true);
ms.objectMap[obj->networkId] = obj;
}
else {
obj = it->second;
obj->LoadFromMem(pointerArray[i], hProcess, false);
// If the object changed its id for whatever the fuck reason then we update the map with the new index
if (netId != obj->networkId) {
ms.objectMap[obj->networkId] = obj;
}
}
if (obj->isVisible) {
obj->lastVisibleAt = ms.gameTime;
}
if (obj->networkId != 0) {
ms.indexToNetId[obj->objectIndex] = obj->networkId;
ms.updatedThisFrame.insert(obj->networkId);
if (obj->name.size() <= 2 || blacklistedObjectNames.find(obj->name) != blacklistedObjectNames.end())
blacklistedObjects.insert(obj->networkId);
else if (obj->HasUnitTags(Unit_Champion))
ms.champions.push_back(obj);
else if (obj->HasUnitTags(Unit_Minion_Lane))
ms.minions.push_back(obj);
else if (obj->HasUnitTags(Unit_Monster))
ms.jungle.push_back(obj);
else if (obj->HasUnitTags(Unit_Structure_Turret))
ms.turrets.push_back(obj);
else if (obj->spellInfo != GameData::UnknownSpell)
ms.missiles.push_back(obj);
else
ms.others.push_back(obj);
}
}
readDuration = high_resolution_clock::now() - readTimeBegin;
ms.benchmark->readObjectsMs = readDuration.count();
}
void LeagueMemoryReader::ReadMinimap(MemSnapshot & snapshot) {
int minimapObj = Mem::ReadDWORD(hProcess, moduleBaseAddr + Offsets::MinimapObject);
int minimapHud = Mem::ReadDWORD(hProcess, minimapObj + Offsets::MinimapObjectHud);
static char buff[0x80];
Mem::Read(hProcess, minimapHud, buff, 0x80);
memcpy(&snapshot.minimapPos, buff + Offsets::MinimapHudPos, sizeof(Vector2));
memcpy(&snapshot.minimapSize, buff + Offsets::MinimapHudSize, sizeof(Vector2));
}
void LeagueMemoryReader::FindPlayerChampion(MemSnapshot & snapshot) {
int netId = 0;
Mem::Read(hProcess, Mem::ReadDWORD(hProcess, moduleBaseAddr + Offsets::LocalPlayer) + Offsets::ObjNetworkID, &netId, sizeof(int));
auto it = snapshot.objectMap.find(netId);
if (it != snapshot.objectMap.end())
snapshot.player = it->second;
else // If we can't find the local player either the offset is wrong or we are watching a replay
snapshot.player = (snapshot.champions.size() > 0 ? snapshot.champions[0] : nullptr);
}
void LeagueMemoryReader::ClearMissingObjects(MemSnapshot & ms) {
auto it = ms.objectMap.begin();
while (it != ms.objectMap.end()) {
if (ms.updatedThisFrame.find(it->first) == ms.updatedThisFrame.end()) {
it = ms.objectMap.erase(it);
}
else
++it;
}
}
void LeagueMemoryReader::MakeSnapshot(MemSnapshot& ms) {
Mem::Read(hProcess, moduleBaseAddr + Offsets::GameTime, &ms.gameTime, sizeof(float));
if (ms.gameTime > 2) {
ms.updatedThisFrame.clear();
ReadRenderer(ms);
ReadMinimap(ms);
ReadObjects(ms);
ClearMissingObjects(ms);
FindPlayerChampion(ms);
FindHoveredObject(ms);
ms.map = std::shared_ptr<MapObject>(MapObject::Get(ms.turrets.size() > 10 ? SUMMONERS_RIFT : HOWLING_ABYSS));
}
}
================================================
FILE: LView/LeagueMemoryReader.h
================================================
#pragma once
#include "windows.h"
#include "GameObject.h"
#include "GameRenderer.h"
#include "Offsets.h"
#include "MemSnapshot.h"
#include <list>
#include <vector>
#include <set>
#include <chrono>
#include <queue>
using namespace std::chrono;
/// Class used to read from leagues process memory
class LeagueMemoryReader {
public:
LeagueMemoryReader();
/// Checks if leagues window is still active
bool IsLeagueWindowActive();
/// Checks to see if we have a league window stored
bool IsHookedToProcess();
/// Finds leagues window and stores it
void HookToProcess();
/// Creates an object with everything of iterest from the game
void MakeSnapshot(MemSnapshot& ms);
private:
// Process related
HANDLE hProcess = NULL;
DWORD pid = 0;
HWND hWindow = NULL;
// Memory related
DWORD_PTR moduleBaseAddr = 0;
DWORD moduleSize = 0;
BOOL is64Bit = FALSE;
private:
float minDistanceToCursor;
/// Blacklisted objects that we don't need to read for performance reasons. Set key is the object's network id
std::set<int> blacklistedObjects;
std::set<std::string> blacklistedObjectNames;
void ReadRenderer(MemSnapshot& snapshot);
void ReadObjects(MemSnapshot& snapshot);
void ReadMinimap(MemSnapshot& snapshot);
void FindPlayerChampion(MemSnapshot& snapshot);
void ClearMissingObjects(MemSnapshot& snapshot);
void FindHoveredObject(MemSnapshot& ms);
};
================================================
FILE: LView/MapObject.cpp
================================================
#include "MapObject.h"
#include <fstream>
#include "Utils.h"
std::array<std::shared_ptr<MapObject>, 2> MapObject::maps = std::array<std::shared_ptr<MapObject>, 2>({ nullptr, nullptr });
const float MapObject::HEIGHT_MAP_SIZE_RATIO = SIZE_HEIGHT_MAP / 15000.f;
void MapObject::Load(const char* heightMapFile)
{
std::ifstream input(heightMapFile, std::ios::binary);
if (!input.is_open())
throw std::runtime_error("No height_map.bin file");
for (int i = 0; i < SIZE_HEIGHT_MAP; ++i) {
input.read((char*)heightMap[i].data(), SIZE_HEIGHT_MAP * sizeof(float));
}
}
float MapObject::GetHeightAt(float x, float z)
{
int ix = Clamp( (int)(HEIGHT_MAP_SIZE_RATIO*x), 0, SIZE_HEIGHT_MAP - 1);
int iz = Clamp( (int)(HEIGHT_MAP_SIZE_RATIO*z), 0, SIZE_HEIGHT_MAP - 1);
return heightMap[ix][iz];
}
std::shared_ptr<MapObject>& MapObject::Get(MapType type)
{
if (maps[type] == nullptr) {
maps[type] = std::shared_ptr<MapObject>(new MapObject());
maps[type]->type = type;
}
return maps[type];
}
================================================
FILE: LView/MapObject.h
================================================
#pragma once
#include <array>
#include <memory>
enum MapType {
SUMMONERS_RIFT = 0,
HOWLING_ABYSS = 1
};
class MapObject {
public:
/// Loads map data from disk
void Load(const char* heightMapFile);
/// Returns the ground Y coordinate. Uses a preloaded height map.
float GetHeightAt(float x, float z);
public:
MapType type;
static const int SIZE_HEIGHT_MAP = 512;
static const float HEIGHT_MAP_SIZE_RATIO;
std::array<std::array<float, SIZE_HEIGHT_MAP>, SIZE_HEIGHT_MAP> heightMap;
static std::shared_ptr<MapObject>& Get(MapType type);
private:
static std::array<std::shared_ptr<MapObject>, 2> maps;
};
================================================
FILE: LView/MemSnapshot.h
================================================
#pragma once
#include <vector>
#include <set>
#include <map>
#include "Benchmark.h"
#include "GameRenderer.h"
#include "GameObject.h"
#include "MapObject.h"
/// Object encapsulating league's game state
struct MemSnapshot {
/* Lists of objects by category */
std::vector<std::shared_ptr<GameObject>> champions;
std::vector<std::shared_ptr<GameObject>> minions;
std::vector<std::shared_ptr<GameObject>> jungle;
std::vector<std::shared_ptr<GameObject>> turrets;
std::vector<std::shared_ptr<GameObject>> missiles;
std::vector<std::shared_ptr<GameObject>> others;
/* A map between the network id of the object and the object itself */
std::map<int, std::shared_ptr<GameObject>> objectMap;
std::map<short, int> indexToNetId;
/* Used to clear objectMap for objects that are no longer in game */
std::set<int> updatedThisFrame;
/* The champion of the player running the app */
std::shared_ptr<GameObject> player = nullptr;
/* The object below the mouse */
std::shared_ptr<GameObject> hoveredObject = nullptr;
/* Game renderer info */
std::unique_ptr<GameRenderer> renderer = std::unique_ptr<GameRenderer>(new GameRenderer());
/* How many seconds have elapsed since the game started */
float gameTime = 0.f;
/* Stuff about the map the players are currently on */
std::shared_ptr<MapObject> map;
/* Minimap related stuff */
Vector2 minimapPos;
Vector2 minimapSize;
/* Memory reading benchmarks */
std::unique_ptr<ReadBenchmark> benchmark = std::unique_ptr<ReadBenchmark>(new ReadBenchmark());
};
================================================
FILE: LView/MemoryLoadable.h
================================================
#pragma once
#include "windows.h"
/// Interface to be implemented by game objects that are read from memory
class MemoryLoadable {
virtual void LoadFromMem(DWORD base, HANDLE hProcess, bool deepLoad = true) = 0;
};
================================================
FILE: LView/Offsets.cpp
================================================
#include "Offsets.h"
Offsets::Offsets() {};
int Offsets::GameTime = 0x30d2c58;
int Offsets::ObjIndex = 0x20;
int Offsets::ObjTeam = 0x4C;
int Offsets::ObjNetworkID = 0xCC;
int Offsets::ObjPos = 0x1d8;
int Offsets::ObjVisibility = 0x0270;
int Offsets::ObjSpawnCount = 0x218;
int Offsets::ObjSrcIndex = 0x290;
int Offsets::ObjMana = 0x0298;
int Offsets::ObjHealth = 0xd98;
int Offsets::ObjMaxHealth = 0xDA8;
int Offsets::ObjArmor = 0x1890;
int Offsets::ObjMagicRes = 0x12D4;
int Offsets::ObjBaseAtk = 0x12A4;
int Offsets::ObjBonusAtk = 0x121C;
int Offsets::ObjMoveSpeed = 0x12E4;
int Offsets::ObjSpellBook = 0x27C8;
int Offsets::ObjName = 0x2bb4;
int Offsets::ObjLvl = 0x3354;
int Offsets::ObjExpiry = 0x298;
int Offsets::ObjCrit = 0x12C8;
int Offsets::ObjCritMulti = 0x12BC;
int Offsets::ObjAbilityPower = 0x122C;
int Offsets::ObjAtkSpeedMulti = 0x12A0;
int Offsets::ObjItemList = 0x33A0;
int Offsets::ItemListItem = 0xC;
int Offsets::ItemInfo = 0x20;
int Offsets::ItemInfoId = 0x68;
int Offsets::ViewProjMatrices = 0x030ff708;
int Offsets::Renderer = 0x0310257c;
int Offsets::RendererWidth = 0xC;
int Offsets::RendererHeight = 0x10;
int Offsets::SpellSlotLevel = 0x20;
int Offsets::SpellSlotTime = 0x28;
int Offsets::SpellSlotDamage = 0x94;
int Offsets::SpellSlotSpellInfo = 0x13C;
int Offsets::SpellInfoSpellData = 0x44;
int Offsets::SpellDataSpellName = 0x6C;
int Offsets::SpellDataMissileName = 0x6C;
int Offsets::ObjectManager = 0x0183e1a0;
int Offsets::LocalPlayer = 0x030da914;
int Offsets::UnderMouseObject = 0x180f208;
int Offsets::ObjectMapCount = 0x2C;
int Offsets::ObjectMapRoot = 0x28;
int Offsets::ObjectMapNodeNetId = 0x10;
int Offsets::ObjectMapNodeObject = 0x14;
int Offsets::MissileSpellInfo = 0x258;
int Offsets::MissileSrcIdx = 0x2B8;
int Offsets::MissileDestIdx = 0x310;
int Offsets::MissileStartPos = 0x2D4;
int Offsets::MissileEndPos = 0x2E0;
int Offsets::MinimapObject = 0000000000;
int Offsets::MinimapObjectHud = 0x88;
int Offsets::MinimapHudPos = 0x60;
int Offsets::MinimapHudSize = 0x68;
================================================
FILE: LView/Offsets.h
================================================
#pragma once
#include "ConfigSet.h"
/// Defines offsets for reading structs from league of legends memory
class Offsets {
public:
Offsets();
static int GameTime;
static int ObjIndex;
static int ObjTeam;
static int ObjNetworkID;
static int ObjPos;
static int ObjVisibility;
static int ObjSpawnCount;
static int ObjHealth;
static int ObjMaxHealth;
static int ObjMana;
static int ObjArmor;
static int ObjMagicRes;
static int ObjBaseAtk;
static int ObjBonusAtk;
static int ObjMoveSpeed;
static int ObjSpellBook;
static int ObjName;
static int ObjLvl;
static int ObjExpiry;
static int ObjCrit;
static int ObjCritMulti;
static int ObjAbilityPower;
static int ObjAtkSpeedMulti;
static int ObjItemList;
static int ObjSrcIndex;
static int ItemListItem;
static int ItemInfo;
static int ItemInfoId;
static int ViewProjMatrices;
static int Renderer;
static int RendererWidth;
static int RendererHeight;
static int SpellSlotLevel;
static int SpellSlotTime;
static int SpellSlotDamage;
static int SpellSlotSpellInfo;
static int SpellInfoSpellData;
static int SpellDataSpellName;
static int SpellDataMissileName;
static int ObjectManager;
static int LocalPlayer;
static int UnderMouseObject;
static int ObjectMapCount;
static int ObjectMapRoot;
static int ObjectMapNodeNetId;
static int ObjectMapNodeObject;
static int MissileSpellInfo;
static int MissileSrcIdx;
static int MissileDestIdx;
static int MissileStartPos;
static int MissileEndPos;
static int MinimapObject;
static int MinimapObjectHud;
static int MinimapHudPos;
static int MinimapHudSize;
};
================================================
FILE: LView/Overlay.cpp
================================================
#include "Overlay.h"
#include "Utils.h"
#include "Structs.h"
#include "LeagueMemoryReader.h"
#include "Benchmark.h"
#include <string>
#include <list>
#define HCheck(x, m) if(x != S_OK) { throw std::runtime_error(Character::Format("DirectX: Failed at %s. Error code: %d\n", m, MAKE_HRESULT(1, _FACDXGI, X))); }
ID3D11Device* Overlay::dxDevice = NULL;
ID3D11DeviceContext* Overlay::dxDeviceContext = NULL;
IDXGISwapChain1* Overlay::dxSwapChain = NULL;
ID3D11RenderTargetView* Overlay::dxRenderTarget = NULL;
Overlay::Overlay(): configs(*(ConfigSet::Get())){
}
void Overlay::Init() {
// Create transparent window
std::string windowClassName = Character::RandomString(10);
std::string windowName = Character::RandomString(10);
SetConsoleTitleA(windowName.c_str());
// Create window with random name & class name
WNDCLASSEXA wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, windowClassName.c_str(), NULL };
RegisterClassExA(&wc);
hWindow = CreateWindowExA(
WS_EX_TOPMOST | WS_EX_NOACTIVATE | WS_EX_LAYERED,
windowClassName.c_str(), windowName.c_str(),
WS_POPUP,
1, 1, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
nullptr, nullptr, GetModuleHandle(0), nullptr);
if (hWindow == NULL) {
throw WinApiException("Failed to create overlay window");
}
ShowWindow(hWindow, SW_SHOW);
// Initialize Direct3D
if (!CreateDeviceD3D(hWindow))
{
CleanupDeviceD3D();
throw std::runtime_error("Failed to create D3D device");
}
// Setup imgui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
io.ConfigWindowsMoveFromTitleBarOnly = true;
// Setup Dear ImGui style
ImGui::StyleColorsDark();
// Setup Platform/Renderer backends
ImGui_ImplWin32_Init(hWindow);
ImGui_ImplDX11_Init(dxDevice, dxDeviceContext);
ImGui::GetStyle().Alpha = 1.f;
}
void Overlay::GameStart(MemSnapshot& memSnapshot)
{
scriptManager.LoadAll(configs.GetStr("scriptsFolder", "."), memSnapshot.player->name);
}
void Overlay::StartFrame()
{
MSG msg;
ZeroMemory(&msg, sizeof(MSG));
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
ImGui_ImplDX11_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
}
void Overlay::Update(MemSnapshot& memSnapshot) {
// Simple check to see if game ended
if (memSnapshot.champions.size() == 0 || !isWindowVisible)
return;
auto timeBefore = high_resolution_clock::now();
PyGame state = PyGame::ConstructFromMemSnapshot(memSnapshot);
DrawOverlayWindows(state);
ExecScripts(state);
DrawUI(state, memSnapshot);
duration<float, std::milli> timeDuration = high_resolution_clock::now() - timeBefore;
processTimeMs = timeDuration.count();
}
void Overlay::RenderFrame()
{
static ImVec4 clear_color = ImVec4(0.f, 0.f, 0.f, 0.f);
// Render
auto timeBefore = high_resolution_clock::now();
ImGui::EndFrame();
ImGui::Render();
dxDeviceContext->OMSetRenderTargets(1, &dxRenderTarget, NULL);
dxDeviceContext->ClearRenderTargetView(dxRenderTarget, (float*)&clear_color);
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
dxSwapChain->Present(0, 0);
duration<float, std::milli> timeDuration = high_resolution_clock::now() - timeBefore;
renderTimeMs = timeDuration.count();
}
void Overlay::ExecScripts(PyGame & state)
{
for (auto& script : scriptManager.activeScripts) {
if (script->enabled && script->loadError.empty() && script->execError.empty())
script->ExecUpdate(state, imguiInterface);
}
}
void Overlay::DrawUI(PyGame& state, MemSnapshot& memSnapshot) {
high_resolution_clock::time_point timeBefore;
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver);
ImGui::SetNextWindowSize(ImVec2(550, 680), ImGuiCond_FirstUseEver);
if (!ImGui::Begin("LVIEW by leryss")) {
ImGui::End();
return;
}
if (ImGui::BeginTabBar("LViewTabBar", ImGuiTabBarFlags_None)) {
if (ImGui::BeginTabItem("Scripts##ScriptsId")) {
DrawScriptSettings(state, memSnapshot);
ImGui::EndTabItem();
}
if (ImGui::BeginTabItem("Benchmarks##BenchmarksId")) {
DrawBenchmarks(memSnapshot);
ImGui::EndTabItem();
}
ImGui::EndTabBar();
}
ImGui::End();
}
void Overlay::DrawOverlayWindows(PyGame& state)
{
// Draw game overlay (used for primitive rendering)
auto io = ImGui::GetIO();
ImGui::SetNextWindowSize(io.DisplaySize);
ImGui::SetNextWindowPos(ImVec2(0, 0));
ImGui::Begin("##Overlay", nullptr,
ImGuiWindowFlags_NoTitleBar |
ImGuiWindowFlags_NoResize |
ImGuiWindowFlags_NoMove |
ImGuiWindowFlags_NoScrollbar |
ImGuiWindowFlags_NoSavedSettings |
ImGuiWindowFlags_NoInputs |
ImGuiWindowFlags_NoBackground
);
state.overlay = ImGui::GetWindowDrawList();
ImGui::End();
}
void Overlay::DrawScriptSettings(PyGame& state, MemSnapshot& memSnapshot)
{
ImGui::Text("Script Settings");
if (ImGui::Button("Save all script settings")) {
scriptManager.SaveAllScriptsConfigs();
configs.SaveToFile();
}
ImGui::SameLine();
if (ImGui::Button("Reload all scripts")) {
GameStart(memSnapshot);
}
int idNode = 10000;
for (std::shared_ptr<Script>& script : scriptManager.activeScripts) {
idNode++;
// If we got any load/execution script error we should print it in bright red
if (!script->loadError.empty() || !script->execError.empty()) {
DrawScriptError(script);
}
else {
// Gray out disabled cheat
bool skippedExecution = false;
if (!script->enabled) {
ImGui::PushStyleColor(ImGuiCol_Header, Colors::GRAY);
skippedExecution = true;
}
if (ImGui::CollapsingHeader(script->name.c_str())) {
ImGui::Indent(16.0f);
DrawScriptCommonSettings(script, idNode);
script->ExecDrawSettings(state, imguiInterface);
ImGui::Unindent();
}
if (skippedExecution)
ImGui::PopStyleColor();
}
}
}
void Overlay::DrawBenchmarks(MemSnapshot & memSnapshot)
{
ImGui::Text("Benchmarks");
float readMemoryTime = memSnapshot.benchmark->readObjectsMs +
memSnapshot.benchmark->readRendererMs;
float totalMs = readMemoryTime + renderTimeMs + processTimeMs;
ImGui::DragFloat("Total Time (ms)", &totalMs);
ImGui::DragFloat("Render UI Time (ms)", &renderTimeMs);
ImGui::DragFloat("Total Scripts Time (ms)", &processTimeMs);
ImGui::DragFloat("Read Memory Time (ms)", &readMemoryTime);
if (ImGui::TreeNode("Memory read time (ms)")) {
ImGui::DragFloat("Read objects", &memSnapshot.benchmark->readObjectsMs);
ImGui::DragFloat("Read renderer", &memSnapshot.benchmark->readRendererMs);
ImGui::TreePop();
}
if (ImGui::TreeNode("Script process time (ms)")) {
for (std::shared_ptr<Script>& script : scriptManager.activeScripts) {
float ms = script->updateTimeMs.count();
ImGui::DragFloat(script->name.c_str(), &ms);
}
ImGui::TreePop();
}
}
void Overlay::DrawScriptError(std::shared_ptr<Script>& script)
{
ImGui::PushStyleColor(ImGuiCol_Header, Colors::RED);
if (ImGui::CollapsingHeader(script->name.c_str())) {
if (ImGui::Button("Reload script"))
scriptManager.ReloadScript(script);
ImGui::TextColored(Colors::RED, script->loadError.c_str());
ImGui::TextColored(Colors::RED, script->execError.c_str());
}
ImGui::PopStyleColor();
}
void Overlay::DrawScriptCommonSettings(std::shared_ptr<Script>& script, int id)
{
if (ImGui::TreeNode(&id, "About")) {
ImGui::LabelText("Author", script->author.c_str());
ImGui::TextWrapped(script->description.c_str());
ImGui::TreePop();
}
if (ImGui::Button("Reload script"))
scriptManager.ReloadScript(script);
ImGui::SameLine();
if (ImGui::Button("Save settings")) {
scriptManager.SaveScriptConfigs(script);
configs.SaveToFile();
}
ImGui::Checkbox("Enabled", &script->enabled);
ImGui::Separator();
}
bool Overlay::IsVisible()
{
return isWindowVisible;
}
void Overlay::Hide()
{
ShowWindow(hWindow, SW_HIDE);
isWindowVisible = false;
}
void Overlay::Show()
{
ShowWindow(hWindow, SW_SHOW);
isWindowVisible = true;
}
void Overlay::ToggleTransparent()
{
LONG ex_style = GetWindowLong(hWindow, GWL_EXSTYLE);
ex_style = (ex_style & WS_EX_TRANSPARENT) ? (ex_style & ~WS_EX_TRANSPARENT) : (ex_style | WS_EX_TRANSPARENT);
SetWindowLong(hWindow, GWL_EXSTYLE, ex_style);
}
ID3D11Device * Overlay::GetDxDevice()
{
return dxDevice;
}
bool Overlay::CreateDeviceD3D(HWND hWnd)
{
const D3D_FEATURE_LEVEL featureLevelArray[2] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_0, };
HCheck(D3D11CreateDevice(
nullptr, // Adapter
D3D_DRIVER_TYPE_HARDWARE,
nullptr, // Module
D3D11_CREATE_DEVICE_BGRA_SUPPORT ,
nullptr, 0, // Highest available feature level
D3D11_SDK_VERSION,
&dxDevice,
nullptr, // Actual feature level
&dxDeviceContext), "Creating device");
IDXGIDevice* dxgiDevice;
HCheck(dxDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)& dxgiDevice), "Query DXGI Device");
IDXGIAdapter * dxgiAdapter = 0;
HCheck(dxgiDevice->GetParent(__uuidof(IDXGIAdapter), (void **)& dxgiAdapter), "Get DXGI Adapter");
IDXGIFactory2 * dxgiFactory = 0;
HCheck(dxgiAdapter->GetParent(__uuidof(IDXGIFactory2), (void **)& dxgiFactory), "Get DXGI Factory");
// Create swap chain with alpha mode premultiplied
DXGI_SWAP_CHAIN_DESC1 description = {};
description.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
description.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
description.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL;
description.BufferCount = 2;
description.SampleDesc.Count = 1;
description.AlphaMode = DXGI_ALPHA_MODE_PREMULTIPLIED;
description.Scaling = DXGI_SCALING_STRETCH;
RECT rect = {};
GetClientRect(hWnd, &rect);
description.Width = rect.right - rect.left;
description.Height = rect.bottom - rect.top;
HCheck(dxgiFactory->CreateSwapChainForComposition(dxgiDevice,
&description,
nullptr,
&dxSwapChain), "Create swap chain");
// Create Direct Composition layer
IDCompositionDevice* dcompDevice;
DCompositionCreateDevice(
dxgiDevice,
__uuidof(dcompDevice),
(void**)&dcompDevice);
IDCompositionTarget* target;
dcompDevice->CreateTargetForHwnd(hWnd,
true,
&target);
IDCompositionVisual* visual;
dcompDevice->CreateVisual(&visual);
visual->SetContent(dxSwapChain);
target->SetRoot(visual);
dcompDevice->Commit();
CreateRenderTarget();
return true;
}
void Overlay::CleanupDeviceD3D()
{
CleanupRenderTarget();
if (dxSwapChain) { dxSwapChain->Release(); dxSwapChain = NULL; }
if (dxDeviceContext) { dxDeviceContext->Release(); dxDeviceContext = NULL; }
if (dxDevice) { dxDevice->Release(); dxDevice = NULL; }
}
void Overlay::CreateRenderTarget()
{
ID3D11Resource* pBackBuffer;
if(S_OK != dxSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer)))
throw std::runtime_error("Failed to retrieve DX11 swap chain buffer");
if (S_OK != dxDevice->CreateRenderTargetView(pBackBuffer, NULL, &dxRenderTarget))
throw std::runtime_error("Failed to create DX11 render target");
pBackBuffer->Release();
}
void Overlay::CleanupRenderTarget()
{
if (dxRenderTarget) { dxRenderTarget->Release(); dxRenderTarget = NULL; }
}
extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT WINAPI Overlay::WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam))
return true;
switch (msg)
{
case WM_SIZE:
if (dxDevice != NULL && wParam != SIZE_MINIMIZED)
{
CleanupRenderTarget();
dxSwapChain->ResizeBuffers(0, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam), DXGI_FORMAT_UNKNOWN, 0);
CreateRenderTarget();
}
return 0;
case WM_SYSCOMMAND:
if ((wParam & 0xfff0) == SC_KEYMENU) // Disable ALT application menu
return 0;
break;
case WM_DESTROY:
::PostQuitMessage(0);
return 0;
}
return ::DefWindowProc(hWnd, msg, wParam, lParam);
}
================================================
FILE: LView/Overlay.h
================================================
#pragma once
#include "Structs.h"
#include "LeagueMemoryReader.h"
#include <chrono>
#include <map>
#include <list>
#include "windows.h"
#include "imgui.h"
#include "imgui_impl_dx11.h"
#include "imgui_impl_win32.h"
#include <boost/python.hpp>
#include "Python.h"
#include "ConfigSet.h"
#include "ScriptManager.h"
#include "PyGame.h"
#include <dinput.h>
#include <dxgi1_3.h>
#include <d3d11_2.h>
#include <dcomp.h>
#include "PyImguiInterface.h"
using namespace std::chrono;
using namespace boost::python;
/// Manages the overlay of the cheat. Also manages the executing scripts.
class Overlay {
public:
Overlay();
void Init();
void GameStart(MemSnapshot& memSnapshot);
void StartFrame();
void Update(MemSnapshot& memSnapshot);
void RenderFrame();
bool IsVisible();
void Hide();
void Show();
void ToggleTransparent();
static ID3D11Device* GetDxDevice();
private:
void DrawUI(PyGame& state, MemSnapshot& memSnapshot);
void ExecScripts(PyGame& state);
void DrawOverlayWindows(PyGame& state);
void DrawScriptSettings(PyGame& state, MemSnapshot& memSnapshot);
void DrawBenchmarks(MemSnapshot& memSnapshot);
void DrawScriptError(std::shared_ptr<Script>& script);
void DrawScriptCommonSettings(std::shared_ptr<Script>& script, int id);
static bool CreateDeviceD3D(HWND hWnd);
static void CleanupDeviceD3D();
static void CreateRenderTarget();
static void CleanupRenderTarget();
static LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
private:
HWND hWindow;
bool isWindowVisible = true;
// DirectX stuff
static ID3D11Device* dxDevice;
static ID3D11DeviceContext* dxDeviceContext;
static IDXGISwapChain1* dxSwapChain;
static ID3D11RenderTargetView* dxRenderTarget;
ConfigSet& configs;
ScriptManager scriptManager;
PyImguiInterface imguiInterface;
// Some simple benchmarks
float renderTimeMs;
float processTimeMs;
// Some imgui flags
bool drawSettings = true;
bool drawBenchmarks = false;
};
================================================
FILE: LView/PyGame.h
================================================
#pragma once
#include <boost/python.hpp>
#include "MemSnapshot.h"
#include "Utils.h"
using namespace boost::python;
/// Interface used by python scripts for game related stuff
class PyGame {
public:
std::map<int, float> distanceCache;
MemSnapshot* ms;
ImDrawList* overlay;
public:
PyGame() {}
// Exposed Fields
list champs, minions, turrets, jungle, missiles, others;
float gameTime;
MapObject* map;
GameObject* hoveredObject;
GameObject* localChampion;
object GetHoveredObject() {
if (hoveredObject == nullptr)
return object();
return object(boost::ref(*hoveredObject));
}
object GetLocalChampion() {
if (localChampion == nullptr)
return object();
return object(boost::ref(*localChampion));
};
object GetMap() {
return object(boost::ref(*map));
}
//Exposed methods
Vector2 WorldToScreen(const Vector3& pos) {
return ms->renderer->WorldToScreen(pos);
}
Vector2 WorldToMinimap(const Vector3& pos) {
return ms->renderer->WorldToMinimap(pos, ms->minimapPos, ms->minimapSize);
}
float DistanceToMinimap(float dist) {
return ms->renderer->DistanceToMinimap(dist, ms->minimapSize);
}
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(IsScreenPointOnScreenOverloads, IsScreenPointOnScreen, 1, 3);
bool IsScreenPointOnScreen(const Vector2& point, float offsetX = 0.f, float offsetY = 0.f) {
return ms->renderer->IsScreenPointOnScreen(point, offsetX, offsetY);
}
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(IsWorldPointOnScreenOverloads, IsWorldPointOnScreen, 1, 3);
bool IsWorldPointOnScreen(const Vector3& point, float offsetX = 0.f, float offsetY = 0.f) {
return ms->renderer->IsWorldPointOnScreen(point, offsetX, offsetY);
}
void DrawCircle(const Vector2& center, float radius, int numPoints, float thickness, const ImVec4& color) {
overlay->AddCircle(ImVec2(center.x, center.y), radius, ImColor(color), numPoints, thickness);
}
void DrawCircleFilled(const Vector2& center, float radius, int numPoints, const ImVec4& color) {
overlay->AddCircleFilled(ImVec2(center.x, center.y), radius, ImColor(color), numPoints);
}
void DrawTxt(const Vector2& pos, const char* text, const ImVec4& color) {
overlay->AddText(ImVec2(pos.x, pos.y), ImColor(color), text);
}
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(DrawRectOverloads, DrawRect, 2, 4);
void DrawRect(const Vector4& box, const ImVec4& color, float rounding = 0, float thickness = 1.0) {
overlay->AddRect(ImVec2(box.x, box.y), ImVec2(box.z, box.w), ImColor(color), rounding, 15, thickness);
}
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(DrawRectFilledOverloads, DrawRectFilled, 2, 3);
void DrawRectFilled(const Vector4& box, const ImVec4& color, float rounding = 0) {
overlay->AddRectFilled(ImVec2(box.x, box.y), ImVec2(box.z, box.w), ImColor(color), rounding);
}
void DrawRectWorld(const Vector3& p1, const Vector3& p2, const Vector3& p3, const Vector3& p4, float thickness, const ImVec4& color) {
static Vector2 points[4];
points[0] = ms->renderer->WorldToScreen(p1);
points[1] = ms->renderer->WorldToScreen(p2);
points[2] = ms->renderer->WorldToScreen(p3);
points[3] = ms->renderer->WorldToScreen(p4);
overlay->AddPolyline((ImVec2*)points, 4, ImColor(color), true, thickness);
}
void DrawTriangleWorld(const Vector3& p1, const Vector3& p2, const Vector3& p3, float thickness, const ImVec4& color) {
overlay->AddTriangle(
(ImVec2&)ms->renderer->WorldToScreen(p1),
(ImVec2&)ms->renderer->WorldToScreen(p2),
(ImVec2&)ms->renderer->WorldToScreen(p3), ImColor(color), thickness);
}
void DrawTriangleWorldFilled(const Vector3& p1, const Vector3& p2, const Vector3& p3, const ImVec4& color) {
overlay->AddTriangleFilled(
(ImVec2&)ms->renderer->WorldToScreen(p1),
(ImVec2&)ms->renderer->WorldToScreen(p2),
(ImVec2&)ms->renderer->WorldToScreen(p3), ImColor(color));
}
void DrawCircleWorld (const Vector3& center, float radius, int numPoints, float thickness, const ImVec4& color) {
ms->renderer->DrawCircleAt(overlay, center, radius, false, numPoints, ImColor(color), thickness);
}
void DrawCircleWorldFilled(const Vector3& center, float radius, int numPoints, const ImVec4& color) {
ms->renderer->DrawCircleAt(overlay, center, radius, true, numPoints, ImColor(color));
}
void DrawLine(const Vector2& start, const Vector2& end, float thickness, const ImVec4& color) {
overlay->AddLine((const ImVec2&)start, (const ImVec2&)end, ImColor(color), thickness);
}
void DrawImage(const char* img, const Vector2& start, const Vector2& end, const ImVec4& color) {
static ImVec2 zero = ImVec2(0.f, 0.f);
static ImVec2 one = ImVec2(1.f, 1.f);
auto it = GameData::Images.find(std::string(img));
if (it == GameData::Images.end())
return;
overlay->AddImage(it->second->resourceView, (ImVec2&)start, (ImVec2&)end, zero, one, ImColor(color));
}
void DrawImageRounded(const char* img, const Vector2& start, const Vector2& end, const ImVec4& color, float rounding) {
static ImVec2 zero = ImVec2(0.f, 0.f);
static ImVec2 one = ImVec2(1.f, 1.f);
auto it = GameData::Images.find(std::string(img));
if (it == GameData::Images.end())
return;
overlay->AddImageRounded(it->second->resourceView, (ImVec2&)start, (ImVec2&)end, zero, one, ImColor(color), rounding);
}
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(DrawButtonOverloads, DrawButton, 4, 5);
void DrawButton(const Vector2& p, const char* text, ImVec4& colorButton, ImVec4& colorText, float rounding = 0) {
int txtSize = strlen(text);
overlay->AddRectFilled(ImVec2(p.x, p.y), ImVec2(p.x + txtSize * 7.2f + 5, p.y + 17), ImColor(colorButton), rounding);
overlay->AddText(ImVec2(p.x + 5, p.y + 2), ImColor(colorText), text);
}
Vector2 HpBarPos(GameObject& obj) {
Vector3 pos = obj.position.clone();
pos.y += obj.GetHpBarHeight();
Vector2 w2s = ms->renderer->WorldToScreen(pos);
w2s.y -= (ms->renderer->height * 0.00083333335f * obj.GetHpBarHeight());
return w2s;
}
void PressKey(int key) {
Input::PressKey((HKey)key);
}
bool WasKeyPressed(int key) {
return Input::WasKeyPressed((HKey)key);
}
void PressLeftClick() {
Input::PressLeftClick();
}
void PressRightClick() {
Input::PressRightClick();
}
void ClickAt(bool leftClick, const Vector2& pos) {
Input::ClickAt(leftClick, pos.x, pos.y);
}
bool IsKeyDown(int key) {
return Input::IsKeyDown((HKey)key);
}
Vector2 GetCursor() {
return Input::GetCursorPosition();
}
SpellInfo* GetSpellInfo(const char* spellName) {
std::string name(spellName);
return GameData::GetSpellInfoByName(name);
}
Vector2 LinearCollision(const Vector2& p1, const Vector2& d1, const Vector2& p2, const Vector2& d2, float radius) {
static float Ax, Bx, Cx, Ay, By, Cy;
static float a, b, c, delta;
static float sqrt_d, t1, t2;
Ax = pow((d1.x - d2.x), 2.f);
Bx = p1.x*d1.x - p1.x*d2.x - p2.x*d1.x + p2.x*d2.x;
Cx = pow((p1.x - p2.x), 2.f);
Ay = pow((d1.y - d2.y), 2.f);
By = p1.y*d1.y - p1.y*d2.y - p2.y*d1.y + p2.y*d2.y;
Cy = pow((p1.y - p2.y), 2.f);
a = Ax + Ay;
b = 2.f*(Bx + By);
c = Cx + Cy - pow(radius, 2.f);
delta = b * b - 4.f*a*c;
if (a == 0.f || delta < 0.f)
return Vector2(-1.f, -1.f);
sqrt_d = sqrt(delta);
t1 = (-b + sqrt_d) / (2.f*a);
t2 = (-b - sqrt_d) / (2.f*a);
return Vector2(t1, t2);
}
void MoveCursor(const Vector2& pos) {
Input::MoveCursorTo(pos.x, pos.y);
}
float Distance(GameObject* first, GameObject* second) {
int key = (first->objectIndex > second->objectIndex) ?
(first->objectIndex << 16) | second->objectIndex :
(second->objectIndex << 16) | first->objectIndex;
auto it = distanceCache.find(key);
if (it != distanceCache.end())
return it->second;
float dist = first->position.distance(second->position);
distanceCache[key] = dist;
return dist;
}
GameObject* GetObjectByIndex(short index) {
auto it = ms->indexToNetId.find(index);
if (it == ms->indexToNetId.end())
return nullptr;
auto it2 = ms->objectMap.find(it->second);
if (it2 == ms->objectMap.end())
return nullptr;
return it2->second.get();
}
GameObject* GetObjectByNetId(int net_id) {
auto it = ms->objectMap.find(net_id);
return (it != ms->objectMap.end()) ? it->second.get() : nullptr;
}
static PyGame ConstructFromMemSnapshot(MemSnapshot& snapshot) {
PyGame gs;
gs.ms = &snapshot;
gs.gameTime = snapshot.gameTime;
gs.hoveredObject = snapshot.hoveredObject.get();
gs.localChampion = snapshot.player.get();
gs.map = snapshot.map.get();
for (auto it = snapshot.champions.begin(); it != snapshot.champions.end(); ++it) {
gs.champs.append(boost::ref(**it));
}
for (auto it = snapshot.minions.begin(); it != snapshot.minions.end(); ++it) {
gs.minions.append(boost::ref(**it));
}
for (auto it = snapshot.turrets.begin(); it != snapshot.turrets.end(); ++it) {
gs.turrets.append(boost::ref(**it));
}
for (auto it = snapshot.jungle.begin(); it != snapshot.jungle.end(); ++it) {
gs.jungle.append(boost::ref(**it));
}
for (auto it = snapshot.missiles.begin(); it != snapshot.missiles.end(); ++it) {
gs.missiles.append(boost::ref(**it));
}
for (auto it = snapshot.others.begin(); it != snapshot.others.end(); ++it) {
gs.others.append(boost::ref(**it));
}
return gs;
}
};
================================================
FILE: LView/PyImguiInterface.h
================================================
#pragma once
#include "imgui.h"
#include <boost/python.hpp>
using namespace boost::python;
/// Interface used by python scripts for creating UIs with imgui.
class PyImguiInterface {
public:
void Begin(const char* name) {
ImGui::Begin(name);
}
void End() {
ImGui::End();
}
bool Button(const char* text) {
return ImGui::Button(text);
}
bool ColorButton(const char* text, object color) {
return ImGui::ColorButton(text, extract<ImVec4>(color));
}
bool Checkbox(const char* text, bool enabled) {
ImGui::Checkbox(text, &enabled);
return enabled;
}
void Text(const char* text) {
ImGui::Text(text);
}
void TextColored(const char* text, object color) {
ImGui::TextColored(extract<ImVec4>(color), text);
}
void LabelText(const char* label, const char* text) {
ImGui::LabelText(label, text);
}
void LabelTextColored(const char* label, const char* text, object color) {
ImVec4 col = extract<ImVec4>(color);
ImGui::PushStyleColor(ImGuiCol_Text, col);
ImGui::LabelText(label, text);
ImGui::PopStyleColor();
}
ImVec4 ColorPicker(const char* label, object color) {
ImVec4 col = extract<ImVec4>(color);
ImGui::ColorPicker4(label, (float*)&col);
return col;
}
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(DragIntOverloads, DragInt, 2, 5);
int DragInt(const char* text, int i, int step = 1, int minVal = 0, int maxVal = 0) {
ImGui::DragInt(text, &i, (float)step, minVal, maxVal);
return i;
}
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(DragFloatOverloads, DragFloat, 2, 5);
float DragFloat(const char* text, float i, float step = 1, float minVal = 0, float maxVal = 0) {
ImGui::DragFloat(text, &i, step, minVal, maxVal);
return i;
}
float SliderFloat(const char* label, float val, float valMin, float valMax) {
ImGui::SliderFloat(label, &val, valMin, valMax);
return val;
}
void Separator() {
ImGui::Separator();
}
bool CollapsingHeader(const char* text) {
return ImGui::CollapsingHeader(text);
}
bool TreeNode(const char* text) {
return ImGui::TreeNode(text);
}
void SetNextItemOpen() {
ImGui::SetNextItemOpen(true, ImGuiCond_Once);
}
void TreePop() {
ImGui::TreePop();
}
void SameLine() {
ImGui::SameLine();
}
void BeginGroup() {
ImGui::BeginGroup();
}
void EndGroup() {
ImGui::EndGroup();
}
int ListBox(const char* label, list items, int chosen) {
static std::vector<const char*> buffer;
buffer.clear();
int size = len(items);
for (int i = 0; i < size; ++i)
buffer.push_back(extract<const char*>(str(items[i])));
ImGui::ListBox(label, &chosen, buffer.data(), size, size);
return chosen;
}
// Key selector stuff
void DrawButton(HKey key, HKey& clickedBtn, bool& wasClicked) {
if (ImGui::Button(HKeyNames[key])) {
clickedBtn = key;
wasClicked = true;
}
ImGui::SameLine();
}
int KeySelect(const char* label, int key) {
static int callNum = 0;
ImGui::PushID(label);
ImGui::BeginGroup();
if (ImGui::Button(HKeyNames[key])) {
ImGui::OpenPopup("Keys");
}
ImGui::SameLine();
ImGui::Text(label);
ImGui::EndGroup();
if (ImGui::BeginPopup("Keys")) {
HKey clickedBtn = HKey::NO_KEY;
bool wasClicked = false;
ImGui::BeginGroup();
DrawButton(HKey::ESC, clickedBtn, wasClicked);
DrawButton(HKey::F1, clickedBtn, wasClicked);
DrawButton(HKey::F2, clickedBtn, wasClicked);
DrawButton(HKey::F3, clickedBtn, wasClicked);
DrawButton(HKey::F4, clickedBtn, wasClicked);
DrawButton(HKey::F6, clickedBtn, wasClicked);
DrawButton(HKey::F6, clickedBtn, wasClicked);
DrawButton(HKey::F7, clickedBtn, wasClicked);
DrawButton(HKey::F8, clickedBtn, wasClicked);
DrawButton(HKey::F9, clickedBtn, wasClicked);
DrawButton(HKey::F10, clickedBtn, wasClicked);
ImGui::EndGroup();
ImGui::BeginGroup();
DrawButton(HKey::TILDE, clickedBtn, wasClicked);
DrawButton(HKey::N_1, clickedBtn, wasClicked);
DrawButton(HKey::N_2, clickedBtn, wasClicked);
DrawButton(HKey::N_3, clickedBtn, wasClicked);
DrawButton(HKey::N_4, clickedBtn, wasClicked);
DrawButton(HKey::N_5, clickedBtn, wasClicked);
DrawButton(HKey::N_6, clickedBtn, wasClicked);
DrawButton(HKey::N_7, clickedBtn, wasClicked);
DrawButton(HKey::N_8, clickedBtn, wasClicked);
DrawButton(HKey::N_9, clickedBtn, wasClicked);
DrawButton(HKey::N_0, clickedBtn, wasClicked);
DrawButton(HKey::MINUS, clickedBtn, wasClicked);
DrawButton(HKey::EQUAL, clickedBtn, wasClicked);
DrawButton(HKey::BS, clickedBtn, wasClicked);
ImGui::EndGroup();
ImGui::BeginGroup();
DrawButton(HKey::Tab, clickedBtn, wasClicked);
DrawButton(HKey::Q, clickedBtn, wasClicked);
DrawButton(HKey::W, clickedBtn, wasClicked);
DrawButton(HKey::E, clickedBtn, wasClicked);
DrawButton(HKey::R, clickedBtn, wasClicked);
DrawButton(HKey::T, clickedBtn, wasClicked);
DrawButton(HKey::Y, clickedBtn, wasClicked);
DrawButton(HKey::U, clickedBtn, wasClicked);
DrawButton(HKey::I, clickedBtn, wasClicked);
DrawButton(HKey::O, clickedBtn, wasClicked);
DrawButton(HKey::P, clickedBtn, wasClicked);
DrawButton(HKey::LBRACKET, clickedBtn, wasClicked);
DrawButton(HKey::RBRACKET, clickedBtn, wasClicked);
DrawButton(HKey::ENTER, clickedBtn, wasClicked);
ImGui::EndGroup();
ImGui::BeginGroup();
DrawButton(HKey::CAPS, clickedBtn, wasClicked);
DrawButton(HKey::A, clickedBtn, wasClicked);
DrawButton(HKey::S, clickedBtn, wasClicked);
DrawButton(HKey::D, clickedBtn, wasClicked);
DrawButton(HKey::F, clickedBtn, wasClicked);
DrawButton(HKey::G, clickedBtn, wasClicked);
DrawButton(HKey::H, clickedBtn, wasClicked);
DrawButton(HKey::J, clickedBtn, wasClicked);
DrawButton(HKey::K, clickedBtn, wasClicked);
DrawButton(HKey::L, clickedBtn, wasClicked);
DrawButton(HKey::SEMICOLON, clickedBtn, wasClicked);
DrawButton(HKey::SINGLE_QUOTE, clickedBtn, wasClicked);
DrawButton(HKey::BACKSLASH, clickedBtn, wasClicked);
DrawButton(HKey::NO_KEY, clickedBtn, wasClicked);
ImGui::EndGroup();
ImGui::BeginGroup();
DrawButton(HKey::LSHIFT, clickedBtn, wasClicked);
DrawButton(HKey::Z, clickedBtn, wasClicked);
DrawButton(HKey::X, clickedBtn, wasClicked);
DrawButton(HKey::C, clickedBtn, wasClicked);
DrawButton(HKey::V, clickedBtn, wasClicked);
DrawButton(HKey::B, clickedBtn, wasClicked);
DrawButton(HKey::N, clickedBtn, wasClicked);
DrawButton(HKey::M, clickedBtn, wasClicked);
DrawButton(HKey::COMMA, clickedBtn, wasClicked);
DrawButton(HKey::DOT, clickedBtn, wasClicked);
DrawButton(HKey::FRONTSLASH, clickedBtn, wasClicked);
DrawButton(HKey::RSHIFT, clickedBtn, wasClicked);
ImGui::EndGroup();
ImGui::BeginGroup();
DrawButton(HKey::CTRL, clickedBtn, wasClicked);
DrawButton(HKey::ALT, clickedBtn, wasClicked);
DrawButton(HKey::SPACE, clickedBtn, wasClicked);
DrawButton(HKey::HOME, clickedBtn, wasClicked);
DrawButton(HKey::INSERT, clickedBtn, wasClicked);
DrawButton(HKey::END, clickedBtn, wasClicked);
DrawButton(HKey::PAGE_DOWN, clickedBtn, wasClicked);
DrawButton(HKey::PAGE_UP, clickedBtn, wasClicked);
ImGui::EndGroup();
if (wasClicked) {
key = clickedBtn;
ImGui::CloseCurrentPopup();
}
ImGui::EndPopup();
}
ImGui::PopID();
return key;
}
};
================================================
FILE: LView/PyStructs.h
================================================
#pragma once
#include <boost/python/suite/indexing/map_indexing_suite.hpp>
#include <boost/python.hpp>
#include "GameObject.h"
#include "ConfigSet.h"
#include "Spell.h"
#include "PyGame.h"
#include "ItemInfo.h"
#include "PyImguiInterface.h"
#include "Utils.h"
using namespace boost::python;
/// Defines the mapping between the C++ and Python classes
BOOST_PYTHON_MODULE(lview) {
class_<SpellInfo>("SpellInfo")
.def_readonly("width", &SpellInfo::width)
.def_readonly("cast_radius", &SpellInfo::castRadius)
.def_readonly("speed", &SpellInfo::speed)
.def_readonly("cast_range", &SpellInfo::castRange)
.def_readonly("delay", &SpellInfo::delay)
.def_readonly("height", &SpellInfo::height)
.def_readonly("icon", &SpellInfo::icon)
.def_readonly("travel_time", &SpellInfo::travelTime)
;
class_<ItemSlot>("Item")
.def_readonly("slot", &ItemSlot::slot)
.def_readonly("id", &ItemSlot::GetId)
.def_readonly("cost", &ItemSlot::GetCost)
.def_readonly("movement_speed", &ItemSlot::GetMovementSpeed)
.def_readonly("health", &ItemSlot::GetHealth)
.def_readonly("crit", &ItemSlot::GetCrit)
.def_readonly("ability_power", &ItemSlot::GetAbilityPower)
.def_readonly("mana", &ItemSlot::GetMana)
.def_readonly("armour", &ItemSlot::GetArmour)
.def_readonly("magic_resist", &ItemSlot::GetMagicResist)
.def_readonly("physical_damage", &ItemSlot::GetPhysicalDamage)
.def_readonly("attack_speed", &ItemSlot::GetAttackSpeed)
.def_readonly("life_steal", &ItemSlot::GetLifeSteal)
.def_readonly("hp_regen", &ItemSlot::GetHpRegen)
.def_readonly("movement_speed_percent", &ItemSlot::GetMovementSpeedPercent)
;
class_<Spell>("Spell", init<SpellSlot>())
.def_readonly("name", &Spell::name)
.def_readonly("slot", &Spell::slot)
.def_readonly("summoner_spell_type", &Spell::summonerSpellType)
.def_readonly("level", &Spell::level)
.def_readonly("ready_at", &Spell::readyAt)
.def_readonly("value", &Spell::value)
.def("get_current_cooldown", &Spell::GetRemainingCooldown)
.def("trigger", &Spell::Trigger)
.def_readonly("width", &Spell::GetWidth)
.def_readonly("cast_radius", &Spell::GetCastRadius)
.def_readonly("speed", &Spell::GetSpeed)
.def_readonly("cast_range", &Spell::GetCastRange)
.def_readonly("delay", &Spell::GetDelay)
.def_readonly("height", &Spell::GetHeight)
.def_readonly("icon", &Spell::GetIcon)
.def_readonly("travel_time", &Spell::GetTravelTime)
.def("has_tags", &Spell::HasSpellFlags)
.def("equal_tags", &Spell::EqualSpellFlags)
;
class_<GameObject>("Obj")
.def_readonly("address", &GameObject::address)
.def_readonly("health", &GameObject::health)
.def_readonly("max_health", &GameObject::maxHealth)
.def_readonly("base_atk", &GameObject::baseAttack)
.def_readonly("bonus_atk", &GameObject::bonusAttack)
.def_readonly("armour", &GameObject::armour)
.def_readonly("magic_resist", &GameObject::magicResist)
.def_readonly("movement_speed", &GameObject::movementSpeed)
.def_readonly("is_alive", &GameObject::isAlive)
.def_readonly("name", &GameObject::name)
.def_readonly("pos", &GameObject::position)
.def_readonly("prev_pos", &GameObject::previousPosition)
.def_readonly("duration", &GameObject::duration)
.def_readonly("is_visible", &GameObject::isVisible)
.def_readonly("last_visible_at", &GameObject::lastVisibleAt)
.def_readonly("id", &GameObject::objectIndex)
.def_readonly("net_id", &GameObject::networkId)
.def_readonly("crit", &GameObject::crit)
.def_readonly("crit_multi", &GameObject::critMulti)
.def_readonly("ap", &GameObject::abilityPower)
.def_readonly("atk_speed_multi", &GameObject::atkSpeedMulti)
.def_readonly("team", &GameObject::team)
.def_readonly("acquisition_radius", &GameObject::GetAcquisitionRadius)
.def_readonly("selection_radius", &GameObject::GetSelectionRadius)
.def_readonly("pathing_radius", &GameObject::GetPathingRadius)
.def_readonly("gameplay_radius", &GameObject::GetGameplayRadius)
.def_readonly("basic_missile_speed", &GameObject::GetBasicAttackMissileSpeed)
.def_readonly("basic_atk_windup", &GameObject::GetBasicAttackWindup)
.def_readonly("atk_speed_ratio", &GameObject::GetAttackSpeedRatio)
.def_readonly("base_ms", &GameObject::GetBaseMovementSpeed)
.def_readonly("base_atk_speed", &GameObject::GetBaseAttackSpeed)
.def_readonly("base_atk_range", &GameObject::GetBaseAttackRange)
.def_readonly("atk_range", &GameObject::GetAttackRange)
.def_readonly("is_ranged", &GameObject::IsRanged)
.def("__eq__", &GameObject::IsEqualTo)
.def("__ne__", &GameObject::IsNotEqualTo)
.def("is_ally_to", &GameObject::IsAllyTo)
.def("is_enemy_to", &GameObject::IsEnemyTo)
.def("has_tags", &GameObject::HasUnitTags)
// Champion
.def_readonly("Q", &GameObject::Q)
.def_readonly("W", &GameObject::W)
.def_readonly("E", &GameObject::E)
.def_readonly("R", &GameObject::R)
.def_readonly("D", &GameObject::D)
.def_readonly("F", &GameObject::F)
.def_readonly("items", &GameObject::ItemsToPyList)
.def_readonly("lvl", &GameObject::level)
.def("get_summoner_spell", &GameObject::GetSummonerSpell, return_value_policy<reference_existing_object>())
// Missile
.def_readonly("src_id", &GameObject::srcIndex)
.def_readonly("dest_id", &GameObject::destIndex)
.def_readonly("start_pos", &GameObject::startPos)
.def_readonly("end_pos", &GameObject::endPos)
// Spell
.def_readonly("width", &GameObject::GetWidth)
.def_readonly("cast_radius", &GameObject::GetCastRadius)
.def_readonly("speed", &GameObject::GetSpeed)
.def_readonly("cast_range", &GameObject::GetCastRange)
.def_readonly("delay", &GameObject::GetDelay)
.def_readonly("height", &GameObject::GetHeight)
.def_readonly("icon", &GameObject::GetIcon)
.def_readonly("travel_time", &GameObject::GetTravelTime)
.def("has_tags", &GameObject::HasSpellFlags)
.def("equal_tags", &GameObject::EqualSpellFlags)
;
enum_<SpellFlags>("SpellFlag")
.value("AffectAllyChampion", SpellFlags::AffectAllyChampion)
.value("AffectEnemyChampion", SpellFlags::AffectEnemyChampion)
.value("AffectAllyLaneMinion", SpellFlags::AffectAllyLaneMinion)
.value("AffectEnemyLaneMinion", SpellFlags::AffectEnemyLaneMinion)
.value("AffectAllyWard", SpellFlags::AffectAllyWard)
.value("AffectEnemyWard", SpellFlags::AffectEnemyWard)
.value("AffectAllyTurret", SpellFlags::AffectAllyTurret)
.value("AffectEnemyTurret", SpellFlags::AffectEnemyTurret)
.value("AffectAllyInhibs", SpellFlags::AffectAllyInhibs)
.value("AffectEnemyInhibs", SpellFlags::AffectEnemyInhibs)
.value("AffectAllyNonLaneMinion", SpellFlags::AffectAllyNonLaneMinion)
.value("AffectJungleMonster", SpellFlags::AffectJungleMonster)
.value("AffectEnemyNonLaneMinion", SpellFlags::AffectEnemyNonLaneMinion)
.value("AffectAlwaysSelf", SpellFlags::AffectAlwaysSelf)
.value("AffectNeverSelf", SpellFlags::AffectNeverSelf)
.value("ProjectDestination", SpellFlags::ProjectedDestination)
.value("AffectAllyMob", SpellFlags::AffectAllyMob)
.value("AffectEnemyMob", SpellFlags::AffectEnemyMob)
.value("AffectAllyGeneric", SpellFlags::AffectAllyGeneric)
.value("AffectEnemyGeneric", SpellFlags::AffectEnemyGeneric)
;
class_<PyGame>("Game")
.def_readonly("champs", &PyGame::champs)
.def_readonly("minions", &PyGame::minions)
.def_readonly("jungle", &PyGame::jungle)
.def_readonly("turrets", &PyGame::turrets)
.def_readonly("missiles", &PyGame::missiles)
.def_readonly("others", &PyGame::others)
.def_readonly("hovered_obj", &PyGame::GetHoveredObject)
.def_readonly("player", &PyGame::GetLocalChampion)
.def_readonly("time", &PyGame::gameTime)
.def_readonly("map", &PyGame::GetMap)
.def("get_obj_by_id", &PyGame::GetObjectByIndex, return_value_policy<reference_existing_object>())
.def("get_obj_by_netid", &PyGame::GetObjectByNetId, return_value_policy<reference_existing_object>())
.def("is_point_on_screen", &PyGame::IsScreenPointOnScreen, PyGame::IsScreenPointOnScreenOverloads())
.def("is_point_on_screen", &PyGame::IsWorldPointOnScreen, PyGame::IsWorldPointOnScreenOverloads())
.def("world_to_screen", &PyGame::WorldToScreen)
.def("world_to_minimap", &PyGame::WorldToMinimap)
.def("distance_to_minimap", &PyGame::DistanceToMinimap)
.def("distance", &PyGame::Distance)
.def("draw_line", &PyGame::DrawLine)
.def("draw_circle", &PyGame::DrawCircle)
.def("draw_circle_filled", &PyGame::DrawCircleFilled)
.def("draw_circle_world", &PyGame::DrawCircleWorld)
.def("draw_circle_world_filled", &PyGame::DrawCircleWorldFilled)
.def("draw_text", &PyGame::DrawTxt)
.def("draw_rect", &PyGame::DrawRect, PyGame::DrawRectOverloads())
.def("draw_rect_filled", &PyGame::DrawRectFilled, PyGame::DrawRectFilledOverloads())
.def("draw_rect_world", &PyGame::DrawRectWorld)
.def("draw_triangle_world", &PyGame::DrawTriangleWorld)
.def("draw_triangle_world_filled", &PyGame::DrawTriangleWorldFilled)
.def("draw_button", &PyGame::DrawButton, PyGame::DrawButtonOverloads())
.def("draw_image", &PyGame::DrawImage)
.def("draw_image", &PyGame::DrawImageRounded)
.def("get_spell_info", &PyGame::GetSpellInfo, return_value_policy<reference_existing_object>())
.def("linear_collision", &PyGame::LinearCollision)
.def("hp_bar_pos", &PyGame::HpBarPos)
.def("was_key_pressed", &PyGame::WasKeyPressed)
.def("is_key_down", &PyGame::IsKeyDown)
.def("press_key", &PyGame::PressKey)
.def("press_left_click", &PyGame::PressLeftClick)
.def("press_right_click", &PyGame::PressRightClick)
.def("click_at", &PyGame::ClickAt)
.def("move_cursor", &PyGame::MoveCursor)
.def("get_cursor", &PyGame::GetCursor)
;
enum_<MapType>("MapType")
.value("SummonersRift", MapType::SUMMONERS_RIFT)
.value("HowlingAbyss", MapType::HOWLING_ABYSS)
;
class_<MapObject>("M
gitextract_vav3an8l/
├── .gitignore
├── GameplayScripts/
│ ├── auto_smite.py
│ ├── auto_spell.py
│ ├── base_script.py
│ ├── champ_tracker.py
│ ├── commons/
│ │ ├── __init__.py
│ │ ├── damage_calculator.py
│ │ ├── items.py
│ │ ├── skills.py
│ │ └── targeting.py
│ ├── drawings.py
│ ├── execution_notifier.py
│ ├── map_awareness.py
│ ├── object_viewer.py
│ ├── orb_walker.py
│ ├── spell_tracker.py
│ ├── tf_card_picker.py
│ ├── util_make_heightmap.py____
│ └── vision_tracker.py
├── LView/
│ ├── AntiCrack.cpp
│ ├── AntiCrack.h
│ ├── Benchmark.h
│ ├── ConfigSet.cpp
│ ├── ConfigSet.h
│ ├── GameData.cpp
│ ├── GameData.h
│ ├── GameObject.cpp
│ ├── GameObject.h
│ ├── GameRenderer.cpp
│ ├── GameRenderer.h
│ ├── Input.cpp
│ ├── Input.h
│ ├── ItemInfo.h
│ ├── ItemSlot.cpp
│ ├── ItemSlot.h
│ ├── LView.cpp
│ ├── LView.vcxproj
│ ├── LView.vcxproj.filters
│ ├── LView.vcxproj.user
│ ├── LeagueMemoryReader.cpp
│ ├── LeagueMemoryReader.h
│ ├── MapObject.cpp
│ ├── MapObject.h
│ ├── MemSnapshot.h
│ ├── MemoryLoadable.h
│ ├── Offsets.cpp
│ ├── Offsets.h
│ ├── Overlay.cpp
│ ├── Overlay.h
│ ├── PyGame.h
│ ├── PyImguiInterface.h
│ ├── PyStructs.h
│ ├── Script.cpp
│ ├── Script.h
│ ├── ScriptManager.cpp
│ ├── ScriptManager.h
│ ├── Spell.cpp
│ ├── Spell.h
│ ├── SpellInfo.cpp
│ ├── SpellInfo.h
│ ├── SpellInterface.h
│ ├── Structs.cpp
│ ├── Structs.h
│ ├── Texture2D.cpp
│ ├── Texture2D.h
│ ├── UnitInfo.cpp
│ ├── UnitInfo.h
│ ├── Utils.cpp
│ ├── Utils.h
│ ├── Vector.h
│ ├── boost_container-vc142-mt-gd-x32-1_75.pdb
│ ├── boost_json-vc142-mt-gd-x32-1_75.pdb
│ ├── boost_python39-vc142-mt-gd-x32-1_75.pdb
│ ├── config.ini
│ ├── data/
│ │ ├── ItemData.json
│ │ ├── SpellData.json
│ │ ├── SpellDataCustom.json
│ │ └── UnitData.json
│ ├── external_includes/
│ │ ├── Python-ast.h
│ │ ├── Python.h
│ │ ├── abstract.h
│ │ ├── asdl.h
│ │ ├── ast.h
│ │ ├── bitset.h
│ │ ├── bltinmodule.h
│ │ ├── boolobject.h
│ │ ├── bytearrayobject.h
│ │ ├── bytesobject.h
│ │ ├── cellobject.h
│ │ ├── ceval.h
│ │ ├── classobject.h
│ │ ├── code.h
│ │ ├── codecs.h
│ │ ├── compile.h
│ │ ├── complexobject.h
│ │ ├── context.h
│ │ ├── cpython/
│ │ │ ├── abstract.h
│ │ │ ├── bytearrayobject.h
│ │ │ ├── bytesobject.h
│ │ │ ├── ceval.h
│ │ │ ├── code.h
│ │ │ ├── dictobject.h
│ │ │ ├── fileobject.h
│ │ │ ├── fileutils.h
│ │ │ ├── frameobject.h
│ │ │ ├── import.h
│ │ │ ├── initconfig.h
│ │ │ ├── interpreteridobject.h
│ │ │ ├── listobject.h
│ │ │ ├── methodobject.h
│ │ │ ├── object.h
│ │ │ ├── objimpl.h
│ │ │ ├── pyerrors.h
│ │ │ ├── pylifecycle.h
│ │ │ ├── pymem.h
│ │ │ ├── pystate.h
│ │ │ ├── sysmodule.h
│ │ │ ├── traceback.h
│ │ │ ├── tupleobject.h
│ │ │ └── unicodeobject.h
│ │ ├── datetime.h
│ │ ├── descrobject.h
│ │ ├── dictobject.h
│ │ ├── dynamic_annotations.h
│ │ ├── enumobject.h
│ │ ├── errcode.h
│ │ ├── eval.h
│ │ ├── exports.h
│ │ ├── fileobject.h
│ │ ├── fileutils.h
│ │ ├── floatobject.h
│ │ ├── frameobject.h
│ │ ├── funcobject.h
│ │ ├── genericaliasobject.h
│ │ ├── genobject.h
│ │ ├── graminit.h
│ │ ├── grammar.h
│ │ ├── import.h
│ │ ├── internal/
│ │ │ ├── pegen_interface.h
│ │ │ ├── pycore_abstract.h
│ │ │ ├── pycore_accu.h
│ │ │ ├── pycore_atomic.h
│ │ │ ├── pycore_bytes_methods.h
│ │ │ ├── pycore_byteswap.h
│ │ │ ├── pycore_call.h
│ │ │ ├── pycore_ceval.h
│ │ │ ├── pycore_code.h
│ │ │ ├── pycore_condvar.h
│ │ │ ├── pycore_context.h
│ │ │ ├── pycore_dtoa.h
│ │ │ ├── pycore_fileutils.h
│ │ │ ├── pycore_gc.h
│ │ │ ├── pycore_getopt.h
│ │ │ ├── pycore_gil.h
│ │ │ ├── pycore_hamt.h
│ │ │ ├── pycore_hashtable.h
│ │ │ ├── pycore_import.h
│ │ │ ├── pycore_initconfig.h
│ │ │ ├── pycore_interp.h
│ │ │ ├── pycore_object.h
│ │ │ ├── pycore_pathconfig.h
│ │ │ ├── pycore_pyerrors.h
│ │ │ ├── pycore_pyhash.h
│ │ │ ├── pycore_pylifecycle.h
│ │ │ ├── pycore_pymem.h
│ │ │ ├── pycore_pystate.h
│ │ │ ├── pycore_runtime.h
│ │ │ ├── pycore_sysmodule.h
│ │ │ ├── pycore_traceback.h
│ │ │ ├── pycore_tupleobject.h
│ │ │ └── pycore_warnings.h
│ │ ├── interpreteridobject.h
│ │ ├── intrcheck.h
│ │ ├── iterobject.h
│ │ ├── listobject.h
│ │ ├── longintrepr.h
│ │ ├── longobject.h
│ │ ├── marshal.h
│ │ ├── memoryobject.h
│ │ ├── methodobject.h
│ │ ├── modsupport.h
│ │ ├── moduleobject.h
│ │ ├── namespaceobject.h
│ │ ├── node.h
│ │ ├── object.h
│ │ ├── objimpl.h
│ │ ├── odictobject.h
│ │ ├── opcode.h
│ │ ├── osdefs.h
│ │ ├── osmodule.h
│ │ ├── parsetok.h
│ │ ├── patchlevel.h
│ │ ├── picklebufobject.h
│ │ ├── py_curses.h
│ │ ├── pyarena.h
│ │ ├── pycapsule.h
│ │ ├── pyconfig.h
│ │ ├── pyctype.h
│ │ ├── pydebug.h
│ │ ├── pydtrace.h
│ │ ├── pyerrors.h
│ │ ├── pyexpat.h
│ │ ├── pyfpe.h
│ │ ├── pyframe.h
│ │ ├── pyhash.h
│ │ ├── pylifecycle.h
│ │ ├── pymacconfig.h
│ │ ├── pymacro.h
│ │ ├── pymath.h
│ │ ├── pymem.h
│ │ ├── pyport.h
│ │ ├── pystate.h
│ │ ├── pystrcmp.h
│ │ ├── pystrhex.h
│ │ ├── pystrtod.h
│ │ ├── pythonrun.h
│ │ ├── pythread.h
│ │ ├── pytime.h
│ │ ├── rangeobject.h
│ │ ├── setobject.h
│ │ ├── sliceobject.h
│ │ ├── structmember.h
│ │ ├── structseq.h
│ │ ├── symtable.h
│ │ ├── sysmodule.h
│ │ ├── token.h
│ │ ├── traceback.h
│ │ ├── tracemalloc.h
│ │ ├── tupleobject.h
│ │ ├── typeslots.h
│ │ ├── ucnhash.h
│ │ ├── unicodeobject.h
│ │ ├── warnings.h
│ │ └── weakrefobject.h
│ ├── external_libs/
│ │ ├── DxErr.lib
│ │ ├── DxErr9.lib
│ │ ├── X3DAudio.lib
│ │ ├── XAPOFX.lib
│ │ ├── XInput.lib
│ │ ├── _tkinter.lib
│ │ ├── boost_python39-vc142-mt-gd-x32-1_75.lib
│ │ ├── boost_python39-vc142-mt-x32-1_75.lib
│ │ ├── d3d10.lib
│ │ ├── d3d10_1.lib
│ │ ├── d3d11_beta.lib
│ │ ├── d3d9.lib
│ │ ├── d3dcompiler.lib
│ │ ├── d3dx10.lib
│ │ ├── d3dx10d.lib
│ │ ├── d3dx11.lib
│ │ ├── d3dx9.lib
│ │ ├── d3dx9d.lib
│ │ ├── d3dxof.lib
│ │ ├── ddraw.lib
│ │ ├── dinput8.lib
│ │ ├── dsetup.lib
│ │ ├── dsound.lib
│ │ ├── dxgi.lib
│ │ ├── dxgi_beta.lib
│ │ ├── dxguid.lib
│ │ ├── libboost_container-vc142-mt-gd-x32-1_75.lib
│ │ ├── libboost_container-vc142-mt-x32-1_75.lib
│ │ ├── libboost_json-vc142-mt-gd-x32-1_75.lib
│ │ ├── libboost_json-vc142-mt-x32-1_75.lib
│ │ ├── python3.lib
│ │ ├── python39.lib
│ │ ├── python39.pdb
│ │ ├── python39_d.lib
│ │ ├── python39_d.pdb
│ │ ├── python3_d.lib
│ │ ├── xapobase.lib
│ │ └── xapobased.lib
│ ├── imconfig.h
│ ├── imgui.cpp
│ ├── imgui.h
│ ├── imgui.ini
│ ├── imgui_demo.cpp
│ ├── imgui_draw.cpp
│ ├── imgui_impl_dx11.cpp
│ ├── imgui_impl_dx11.h
│ ├── imgui_impl_win32.cpp
│ ├── imgui_impl_win32.h
│ ├── imgui_internal.h
│ ├── imgui_log.txt
│ ├── imgui_tables.cpp
│ ├── imgui_widgets.cpp
│ ├── imstb_rectpack.h
│ ├── imstb_textedit.h
│ ├── imstb_truetype.h
│ └── stb_image.h
├── LView.sln
├── README.md
└── UtilityScripts/
├── DownloadIcons.py
├── DownloadUnitData.py
├── GenerateItemData.py
└── GenerateUnitData.py
SYMBOL INDEX (1856 symbols across 163 files)
FILE: GameplayScripts/auto_smite.py
function lview_load_cfg (line 14) | def lview_load_cfg(cfg):
function lview_save_cfg (line 19) | def lview_save_cfg(cfg):
function lview_draw_settings (line 24) | def lview_draw_settings(game, ui):
function lview_update (line 29) | def lview_update(game, ui):
FILE: GameplayScripts/auto_spell.py
function lview_load_cfg (line 21) | def lview_load_cfg(cfg):
function lview_save_cfg (line 26) | def lview_save_cfg(cfg):
function lview_draw_settings (line 31) | def lview_draw_settings(game, ui):
function lview_update (line 38) | def lview_update(game, ui):
FILE: GameplayScripts/base_script.py
function lview_load_cfg (line 10) | def lview_load_cfg(cfg):
function lview_save_cfg (line 13) | def lview_save_cfg(cfg):
function lview_draw_settings (line 16) | def lview_draw_settings(game, ui):
function lview_update (line 19) | def lview_update(game, ui):
FILE: GameplayScripts/champ_tracker.py
function lview_load_cfg (line 19) | def lview_load_cfg(cfg):
function lview_save_cfg (line 23) | def lview_save_cfg(cfg):
function lview_draw_settings (line 27) | def lview_draw_settings(game, ui):
function lview_update (line 33) | def lview_update(game, ui):
FILE: GameplayScripts/commons/damage_calculator.py
class DamageType (line 4) | class DamageType(enum.Enum):
class DamageSpecification (line 9) | class DamageSpecification:
method calculate_damage (line 27) | def calculate_damage(self, source, target):
function get_damage_specification (line 85) | def get_damage_specification(champ) -> Optional[DamageSpecification]:
FILE: GameplayScripts/commons/items.py
function crit_from_items (line 3) | def crit_from_items(items):
function onhit_guinsoo (line 9) | def onhit_guinsoo(src, target):
function onhit_rageknife (line 12) | def onhit_rageknife(src, target):
function onhit_noonquiver (line 15) | def onhit_noonquiver(src, target):
function onhit_recurve_bow (line 18) | def onhit_recurve_bow(src, target):
function onhit_botrk (line 21) | def onhit_botrk(src, target):
function onhit_doran_ring (line 27) | def onhit_doran_ring(src, target):
function onhit_nashors (line 30) | def onhit_nashors(src, target):
function onhit_wits_end (line 33) | def onhit_wits_end(src, target):
function get_onhit_physical (line 50) | def get_onhit_physical(source, target):
function get_onhit_magical (line 60) | def get_onhit_magical(source, target):
FILE: GameplayScripts/commons/skills.py
class SFlag (line 10) | class SFlag:
class Spell (line 24) | class Spell:
method __init__ (line 25) | def __init__(self, name, missile_names, flags, delay = 0.0):
function draw_prediction_info (line 255) | def draw_prediction_info(game, ui):
function get_skillshot_range (line 271) | def get_skillshot_range(game, skill_name):
function is_skillshot (line 285) | def is_skillshot(skill_name):
function get_missile_parent_spell (line 289) | def get_missile_parent_spell(missile_name):
function is_champ_supported (line 293) | def is_champ_supported(champ):
function is_skillshot_cone (line 297) | def is_skillshot_cone(skill_name):
function is_last_hitable (line 302) | def is_last_hitable(game, player, enemy):
function castpoint_for_collision (line 323) | def castpoint_for_collision(game, spell, caster, target):
FILE: GameplayScripts/commons/targeting.py
class Target (line 3) | class Target(Enum):
class TargetingConfig (line 8) | class TargetingConfig:
method draw (line 19) | def draw(self, ui):
method get_target (line 25) | def get_target(self, game, range):
method find_target (line 42) | def find_target(self, game, array, range, value_extractor):
method load_from_cfg (line 57) | def load_from_cfg(self, cfg):
method save_to_cfg (line 62) | def save_to_cfg(self, cfg):
FILE: GameplayScripts/drawings.py
function lview_load_cfg (line 28) | def lview_load_cfg(cfg):
function lview_save_cfg (line 42) | def lview_save_cfg(cfg):
function lview_draw_settings (line 56) | def lview_draw_settings(game, ui):
function draw_rect (line 74) | def draw_rect(game, start_pos, end_pos, radius, color):
function draw_atk_range (line 88) | def draw_atk_range(game, player):
function draw_turret_ranges (line 93) | def draw_turret_ranges(game, player):
function draw_minion_last_hit (line 104) | def draw_minion_last_hit(game, player):
function draw_skillshots (line 112) | def draw_skillshots(game, player):
function lview_update (line 153) | def lview_update(game, ui):
FILE: GameplayScripts/execution_notifier.py
function lview_load_cfg (line 11) | def lview_load_cfg(cfg):
function lview_save_cfg (line 14) | def lview_save_cfg(cfg):
function lview_draw_settings (line 17) | def lview_draw_settings(game, ui):
function lview_update (line 20) | def lview_update(game, ui):
FILE: GameplayScripts/map_awareness.py
function lview_load_cfg (line 14) | def lview_load_cfg(cfg):
function lview_save_cfg (line 21) | def lview_save_cfg(cfg):
function lview_draw_settings (line 28) | def lview_draw_settings(game, ui):
function draw_champ_world_icon (line 38) | def draw_champ_world_icon(game, champ, pos, size, draw_distance = False,...
function show_alert (line 65) | def show_alert(game, champ):
function show_last_pos_world (line 76) | def show_last_pos_world(game, champ):
function show_last_pos_minimap (line 82) | def show_last_pos_minimap(game, champ):
function lview_update (line 88) | def lview_update(game, ui):
FILE: GameplayScripts/object_viewer.py
function draw_spell (line 10) | def draw_spell(spell, ui):
function draw_items (line 29) | def draw_items(items, ui):
function draw_missile (line 49) | def draw_missile(obj, ui):
function draw_game_object (line 70) | def draw_game_object(obj, ui, additional_draw = None, set_open=False):
function draw_champion (line 123) | def draw_champion(obj, ui):
function draw_list (line 140) | def draw_list(label, objs, ui, draw_func):
function lview_load_cfg (line 146) | def lview_load_cfg(cfg):
function lview_save_cfg (line 149) | def lview_save_cfg(cfg):
function lview_draw_settings (line 152) | def lview_draw_settings(objs, ui):
function lview_update (line 155) | def lview_update(game, ui):
FILE: GameplayScripts/orb_walker.py
function lview_load_cfg (line 25) | def lview_load_cfg(cfg):
function lview_save_cfg (line 36) | def lview_save_cfg(cfg):
function lview_draw_settings (line 47) | def lview_draw_settings(game, ui):
function find_minion_target (line 59) | def find_minion_target(game):
function get_target (line 70) | def get_target(game):
function lview_update (line 79) | def lview_update(game, ui):
FILE: GameplayScripts/spell_tracker.py
function get_color_for_cooldown (line 13) | def get_color_for_cooldown(cooldown):
function draw_spell (line 20) | def draw_spell(game, spell, pos, size, show_lvl = True, show_cd = True):
function draw_overlay_on_champ (line 33) | def draw_overlay_on_champ(game, champ):
function lview_update (line 56) | def lview_update(game, ui):
function lview_load_cfg (line 70) | def lview_load_cfg(cfg):
function lview_save_cfg (line 77) | def lview_save_cfg(cfg):
function lview_draw_settings (line 84) | def lview_draw_settings(game, ui):
FILE: GameplayScripts/tf_card_picker.py
function lview_load_cfg (line 14) | def lview_load_cfg(cfg):
function lview_save_cfg (line 20) | def lview_save_cfg(cfg):
function lview_draw_settings (line 26) | def lview_draw_settings(game, ui):
function lview_update (line 32) | def lview_update(game, ui):
FILE: GameplayScripts/vision_tracker.py
function lview_load_cfg (line 43) | def lview_load_cfg(cfg):
function lview_save_cfg (line 53) | def lview_save_cfg(cfg):
function lview_draw_settings (line 63) | def lview_draw_settings(game, ui):
function draw (line 87) | def draw(game, obj, radius, show_circle_world, show_circle_map, icon):
function lview_update (line 104) | def lview_update(game, ui):
FILE: LView/AntiCrack.cpp
function exec (line 7) | std::string exec(const char* cmd) {
function HashHardwareComponents (line 20) | std::string HashHardwareComponents(std::string components) {
FILE: LView/AntiCrack.h
function namespace (line 5) | namespace AntiCrack {
FILE: LView/Benchmark.h
type UIBenchmark (line 3) | struct UIBenchmark {
type ReadBenchmark (line 8) | struct ReadBenchmark {
type ViewBenchmark (line 13) | struct ViewBenchmark {
FILE: LView/ConfigSet.h
function class (line 6) | class ConfigSet {
FILE: LView/GameData.cpp
function UnitInfo (line 46) | UnitInfo * GameData::GetUnitInfoByName(std::string& name)
function SpellInfo (line 54) | SpellInfo * GameData::GetSpellInfoByName(std::string& name)
function ItemInfo (line 62) | ItemInfo * GameData::GetItemInfoById(int id)
function parse_json_file (line 70) | boost::json::value parse_json_file(std::string& path) {
function json_to_double (line 94) | double json_to_double(boost::json::value val) {
FILE: LView/GameData.h
function class (line 9) | class GameData {
FILE: LView/GameObject.cpp
function Spell (line 194) | Spell* GameObject::GetSummonerSpell(SummonerSpellType type) {
function list (line 206) | list GameObject::ItemsToPyList() {
FILE: LView/GameRenderer.cpp
function Vector2 (line 34) | Vector2 GameRenderer::WorldToScreen(const Vector3& pos) const {
function Vector2 (line 59) | Vector2 GameRenderer::WorldToMinimap(const Vector3& pos, const Vector2& ...
FILE: LView/GameRenderer.h
function class (line 7) | class GameRenderer {
FILE: LView/Input.cpp
function Vector2 (line 62) | Vector2 Input::GetCursorPosition()
FILE: LView/Input.h
type HKey (line 5) | enum HKey {
function namespace (line 18) | namespace Input {
FILE: LView/ItemInfo.h
type ItemInfo (line 5) | struct ItemInfo {
FILE: LView/ItemSlot.h
function class (line 4) | class ItemSlot {
FILE: LView/LView.cpp
function main (line 29) | int main()
function MainLoop (line 72) | void MainLoop(Overlay& overlay, LeagueMemoryReader& reader) {
FILE: LView/LeagueMemoryReader.h
function class (line 17) | class LeagueMemoryReader {
FILE: LView/MapObject.h
type MapType (line 5) | enum MapType {
function class (line 10) | class MapObject {
FILE: LView/MemSnapshot.h
type MemSnapshot (line 11) | struct MemSnapshot {
FILE: LView/MemoryLoadable.h
function class (line 5) | class MemoryLoadable {
FILE: LView/Offsets.h
function class (line 5) | class Offsets {
FILE: LView/Overlay.cpp
function ID3D11Device (line 302) | ID3D11Device * Overlay::GetDxDevice()
function LRESULT (line 395) | LRESULT WINAPI Overlay::WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR...
FILE: LView/Overlay.h
function class (line 32) | class Overlay {
FILE: LView/PyGame.h
function class (line 9) | class PyGame {
function DrawCircle (line 66) | void DrawCircle(const Vector2& center, float radius, int numPoints, floa...
function DrawCircleFilled (line 70) | void DrawCircleFilled(const Vector2& center, float radius, int numPoints...
function DrawTxt (line 74) | void DrawTxt(const Vector2& pos, const char* text, const ImVec4& color) {
function DrawRectWorld (line 88) | void DrawRectWorld(const Vector3& p1, const Vector3& p2, const Vector3& ...
function PressKey (line 162) | void PressKey(int key) {
function WasKeyPressed (line 166) | bool WasKeyPressed(int key) {
function PressLeftClick (line 170) | void PressLeftClick() {
function PressRightClick (line 174) | void PressRightClick() {
function ClickAt (line 178) | void ClickAt(bool leftClick, const Vector2& pos) {
function IsKeyDown (line 182) | bool IsKeyDown(int key) {
function Vector2 (line 186) | Vector2 GetCursor() {
function SpellInfo (line 190) | SpellInfo* GetSpellInfo(const char* spellName) {
function Vector2 (line 195) | Vector2 LinearCollision(const Vector2& p1, const Vector2& d1, const Vect...
function MoveCursor (line 224) | void MoveCursor(const Vector2& pos) {
function Distance (line 228) | float Distance(GameObject* first, GameObject* second) {
function GameObject (line 244) | GameObject* GetObjectByIndex(short index) {
function GameObject (line 256) | GameObject* GetObjectByNetId(int net_id) {
function PyGame (line 261) | static PyGame ConstructFromMemSnapshot(MemSnapshot& snapshot) {
FILE: LView/PyImguiInterface.h
function class (line 7) | class PyImguiInterface {
function SliderFloat (line 70) | float SliderFloat(const char* label, float val, float valMin, float valM...
function Separator (line 75) | void Separator() {
function CollapsingHeader (line 79) | bool CollapsingHeader(const char* text) {
function TreeNode (line 83) | bool TreeNode(const char* text) {
function SetNextItemOpen (line 87) | void SetNextItemOpen() {
function TreePop (line 91) | void TreePop() {
function SameLine (line 95) | void SameLine() {
function BeginGroup (line 99) | void BeginGroup() {
function EndGroup (line 103) | void EndGroup() {
function ListBox (line 107) | int ListBox(const char* label, list items, int chosen) {
function DrawButton (line 121) | void DrawButton(HKey key, HKey& clickedBtn, bool& wasClicked) {
function KeySelect (line 129) | int KeySelect(const char* label, int key) {
FILE: LView/PyStructs.h
function BOOST_PYTHON_MODULE (line 18) | BOOST_PYTHON_MODULE(lview) {
FILE: LView/Script.cpp
function GetPyError (line 4) | std::string GetPyError()
FILE: LView/Script.h
function class (line 11) | class Script {
FILE: LView/ScriptManager.h
function class (line 6) | class ScriptManager {
FILE: LView/Spell.h
type class (line 11) | enum class
type class (line 16) | enum class
FILE: LView/SpellInfo.cpp
function SpellInfo (line 4) | SpellInfo * SpellInfo::AddFlags(SpellFlags flags)
FILE: LView/SpellInfo.h
type SpellFlags (line 6) | enum SpellFlags {
function class (line 35) | class SpellInfo {
FILE: LView/SpellInterface.h
function class (line 5) | class SpellInterface {
FILE: LView/Texture2D.cpp
function Texture2D (line 3) | Texture2D* Texture2D::LoadFromFile(ID3D11Device* dxDevice, std::string f...
FILE: LView/Texture2D.h
function class (line 6) | class Texture2D {
FILE: LView/UnitInfo.h
type UnitTag (line 9) | enum UnitTag {
type UnitInfo (line 68) | struct UnitInfo {
FILE: LView/Utils.cpp
function DWORD (line 6) | DWORD Mem::ReadDWORD(HANDLE hProcess, DWORD addr) {
function DWORD (line 22) | DWORD Mem::ReadDWORDFromBuffer(void* buff, int position) {
function BOOL (line 28) | BOOL Process::IsProcessRunning(DWORD pid)
FILE: LView/Utils.h
function class (line 13) | class WinApiException : public std::runtime_error {
function namespace (line 51) | namespace Mem {
function namespace (line 64) | namespace Process {
function namespace (line 69) | namespace League {
function namespace (line 75) | namespace Character {
function namespace (line 83) | namespace Colors {
FILE: LView/Vector.h
function distance (line 4) | struct Vector2 {
function Vector2 (line 22) | Vector2 vscale(const Vector2& s) {
function Vector2 (line 26) | Vector2 scale(float s) {
function Vector2 (line 30) | Vector2 normalize() {
function Vector2 (line 35) | Vector2 add(const Vector2& o) {
function Vector2 (line 39) | Vector2 sub(const Vector2& o) {
function Vector2 (line 43) | Vector2 clone() {
function distance (line 48) | struct Vector3 {
function Vector3 (line 68) | Vector3 rotate_x(float angle) {
function Vector3 (line 76) | Vector3 rotate_y(float angle) {
function Vector3 (line 84) | Vector3 rotate_z(float angle) {
function Vector3 (line 92) | Vector3 vscale(const Vector3& s) {
function Vector3 (line 96) | Vector3 scale(float s) {
function Vector3 (line 100) | Vector3 normalize() {
function Vector3 (line 105) | Vector3 add(const Vector3& o) {
function Vector3 (line 109) | Vector3 sub(const Vector3& o) {
function Vector3 (line 113) | Vector3 clone() {
function distance (line 118) | struct Vector4 {
function Vector4 (line 140) | Vector4 vscale(const Vector4& s) {
function Vector4 (line 144) | Vector4 scale(float s) {
function Vector4 (line 148) | Vector4 normalize() {
function Vector4 (line 153) | Vector4 add(const Vector4& o) {
function Vector4 (line 157) | Vector4 sub(const Vector4& o) {
function Vector4 (line 161) | Vector4 clone() {
FILE: LView/external_includes/Python-ast.h
type _mod (line 14) | struct _mod
type _stmt (line 16) | struct _stmt
type _expr (line 18) | struct _expr
type expr_context_ty (line 20) | typedef enum _expr_context { Load=1, Store=2, Del=3 } expr_context_ty;
type boolop_ty (line 22) | typedef enum _boolop { And=1, Or=2 } boolop_ty;
type operator_ty (line 24) | typedef enum _operator { Add=1, Sub=2, Mult=3, MatMult=4, Div=5, Mod=6, ...
type unaryop_ty (line 28) | typedef enum _unaryop { Invert=1, Not=2, UAdd=3, USub=4 } unaryop_ty;
type cmpop_ty (line 30) | typedef enum _cmpop { Eq=1, NotEq=2, Lt=3, LtE=4, Gt=5, GtE=6, Is=7, IsN...
type _comprehension (line 33) | struct _comprehension
type _excepthandler (line 35) | struct _excepthandler
type _arguments (line 37) | struct _arguments
type _arg (line 39) | struct _arg
type _keyword (line 41) | struct _keyword
type _alias (line 43) | struct _alias
type _withitem (line 45) | struct _withitem
type _type_ignore (line 47) | struct _type_ignore
type _mod_kind (line 50) | enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3,
type _mod (line 52) | struct _mod {
type _stmt_kind (line 76) | enum _stmt_kind {FunctionDef_kind=1, AsyncFunctionDef_kind=2, ClassDef_k...
type _stmt (line 84) | struct _stmt {
type _expr_kind (line 226) | enum _expr_kind {BoolOp_kind=1, NamedExpr_kind=2, BinOp_kind=3, UnaryOp_...
type _expr (line 234) | struct _expr {
type _comprehension (line 383) | struct _comprehension {
type _excepthandler_kind (line 390) | enum _excepthandler_kind {ExceptHandler_kind=1}
type _excepthandler (line 391) | struct _excepthandler {
type _arguments (line 407) | struct _arguments {
type _arg (line 417) | struct _arg {
type _keyword (line 427) | struct _keyword {
type _alias (line 436) | struct _alias {
type _withitem (line 441) | struct _withitem {
type _type_ignore_kind (line 446) | enum _type_ignore_kind {TypeIgnore_kind=1}
type _type_ignore (line 447) | struct _type_ignore {
FILE: LView/external_includes/asdl.h
type PyObject (line 5) | typedef PyObject * identifier;
type PyObject (line 6) | typedef PyObject * string;
type PyObject (line 7) | typedef PyObject * object;
type PyObject (line 8) | typedef PyObject * constant;
type asdl_seq (line 18) | typedef struct {
type asdl_int_seq (line 23) | typedef struct {
FILE: LView/external_includes/bitset.h
type BYTE (line 11) | typedef BYTE *bitset;
FILE: LView/external_includes/boolobject.h
type _longobject (line 18) | struct _longobject
FILE: LView/external_includes/cellobject.h
type PyCellObject (line 9) | typedef struct {
FILE: LView/external_includes/classobject.h
type PyMethodObject (line 12) | typedef struct {
type PyInstanceMethodObject (line 36) | typedef struct {
FILE: LView/external_includes/code.h
type PyCodeObject (line 9) | typedef struct PyCodeObject PyCodeObject;
FILE: LView/external_includes/compile.h
type _node (line 11) | struct _node
type _node (line 15) | struct _node
type PyCompilerFlags (line 37) | typedef struct {
type PyFutureFeatures (line 48) | typedef struct {
type _mod (line 64) | struct _mod
type _mod (line 67) | struct _mod
type _mod (line 73) | struct _mod
type _mod (line 79) | struct _mod
type _mod (line 83) | struct _mod
type _PyASTOptimizeState (line 94) | typedef struct {
type _mod (line 99) | struct _mod
FILE: LView/external_includes/complexobject.h
type Py_complex (line 10) | typedef struct {
type PyComplexObject (line 33) | typedef struct {
FILE: LView/external_includes/context.h
type PyContext (line 11) | typedef struct _pycontextobject PyContext;
type PyContextVar (line 14) | typedef struct _pycontextvarobject PyContextVar;
type PyContextToken (line 17) | typedef struct _pycontexttokenobject PyContextToken;
FILE: LView/external_includes/cpython/abstract.h
function Py_ssize_t (line 59) | static inline Py_ssize_t
function vectorcallfunc (line 65) | static inline vectorcallfunc
function PyObject (line 102) | static inline PyObject *
function PyObject (line 122) | static inline PyObject *
function PyObject (line 152) | static inline PyObject *
function PyObject (line 159) | static inline PyObject *
function PyObject (line 169) | static inline PyObject *
function PyObject (line 175) | static inline PyObject *
function PyObject (line 195) | static inline PyObject *
function PyObject (line 202) | static inline PyObject *
type _Py_Identifier (line 225) | struct _Py_Identifier
function PyObject (line 228) | static inline PyObject *
function PyObject (line 240) | static inline PyObject *
function PyObject (line 247) | static inline PyObject *
FILE: LView/external_includes/cpython/bytearrayobject.h
type PyByteArrayObject (line 6) | typedef struct {
FILE: LView/external_includes/cpython/bytesobject.h
type PyBytesObject (line 5) | typedef struct {
type _PyBytesWriter (line 44) | typedef struct {
FILE: LView/external_includes/cpython/code.h
type _Py_CODEUNIT (line 5) | typedef uint16_t _Py_CODEUNIT;
type _PyOpcache (line 15) | typedef struct _PyOpcache _PyOpcache;
type PyCodeObject (line 18) | struct PyCodeObject {
type PyAddrPair (line 138) | typedef struct _addr_pair {
FILE: LView/external_includes/cpython/dictobject.h
type PyDictKeysObject (line 9) | typedef struct _dictkeysobject PyDictKeysObject;
type PyDictObject (line 14) | typedef struct {
type _Py_Identifier (line 37) | struct _Py_Identifier
type _Py_Identifier (line 71) | struct _Py_Identifier
type _Py_Identifier (line 72) | struct _Py_Identifier
type _Py_Identifier (line 74) | struct _Py_Identifier
type _PyDictViewObject (line 82) | typedef struct {
FILE: LView/external_includes/cpython/fileobject.h
type PyObject (line 16) | typedef PyObject * (*Py_OpenCodeHookFunction)(PyObject *, void *);
FILE: LView/external_includes/cpython/fileutils.h
type _Py_error_handler (line 5) | typedef enum {
type _Py_stat_struct (line 52) | struct _Py_stat_struct {
type _Py_stat_struct (line 76) | struct _Py_stat_struct
type _Py_stat_struct (line 80) | struct _Py_stat_struct
type stat (line 84) | struct stat
FILE: LView/external_includes/cpython/frameobject.h
type PyTryBlock (line 11) | typedef struct {
type _frame (line 17) | struct _frame {
FILE: LView/external_includes/cpython/import.h
type _Py_Identifier (line 13) | struct _Py_Identifier
type _inittab (line 30) | struct _inittab {
type _inittab (line 34) | struct _inittab
type _inittab (line 35) | struct _inittab
type _frozen (line 37) | struct _frozen {
type _frozen (line 46) | struct _frozen
FILE: LView/external_includes/cpython/initconfig.h
type PyStatus (line 10) | typedef struct {
type PyWideStringList (line 31) | typedef struct {
type PyPreConfig (line 47) | typedef struct {
type PyConfig (line 133) | typedef struct {
FILE: LView/external_includes/cpython/listobject.h
type PyListObject (line 9) | typedef struct {
FILE: LView/external_includes/cpython/methodobject.h
type PyCFunctionObject (line 23) | typedef struct {
type PyCMethodObject (line 32) | typedef struct {
FILE: LView/external_includes/cpython/object.h
type _Py_Identifier (line 45) | typedef struct _Py_Identifier {
type Py_buffer (line 56) | typedef struct bufferinfo {
type PyObject (line 74) | typedef PyObject *(*vectorcallfunc)(PyObject *callable, PyObject *const ...
type PyNumberMethods (line 111) | typedef struct {
type PySequenceMethods (line 158) | typedef struct {
type PyMappingMethods (line 172) | typedef struct {
type PyAsyncMethods (line 178) | typedef struct {
type PyBufferProcs (line 184) | typedef struct {
type Py_ssize_t (line 191) | typedef Py_ssize_t printfunc;
type _typeobject (line 193) | struct _typeobject {
type PyHeapTypeObject (line 277) | typedef struct _heaptypeobject {
type _Py_Identifier (line 308) | struct _Py_Identifier
type _Py_Identifier (line 315) | struct _Py_Identifier
type _Py_Identifier (line 316) | struct _Py_Identifier
type _Py_Identifier (line 317) | struct _Py_Identifier
type _Py_Identifier (line 328) | struct _Py_Identifier
type _ts (line 517) | struct _ts
type _ts (line 520) | struct _ts
type _ts (line 521) | struct _ts
FILE: LView/external_includes/cpython/objimpl.h
function PyObject (line 64) | static inline PyObject*
function PyVarObject (line 79) | static inline PyVarObject*
type PyObjectArenaAllocator (line 101) | typedef struct {
FILE: LView/external_includes/cpython/pyerrors.h
type PyBaseExceptionObject (line 17) | typedef struct {
type PySyntaxErrorObject (line 21) | typedef struct {
type PyImportErrorObject (line 31) | typedef struct {
type PyUnicodeErrorObject (line 38) | typedef struct {
type PySystemExitObject (line 47) | typedef struct {
type PyOSErrorObject (line 52) | typedef struct {
type PyStopIterationObject (line 64) | typedef struct {
type PyOSErrorObject (line 70) | typedef PyOSErrorObject PyEnvironmentErrorObject;
type PyOSErrorObject (line 72) | typedef PyOSErrorObject PyWindowsErrorObject;
FILE: LView/external_includes/cpython/pymem.h
type PyMemAllocatorDomain (line 29) | typedef enum {
type PyMemAllocatorName (line 40) | typedef enum {
type PyMemAllocatorEx (line 53) | typedef struct {
FILE: LView/external_includes/cpython/pystate.h
type _PyErr_StackItem (line 36) | typedef struct _err_stackitem {
type _ts (line 51) | struct _ts {
type PyObject (line 187) | typedef PyObject* (*_PyFrameEvalFunction)(PyThreadState *tstate, PyFrame...
type _xid (line 204) | struct _xid
type _PyCrossInterpreterData (line 209) | typedef struct _xid {
type _xid (line 256) | struct _xid
FILE: LView/external_includes/cpython/traceback.h
type PyTracebackObject (line 9) | typedef struct _traceback {
FILE: LView/external_includes/cpython/tupleobject.h
type PyTupleObject (line 9) | typedef struct {
FILE: LView/external_includes/cpython/unicodeobject.h
type wchar_t (line 14) | typedef wchar_t Py_UNICODE;
function Py_UNICODE_COPY (line 53) | static inline void
function Py_UNICODE_FILL (line 58) | static inline void
type PyASCIIObject (line 85) | typedef struct {
type PyCompactUnicodeObject (line 224) | typedef struct {
type PyUnicodeObject (line 236) | typedef struct {
type PyUnicode_Kind (line 313) | enum PyUnicode_Kind {
function Py_ssize_t (line 446) | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) {
type _PyUnicodeWriter (line 606) | typedef struct {
type PyUnicode_Kind (line 669) | enum PyUnicode_Kind
FILE: LView/external_includes/datetime.h
type PyDateTime_Delta (line 34) | typedef struct
type PyDateTime_TZInfo (line 43) | typedef struct
type _PyDateTime_BaseTZInfo (line 61) | typedef struct
type _PyDateTime_BaseTime (line 76) | typedef struct
type PyDateTime_Time (line 81) | typedef struct
type PyDateTime_Date (line 94) | typedef struct
type _PyDateTime_BaseDateTime (line 104) | typedef struct
type PyDateTime_DateTime (line 109) | typedef struct
type PyDateTime_CAPI (line 150) | typedef struct {
FILE: LView/external_includes/descrobject.h
type PyObject (line 8) | typedef PyObject *(*getter)(PyObject *, void *);
type PyGetSetDef (line 11) | typedef struct PyGetSetDef {
type PyObject (line 20) | typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args,
type PyObject (line 23) | typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args,
type wrapperbase (line 26) | struct wrapperbase {
type PyDescrObject (line 41) | typedef struct {
type PyMethodDescrObject (line 53) | typedef struct {
type PyMemberDescrObject (line 59) | typedef struct {
type PyGetSetDescrObject (line 64) | typedef struct {
type PyWrapperDescrObject (line 69) | typedef struct {
type PyMemberDef (line 88) | struct PyMemberDef
type PyMemberDef (line 90) | struct PyMemberDef
type PyGetSetDef (line 92) | struct PyGetSetDef
type wrapperbase (line 95) | struct wrapperbase
FILE: LView/external_includes/dynamic_annotations.h
function T (line 473) | T _Py_ANNOTATE_UNPROTECTED_READ(const volatile T &x) {
FILE: LView/external_includes/floatobject.h
type PyFloatObject (line 15) | typedef struct {
FILE: LView/external_includes/funcobject.h
type PyFunctionObject (line 21) | typedef struct {
FILE: LView/external_includes/genobject.h
type PyGenObject (line 31) | typedef struct {
type PyCoroObject (line 51) | typedef struct {
type PyAsyncGenObject (line 66) | typedef struct {
FILE: LView/external_includes/grammar.h
type label (line 14) | typedef struct {
type labellist (line 23) | typedef struct {
type arc (line 30) | typedef struct {
type state (line 37) | typedef struct {
type dfa (line 50) | typedef struct {
type grammar (line 60) | typedef struct {
FILE: LView/external_includes/internal/pycore_abstract.h
function _PyIndex_Check (line 12) | static inline int
FILE: LView/external_includes/internal/pycore_accu.h
type _PyAccu (line 24) | typedef struct {
FILE: LView/external_includes/internal/pycore_atomic.h
type _Py_memory_order (line 37) | typedef enum _Py_memory_order {
type _Py_atomic_address (line 45) | typedef struct _Py_atomic_address {
type _Py_atomic_int (line 49) | typedef struct _Py_atomic_int {
type _Py_memory_order (line 68) | typedef enum _Py_memory_order {
type _Py_atomic_address (line 76) | typedef struct _Py_atomic_address {
type _Py_atomic_int (line 80) | typedef struct _Py_atomic_int {
type _Py_memory_order (line 106) | typedef enum _Py_memory_order {
type _Py_atomic_address (line 114) | typedef struct _Py_atomic_address {
type _Py_atomic_int (line 118) | typedef struct _Py_atomic_int {
function _Py_atomic_signal_fence (line 123) | static __inline__ void
function _Py_atomic_thread_fence (line 130) | static __inline__ void
function _Py_ANNOTATE_MEMORY_ORDER (line 138) | static __inline__ void
type _Py_memory_order (line 242) | typedef enum _Py_memory_order {
type _Py_atomic_address (line 250) | typedef struct _Py_atomic_address {
type _Py_atomic_int (line 254) | typedef struct _Py_atomic_int {
function _Py_atomic_load_64bit_impl (line 294) | inline intptr_t _Py_atomic_load_64bit_impl(volatile uintptr_t* value, in...
function _Py_atomic_load_32bit_impl (line 332) | inline int _Py_atomic_load_32bit_impl(volatile int* value, int order) {
type _Py_memory_order (line 378) | typedef enum _Py_memory_order {
type _Py_atomic_address (line 386) | typedef struct _Py_atomic_address {
type _Py_atomic_int (line 390) | typedef struct _Py_atomic_int {
function _Py_atomic_load_64bit_impl (line 430) | inline intptr_t _Py_atomic_load_64bit_impl(volatile uintptr_t* value, in...
function _Py_atomic_load_32bit_impl (line 468) | inline int _Py_atomic_load_32bit_impl(volatile int* value, int order) {
type _Py_memory_order (line 515) | typedef enum _Py_memory_order {
type _Py_atomic_address (line 523) | typedef struct _Py_atomic_address {
type _Py_atomic_int (line 527) | typedef struct _Py_atomic_int {
FILE: LView/external_includes/internal/pycore_byteswap.h
function _Py_bswap16 (line 31) | static inline uint16_t
function _Py_bswap32 (line 46) | static inline uint32_t
function _Py_bswap64 (line 63) | static inline uint64_t
FILE: LView/external_includes/internal/pycore_call.h
function PyObject (line 31) | static inline PyObject *
FILE: LView/external_includes/internal/pycore_ceval.h
type pyruntimestate (line 12) | struct pyruntimestate
type _ceval_runtime_state (line 13) | struct _ceval_runtime_state
type _ceval_runtime_state (line 18) | struct _ceval_runtime_state
type _ceval_state (line 19) | struct _ceval_state
type _ceval_state (line 20) | struct _ceval_state
type pyruntimestate (line 28) | struct pyruntimestate
function PyObject (line 37) | static inline PyObject*
type pyruntimestate (line 53) | struct pyruntimestate
function _Py_MakeRecCheck (line 67) | static inline int _Py_MakeRecCheck(PyThreadState *tstate) {
function _Py_MakeRecCheck (line 72) | static inline int _Py_MakeRecCheck(PyThreadState *tstate) {
function _Py_EnterRecursiveCall (line 81) | static inline int _Py_EnterRecursiveCall(PyThreadState *tstate,
function _Py_EnterRecursiveCall_inline (line 86) | static inline int _Py_EnterRecursiveCall_inline(const char *where) {
function _Py_RecursionLimitLowerWaterMark (line 96) | static inline int _Py_RecursionLimitLowerWaterMark(int limit) {
function _Py_LeaveRecursiveCall (line 105) | static inline void _Py_LeaveRecursiveCall(PyThreadState *tstate) {
function _Py_LeaveRecursiveCall_inline (line 113) | static inline void _Py_LeaveRecursiveCall_inline(void) {
FILE: LView/external_includes/internal/pycore_code.h
type _PyOpcache_LoadGlobal (line 7) | typedef struct {
type _PyOpcache (line 13) | struct _PyOpcache {
FILE: LView/external_includes/internal/pycore_condvar.h
type CRITICAL_SECTION (line 57) | typedef CRITICAL_SECTION PyMUTEX_T;
type PyCOND_T (line 76) | typedef struct _PyCOND_T
type SRWLOCK (line 87) | typedef SRWLOCK PyMUTEX_T;
type CONDITION_VARIABLE (line 89) | typedef CONDITION_VARIABLE PyCOND_T;
FILE: LView/external_includes/internal/pycore_context.h
type _pycontextobject (line 10) | struct _pycontextobject {
type _pycontextvarobject (line 19) | struct _pycontextvarobject {
type _pycontexttokenobject (line 30) | struct _pycontexttokenobject {
FILE: LView/external_includes/internal/pycore_fileutils.h
type lconv (line 47) | struct lconv
FILE: LView/external_includes/internal/pycore_gc.h
type PyGC_Head (line 12) | typedef struct {
type gc_generation (line 113) | struct gc_generation {
type gc_generation_stats (line 121) | struct gc_generation_stats {
type _gc_runtime_state (line 130) | struct _gc_runtime_state {
type _gc_runtime_state (line 164) | struct _gc_runtime_state
FILE: LView/external_includes/internal/pycore_getopt.h
type _PyOS_LongOption (line 14) | typedef struct {
FILE: LView/external_includes/internal/pycore_gil.h
type _gil_runtime_state (line 23) | struct _gil_runtime_state {
FILE: LView/external_includes/internal/pycore_hamt.h
type PyHamtNode (line 15) | typedef struct {
type PyHamtObject (line 21) | typedef struct {
type PyHamtIteratorState (line 41) | typedef struct {
type PyHamtIterator (line 56) | typedef struct {
FILE: LView/external_includes/internal/pycore_hashtable.h
type _Py_slist_item_t (line 13) | typedef struct _Py_slist_item_s {
type _Py_slist_t (line 17) | typedef struct {
type _Py_hashtable_entry_t (line 28) | typedef struct {
type _Py_hashtable_t (line 41) | struct _Py_hashtable_t
type _Py_hashtable_t (line 42) | typedef struct _Py_hashtable_t _Py_hashtable_t;
type Py_uhash_t (line 44) | typedef Py_uhash_t (*_Py_hashtable_hash_func) (const void *key);
type _Py_hashtable_entry_t (line 47) | typedef _Py_hashtable_entry_t* (*_Py_hashtable_get_entry_func)(_Py_hasht...
type _Py_hashtable_allocator_t (line 50) | typedef struct {
type _Py_hashtable_t (line 60) | struct _Py_hashtable_t {
function _Py_hashtable_entry_t (line 120) | static inline _Py_hashtable_entry_t *
FILE: LView/external_includes/internal/pycore_initconfig.h
type pyruntimestate (line 12) | struct pyruntimestate
type _PyArgv (line 64) | typedef struct _PyArgv {
type _PyPreCmdline (line 97) | typedef struct {
type _PyConfigInitEnum (line 141) | typedef enum {
type pyruntimestate (line 154) | struct pyruntimestate
FILE: LView/external_includes/internal/pycore_interp.h
type _pending_calls (line 18) | struct _pending_calls {
type _ceval_state (line 35) | struct _ceval_state {
type _Py_unicode_fs_codec (line 53) | struct _Py_unicode_fs_codec {
type _Py_unicode_state (line 60) | struct _Py_unicode_state {
type _is (line 71) | struct _is {
type _xidregitem (line 174) | struct _xidregitem
type _xidregitem (line 176) | struct _xidregitem {
type _is (line 182) | struct _is
type _is (line 184) | struct _is
type _is (line 185) | struct _is
type _is (line 186) | struct _is
FILE: LView/external_includes/internal/pycore_object.h
function _PyObject_GC_TRACK_impl (line 29) | static inline void _PyObject_GC_TRACK_impl(const char *filename, int lin...
function _PyObject_GC_UNTRACK_impl (line 63) | static inline void _PyObject_GC_UNTRACK_impl(const char *filename, int l...
function PyObject (line 92) | static inline PyObject **
function _PyType_HasFeature (line 100) | static inline int
function _PyObject_IS_GC (line 106) | static inline int
FILE: LView/external_includes/internal/pycore_pathconfig.h
type _PyPathConfig (line 11) | typedef struct _PyPathConfig {
FILE: LView/external_includes/internal/pycore_pyerrors.h
function PyObject (line 11) | static inline PyObject* _PyErr_Occurred(PyThreadState *tstate)
function _PyErr_ClearExcState (line 17) | static inline void _PyErr_ClearExcState(_PyErr_StackItem *exc_state)
FILE: LView/external_includes/internal/pycore_pylifecycle.h
type _PyArgv (line 12) | struct _PyArgv
type pyruntimestate (line 13) | struct pyruntimestate
type _PyArgv (line 95) | struct _PyArgv
type _PyArgv (line 98) | struct _PyArgv
FILE: LView/external_includes/internal/pycore_pymem.h
function _PyMem_IsPtrFreed (line 45) | static inline int _PyMem_IsPtrFreed(void *ptr)
type _PyTraceMalloc_Config (line 75) | struct _PyTraceMalloc_Config {
type _PyTraceMalloc_Config (line 98) | struct _PyTraceMalloc_Config
FILE: LView/external_includes/internal/pycore_pystate.h
function _Py_IsMainThread (line 16) | static inline int
function _Py_IsMainInterpreter (line 24) | static inline int
function _Py_ThreadCanHandleSignals (line 34) | static inline int
function _Py_ThreadCanHandlePendingCalls (line 42) | static inline int
function PyThreadState (line 52) | static inline PyThreadState*
function PyThreadState (line 67) | static inline PyThreadState*
function _Py_EnsureFuncTstateNotNULL (line 79) | static inline void
function PyInterpreterState (line 100) | static inline PyInterpreterState* _PyInterpreterState_GET(void) {
type _gilstate_runtime_state (line 118) | struct _gilstate_runtime_state
type PyModuleDef (line 130) | struct PyModuleDef
FILE: LView/external_includes/internal/pycore_runtime.h
type _ceval_runtime_state (line 16) | struct _ceval_runtime_state {
type _gilstate_runtime_state (line 27) | struct _gilstate_runtime_state {
type _Py_AuditHookEntry (line 44) | typedef struct _Py_AuditHookEntry {
type _PyRuntimeState (line 52) | typedef struct pyruntimestate {
function PyThreadState (line 131) | static inline PyThreadState*
function _PyRuntimeState_SetFinalizing (line 136) | static inline void
FILE: LView/external_includes/internal/pycore_traceback.h
type _is (line 12) | struct _is
type _is (line 60) | struct _is
FILE: LView/external_includes/internal/pycore_warnings.h
type _warnings_runtime_state (line 11) | struct _warnings_runtime_state {
FILE: LView/external_includes/longintrepr.h
type digit (line 45) | typedef uint32_t digit;
type sdigit (line 46) | typedef int32_t sdigit;
type twodigits (line 47) | typedef uint64_t twodigits;
type stwodigits (line 48) | typedef int64_t stwodigits;
type digit (line 53) | typedef unsigned short digit;
type sdigit (line 54) | typedef short sdigit;
type twodigits (line 55) | typedef unsigned long twodigits;
type stwodigits (line 56) | typedef long stwodigits;
type _longobject (line 85) | struct _longobject {
FILE: LView/external_includes/longobject.h
type PyLongObject (line 10) | typedef struct _longobject PyLongObject;
FILE: LView/external_includes/memoryobject.h
type _PyManagedBufferObject (line 42) | typedef struct {
type PyMemoryViewObject (line 57) | typedef struct {
FILE: LView/external_includes/methodobject.h
type PyObject (line 19) | typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
type PyObject (line 20) | typedef PyObject *(*_PyCFunctionFast) (PyObject *, PyObject *const *, Py...
type PyObject (line 21) | typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *,
type PyObject (line 23) | typedef PyObject *(*_PyCFunctionFastWithKeywords) (PyObject *,
type PyObject (line 26) | typedef PyObject *(*PyCMethod)(PyObject *, PyTypeObject *, PyObject *con...
type PyMethodDef (line 35) | struct PyMethodDef {
type PyMethodDef (line 42) | typedef struct PyMethodDef PyMethodDef;
FILE: LView/external_includes/modsupport.h
type _PyArg_Parser (line 92) | typedef struct _PyArg_Parser {
type _PyArg_Parser (line 110) | struct _PyArg_Parser
type _PyArg_Parser (line 120) | struct _PyArg_Parser
type _PyArg_Parser (line 123) | struct _PyArg_Parser
type _PyArg_Parser (line 127) | struct _PyArg_Parser
type PyModuleDef (line 218) | struct PyModuleDef
type PyModuleDef (line 221) | struct PyModuleDef
FILE: LView/external_includes/moduleobject.h
type PyModuleDef (line 35) | struct PyModuleDef
type PyModuleDef (line 40) | struct PyModuleDef
type PyModuleDef_Base (line 44) | typedef struct PyModuleDef_Base {
type PyModuleDef_Slot (line 61) | typedef struct PyModuleDef_Slot{
type PyModuleDef (line 75) | typedef struct PyModuleDef{
FILE: LView/external_includes/node.h
type node (line 10) | typedef struct _node {
FILE: LView/external_includes/object.h
type PyTypeObject (line 66) | typedef struct _typeobject PyTypeObject;
type PyObject (line 105) | typedef struct _object {
type PyVarObject (line 115) | typedef struct {
function _Py_IS_TYPE (line 127) | static inline int _Py_IS_TYPE(const PyObject *ob, const PyTypeObject *ty...
function _Py_SET_REFCNT (line 132) | static inline void _Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt) {
function _Py_SET_TYPE (line 137) | static inline void _Py_SET_TYPE(PyObject *ob, PyTypeObject *type) {
function _Py_SET_SIZE (line 142) | static inline void _Py_SET_SIZE(PyVarObject *ob, Py_ssize_t size) {
type PyObject (line 163) | typedef PyObject * (*unaryfunc)(PyObject *);
type PyObject (line 164) | typedef PyObject * (*binaryfunc)(PyObject *, PyObject *);
type PyObject (line 165) | typedef PyObject * (*ternaryfunc)(PyObject *, PyObject *, PyObject *);
type Py_ssize_t (line 167) | typedef Py_ssize_t (*lenfunc)(PyObject *);
type PyObject (line 168) | typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t);
type PyObject (line 169) | typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t);
type PyObject (line 181) | typedef PyObject *(*getattrfunc)(PyObject *, char *);
type PyObject (line 182) | typedef PyObject *(*getattrofunc)(PyObject *, PyObject *);
type PyObject (line 185) | typedef PyObject *(*reprfunc)(PyObject *);
type Py_hash_t (line 186) | typedef Py_hash_t (*hashfunc)(PyObject *);
type PyObject (line 187) | typedef PyObject *(*richcmpfunc) (PyObject *, PyObject *, int);
type PyObject (line 188) | typedef PyObject *(*getiterfunc) (PyObject *);
type PyObject (line 189) | typedef PyObject *(*iternextfunc) (PyObject *);
type PyObject (line 190) | typedef PyObject *(*descrgetfunc) (PyObject *, PyObject *, PyObject *);
type PyObject (line 193) | typedef PyObject *(*newfunc)(PyTypeObject *, PyObject *, PyObject *);
type PyObject (line 194) | typedef PyObject *(*allocfunc)(PyTypeObject *, Py_ssize_t);
type PyType_Slot (line 196) | typedef struct{
type PyType_Spec (line 201) | typedef struct{
type _typeobject (line 218) | struct _typeobject
type _typeobject (line 219) | struct _typeobject
function _Py_INCREF (line 403) | static inline void _Py_INCREF(PyObject *op)
function _Py_DECREF (line 413) | static inline void _Py_DECREF(
function _Py_XINCREF (line 485) | static inline void _Py_XINCREF(PyObject *op)
function _Py_XDECREF (line 494) | static inline void _Py_XDECREF(PyObject *op)
function PyType_HasFeature (line 620) | static inline int
function _PyType_Check (line 635) | static inline int _PyType_Check(PyObject *op) {
function _PyType_CheckExact (line 640) | static inline int _PyType_CheckExact(PyObject *op) {
FILE: LView/external_includes/odictobject.h
type PyODictObject (line 13) | typedef struct _odictobject PyODictObject;
FILE: LView/external_includes/parsetok.h
type perrdetail (line 13) | typedef struct {
FILE: LView/external_includes/py_curses.h
type PyCursesWindowObject (line 61) | typedef struct {
FILE: LView/external_includes/pyarena.h
type PyArena (line 12) | typedef struct _arena PyArena;
FILE: LView/external_includes/pyconfig.h
type __int64 (line 168) | typedef __int64 ssize_t;
type _W64 (line 170) | typedef _W64 int ssize_t;
type pid_t (line 190) | typedef int pid_t;
type pid_t (line 232) | typedef int pid_t;
FILE: LView/external_includes/pydtrace.h
function PyDTrace_LINE (line 28) | static inline void PyDTrace_LINE(const char *arg0, const char *arg1, int...
function PyDTrace_FUNCTION_ENTRY (line 29) | static inline void PyDTrace_FUNCTION_ENTRY(const char *arg0, const char ...
function PyDTrace_FUNCTION_RETURN (line 30) | static inline void PyDTrace_FUNCTION_RETURN(const char *arg0, const char...
function PyDTrace_GC_START (line 31) | static inline void PyDTrace_GC_START(int arg0) {}
function PyDTrace_GC_DONE (line 32) | static inline void PyDTrace_GC_DONE(Py_ssize_t arg0) {}
function PyDTrace_INSTANCE_NEW_START (line 33) | static inline void PyDTrace_INSTANCE_NEW_START(int arg0) {}
function PyDTrace_INSTANCE_NEW_DONE (line 34) | static inline void PyDTrace_INSTANCE_NEW_DONE(int arg0) {}
function PyDTrace_INSTANCE_DELETE_START (line 35) | static inline void PyDTrace_INSTANCE_DELETE_START(int arg0) {}
function PyDTrace_INSTANCE_DELETE_DONE (line 36) | static inline void PyDTrace_INSTANCE_DELETE_DONE(int arg0) {}
function PyDTrace_IMPORT_FIND_LOAD_START (line 37) | static inline void PyDTrace_IMPORT_FIND_LOAD_START(const char *arg0) {}
function PyDTrace_IMPORT_FIND_LOAD_DONE (line 38) | static inline void PyDTrace_IMPORT_FIND_LOAD_DONE(const char *arg0, int ...
function PyDTrace_AUDIT (line 39) | static inline void PyDTrace_AUDIT(const char *arg0, void *arg1) {}
function PyDTrace_LINE_ENABLED (line 41) | static inline int PyDTrace_LINE_ENABLED(void) { return 0; }
function PyDTrace_FUNCTION_ENTRY_ENABLED (line 42) | static inline int PyDTrace_FUNCTION_ENTRY_ENABLED(void) { return 0; }
function PyDTrace_FUNCTION_RETURN_ENABLED (line 43) | static inline int PyDTrace_FUNCTION_RETURN_ENABLED(void) { return 0; }
function PyDTrace_GC_START_ENABLED (line 44) | static inline int PyDTrace_GC_START_ENABLED(void) { return 0; }
function PyDTrace_GC_DONE_ENABLED (line 45) | static inline int PyDTrace_GC_DONE_ENABLED(void) { return 0; }
function PyDTrace_INSTANCE_NEW_START_ENABLED (line 46) | static inline int PyDTrace_INSTANCE_NEW_START_ENABLED(void) { return 0; }
function PyDTrace_INSTANCE_NEW_DONE_ENABLED (line 47) | static inline int PyDTrace_INSTANCE_NEW_DONE_ENABLED(void) { return 0; }
function PyDTrace_INSTANCE_DELETE_START_ENABLED (line 48) | static inline int PyDTrace_INSTANCE_DELETE_START_ENABLED(void) { return ...
function PyDTrace_INSTANCE_DELETE_DONE_ENABLED (line 49) | static inline int PyDTrace_INSTANCE_DELETE_DONE_ENABLED(void) { return 0; }
function PyDTrace_IMPORT_FIND_LOAD_START_ENABLED (line 50) | static inline int PyDTrace_IMPORT_FIND_LOAD_START_ENABLED(void) { return...
function PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED (line 51) | static inline int PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED(void) { return ...
function PyDTrace_AUDIT_ENABLED (line 52) | static inline int PyDTrace_AUDIT_ENABLED(void) { return 0; }
FILE: LView/external_includes/pyexpat.h
type PyExpat_CAPI (line 9) | struct PyExpat_CAPI
FILE: LView/external_includes/pyframe.h
type PyFrameObject (line 12) | typedef struct _frame PyFrameObject;
FILE: LView/external_includes/pyhash.h
type _Py_HashSecret_t (line 56) | typedef union {
type PyHash_FuncDef (line 89) | typedef struct {
FILE: LView/external_includes/pymath.h
function __icc_nan (line 167) | __declspec(noinline)
FILE: LView/external_includes/pyport.h
type Py_uintptr_t (line 97) | typedef uintptr_t Py_uintptr_t;
type Py_intptr_t (line 98) | typedef intptr_t Py_intptr_t;
type Py_ssize_t (line 105) | typedef ssize_t Py_ssize_t;
type Py_intptr_t (line 107) | typedef Py_intptr_t Py_ssize_t;
type Py_ssize_t (line 114) | typedef Py_ssize_t Py_hash_t;
type Py_uhash_t (line 117) | typedef size_t Py_uhash_t;
type Py_ssize_t (line 121) | typedef Py_ssize_t Py_ssize_clean_t;
type Py_ssize_clean_t (line 123) | typedef int Py_ssize_clean_t;
FILE: LView/external_includes/pystate.h
type _ts (line 16) | struct _ts
type _is (line 17) | struct _is
type PyThreadState (line 20) | typedef struct _ts PyThreadState;
type PyInterpreterState (line 22) | typedef struct _is PyInterpreterState;
type PyModuleDef (line 53) | struct PyModuleDef
type PyModuleDef (line 54) | struct PyModuleDef
type PyModuleDef (line 56) | struct PyModuleDef
type PyGILState_STATE (line 94) | typedef
FILE: LView/external_includes/pythonrun.h
type _mod (line 35) | struct _mod
type _mod (line 41) | struct _mod
type _mod (line 47) | struct _mod
type _mod (line 57) | struct _mod
type _node (line 79) | struct _node
type _node (line 84) | struct _node
type _node (line 91) | struct _node
type symtable (line 123) | struct symtable
type symtable (line 135) | struct symtable
type symtable (line 140) | struct symtable
FILE: LView/external_includes/pythread.h
type PyLockStatus (line 13) | typedef enum PyLockStatus {
type Py_tss_t (line 123) | typedef struct _Py_tss_t Py_tss_t;
type _Py_tss_t (line 143) | struct _Py_tss_t {
FILE: LView/external_includes/pytime.h
type _PyTime_t (line 19) | typedef int64_t _PyTime_t;
type _PyTime_round_t (line 23) | typedef enum {
type timeval (line 123) | struct timeval
type timeval (line 130) | struct timeval
type timeval (line 135) | struct timeval
type timespec (line 153) | struct timespec
type timespec (line 158) | struct timespec
type _Py_clock_info_t (line 184) | typedef struct {
type tm (line 218) | struct tm
type tm (line 222) | struct tm
FILE: LView/external_includes/setobject.h
type setentry (line 26) | typedef struct {
type PySetObject (line 42) | typedef struct {
FILE: LView/external_includes/sliceobject.h
type PySliceObject (line 22) | typedef struct {
FILE: LView/external_includes/structmember.h
type PyMemberDef (line 18) | typedef struct PyMemberDef {
type PyMemberDef (line 67) | struct PyMemberDef
type PyMemberDef (line 68) | struct PyMemberDef
FILE: LView/external_includes/structseq.h
type PyStructSequence_Field (line 10) | typedef struct PyStructSequence_Field {
type PyStructSequence_Desc (line 15) | typedef struct PyStructSequence_Desc {
type PyTupleObject (line 35) | typedef PyTupleObject PyStructSequence;
FILE: LView/external_includes/symtable.h
type _Py_block_ty (line 14) | typedef enum _block_type { FunctionBlock, ClassBlock, ModuleBlock }
type _symtable_entry (line 17) | struct _symtable_entry
type symtable (line 19) | struct symtable {
type PySTEntryObject (line 38) | typedef struct _symtable_entry {
type symtable (line 76) | struct symtable
type symtable (line 80) | struct symtable
type symtable (line 84) | struct symtable
type symtable (line 86) | struct symtable
FILE: LView/external_includes/ucnhash.h
type _PyUnicode_Name_CAPI (line 13) | typedef struct {
FILE: LView/external_includes/unicodeobject.h
type Py_UCS4 (line 102) | typedef uint32_t Py_UCS4;
type Py_UCS2 (line 103) | typedef uint16_t Py_UCS2;
type Py_UCS1 (line 104) | typedef uint8_t Py_UCS1;
FILE: LView/external_includes/weakrefobject.h
type PyWeakReference (line 10) | typedef struct _PyWeakReference PyWeakReference;
type _PyWeakReference (line 16) | struct _PyWeakReference {
FILE: LView/imgui.cpp
type ImGui (line 855) | namespace ImGui
function FreeWrapper (line 918) | static void FreeWrapper(void* ptr, void* user_data) { IM_UNUSE...
function FreeWrapper (line 921) | static void FreeWrapper(void* ptr, void* user_data) { IM_UNUSE...
function ImVec2 (line 1123) | ImVec2 ImBezierClosestPoint(const ImVec2& p1, const ImVec2& p2, const Im...
function BezierClosestPointCasteljauStep (line 1146) | static void BezierClosestPointCasteljauStep(const ImVec2& p, ImVec2& p_c...
function ImVec2 (line 1181) | ImVec2 ImBezierClosestPointCasteljau(const ImVec2& p1, const ImVec2& p2,...
function ImVec2 (line 1191) | ImVec2 ImLineClosestPoint(const ImVec2& a, const ImVec2& b, const ImVec2...
function ImTriangleContainsPoint (line 1204) | bool ImTriangleContainsPoint(const ImVec2& a, const ImVec2& b, const ImV...
function ImTriangleBarycentricCoords (line 1212) | void ImTriangleBarycentricCoords(const ImVec2& a, const ImVec2& b, const...
function ImVec2 (line 1223) | ImVec2 ImTriangleClosestPoint(const ImVec2& a, const ImVec2& b, const Im...
function ImStricmp (line 1244) | int ImStricmp(const char* str1, const char* str2)
function ImStrnicmp (line 1251) | int ImStrnicmp(const char* str1, const char* str2, size_t count)
function ImStrncpy (line 1258) | void ImStrncpy(char* dst, const char* src, size_t count)
function ImStrlenW (line 1294) | int ImStrlenW(const ImWchar* str)
function ImWchar (line 1309) | const ImWchar* ImStrbolW(const ImWchar* buf_mid_line, const ImWchar* buf...
function ImStrTrimBlanks (line 1339) | void ImStrTrimBlanks(char* buf)
function ImFormatString (line 1379) | int ImFormatString(char* buf, size_t buf_size, const char* fmt, ...)
function ImFormatStringV (line 1397) | int ImFormatStringV(char* buf, size_t buf_size, const char* fmt, va_list...
function ImGuiID (line 1439) | ImGuiID ImHashData(const void* data_p, size_t data_size, ImU32 seed)
function ImGuiID (line 1455) | ImGuiID ImHashStr(const char* data_p, size_t data_size, ImU32 seed)
function ImFileHandle (line 1490) | ImFileHandle ImFileOpen(const char* filename, const char* mode)
function ImFileClose (line 1508) | bool ImFileClose(ImFileHandle f) { return fclose(f) == 0; }
function ImU64 (line 1509) | ImU64 ImFileGetSize(ImFileHandle f) { long off = 0, sz = 0; return (...
function ImU64 (line 1510) | ImU64 ImFileRead(void* data, ImU64 sz, ImU64 count, ImFileHandle f) ...
function ImU64 (line 1511) | ImU64 ImFileWrite(const void* data, ImU64 sz, ImU64 count, ImFileHandl...
function ImTextCharFromUtf8 (line 1563) | int ImTextCharFromUtf8(unsigned int* out_char, const char* in_text, cons...
function ImTextStrFromUtf8 (line 1615) | int ImTextStrFromUtf8(ImWchar* buf, int buf_size, const char* in_text, c...
function ImTextCountCharsFromUtf8 (line 1633) | int ImTextCountCharsFromUtf8(const char* in_text, const char* in_text_end)
function ImTextCharToUtf8 (line 1648) | static inline int ImTextCharToUtf8(char* buf, int buf_size, unsigned int c)
function ImTextCountUtf8BytesFromChar (line 1684) | int ImTextCountUtf8BytesFromChar(const char* in_text, const char* in_tex...
function ImTextCountUtf8BytesFromChar (line 1690) | static inline int ImTextCountUtf8BytesFromChar(unsigned int c)
function ImTextStrToUtf8 (line 1699) | int ImTextStrToUtf8(char* buf, int buf_size, const ImWchar* in_text, con...
function ImTextCountUtf8BytesFromStr (line 1715) | int ImTextCountUtf8BytesFromStr(const ImWchar* in_text, const ImWchar* i...
function IMGUI_API (line 1734) | IMGUI_API ImU32 ImAlphaBlendColors(ImU32 col_a, ImU32 col_b)
function ImVec4 (line 1743) | ImVec4 ImGui::ColorConvertU32ToFloat4(ImU32 in)
function ImU32 (line 1753) | ImU32 ImGui::ColorConvertFloat4ToU32(const ImVec4& in)
type StaticFunc (line 1845) | struct StaticFunc
method PairCompareByID (line 1847) | PairCompareByID(const void* lhs, const void* rhs)
function GetSkipItemForListClipping (line 2142) | static bool GetSkipItemForListClipping()
function SetCursorPosYAndSetupForPrevLine (line 2191) | static void SetCursorPosYAndSetupForPrevLine(float pos_y, float line_hei...
function ImGuiStyle (line 2360) | ImGuiStyle& ImGui::GetStyle()
function ImU32 (line 2366) | ImU32 ImGui::GetColorU32(ImGuiCol idx, float alpha_mul)
function ImU32 (line 2374) | ImU32 ImGui::GetColorU32(const ImVec4& col)
function ImVec4 (line 2382) | const ImVec4& ImGui::GetStyleColorVec4(ImGuiCol idx)
function ImU32 (line 2388) | ImU32 ImGui::GetColorU32(ImU32 col)
type ImGuiStyleVarInfo (line 2431) | struct ImGuiStyleVarInfo
function ImGuiStyleVarInfo (line 2467) | static const ImGuiStyleVarInfo* GetStyleVarInfo(ImGuiStyleVar idx)
function ImGuiID (line 2864) | ImGuiID ImGuiWindow::GetID(const char* str, const char* str_end)
function ImGuiID (line 2876) | ImGuiID ImGuiWindow::GetID(const void* ptr)
function ImGuiID (line 2888) | ImGuiID ImGuiWindow::GetID(int n)
function ImGuiID (line 2900) | ImGuiID ImGuiWindow::GetIDNoKeepAlive(const char* str, const char* str_end)
function ImGuiID (line 2911) | ImGuiID ImGuiWindow::GetIDNoKeepAlive(const void* ptr)
function ImGuiID (line 2922) | ImGuiID ImGuiWindow::GetIDNoKeepAlive(int n)
function ImGuiID (line 2934) | ImGuiID ImGuiWindow::GetIDFromRectangle(const ImRect& r_abs)
function SetCurrentWindow (line 2943) | static void SetCurrentWindow(ImGuiWindow* window)
function ImGuiID (line 3033) | ImGuiID ImGui::GetHoveredID()
function IsWindowContentHoverable (line 3061) | static inline bool IsWindowContentHoverable(ImGuiWindow* window, ImGuiHo...
function ImGuiContext (line 3291) | ImGuiContext* ImGui::GetCurrentContext()
function ImGuiContext (line 3312) | ImGuiContext* ImGui::CreateContext(ImFontAtlas* shared_font_atlas)
function ImGuiIO (line 3349) | ImGuiIO& ImGui::GetIO()
function ImDrawData (line 3356) | ImDrawData* ImGui::GetDrawData()
function ImDrawList (line 3372) | ImDrawList* ImGui::GetBackgroundDrawList()
function ImDrawList (line 3377) | ImDrawList* ImGui::GetForegroundDrawList()
function ImDrawListSharedData (line 3382) | ImDrawListSharedData* ImGui::GetDrawListSharedData()
function IsWindowActiveAndVisible (line 3502) | static bool IsWindowActiveAndVisible(ImGuiWindow* window)
function StartLockWheelingWindow (line 3564) | static void StartLockWheelingWindow(ImGuiWindow* window)
function ImGuiKeyModFlags (line 3748) | ImGuiKeyModFlags ImGui::GetMergedKeyModFlags()
function AddWindowToSortBuffer (line 4091) | static void AddWindowToSortBuffer(ImVector<ImGuiWindow*>* out_sorted_win...
function AddDrawListToDrawData (line 4108) | static void AddDrawListToDrawData(ImVector<ImDrawList*>* out_list, ImDra...
function AddWindowToDrawData (line 4144) | static void AddWindowToDrawData(ImVector<ImDrawList*>* out_render_list, ...
function AddRootWindowToDrawData (line 4158) | static void AddRootWindowToDrawData(ImGuiWindow* window)
function SetupDrawData (line 4183) | static void SetupDrawData(ImVector<ImDrawList*>* draw_lists, ImDrawData*...
function ImVec2 (line 4353) | ImVec2 ImGui::CalcTextSize(const char* text, const char* text_end, bool ...
function FindHoveredWindow (line 4379) | static void FindHoveredWindow()
function ImVec2 (line 4576) | ImVec2 ImGui::GetMousePos()
function ImVec2 (line 4583) | ImVec2 ImGui::GetMousePosOnOpeningCurrentPopup()
function ImVec2 (line 4614) | ImVec2 ImGui::GetMouseDragDelta(ImGuiMouseButton button, float lock_thre...
function ImGuiMouseCursor (line 4635) | ImGuiMouseCursor ImGui::GetMouseCursor()
function ImVec2 (line 4761) | ImVec2 ImGui::GetItemRectMin()
function ImVec2 (line 4767) | ImVec2 ImGui::GetItemRectMax()
function ImVec2 (line 4773) | ImVec2 ImGui::GetItemRectSize()
function ImRect (line 4779) | static ImRect GetViewportRect()
function SetWindowConditionAllowFlags (line 4911) | static void SetWindowConditionAllowFlags(ImGuiWindow* window, ImGuiCond ...
function ImGuiWindow (line 4918) | ImGuiWindow* ImGui::FindWindowByID(ImGuiID id)
function ImGuiWindow (line 4924) | ImGuiWindow* ImGui::FindWindowByName(const char* name)
function ApplyWindowSettings (line 4930) | static void ApplyWindowSettings(ImGuiWindow* window, ImGuiWindowSettings...
function ImGuiWindow (line 4938) | static ImGuiWindow* CreateNewWindow(const char* name, ImGuiWindowFlags f...
function ImVec2 (line 4984) | static ImVec2 CalcWindowSizeAfterConstraint(ImGuiWindow* window, ImVec2 ...
function ImVec2 (line 5017) | static ImVec2 CalcWindowContentSize(ImGuiWindow* window)
function ImVec2 (line 5031) | static ImVec2 CalcWindowAutoFitSize(ImGuiWindow* window, const ImVec2& s...
function ImVec2 (line 5066) | ImVec2 ImGui::CalcWindowExpectedSize(ImGuiWindow* window)
function ImGuiCol (line 5074) | static ImGuiCol GetWindowBgColorIdxFromFlags(ImGuiWindowFlags flags)
function CalcResizePosSizeFromAnyCorner (line 5083) | static void CalcResizePosSizeFromAnyCorner(ImGuiWindow* window, const Im...
type ImGuiResizeGripDef (line 5097) | struct ImGuiResizeGripDef
type ImGuiResizeBorderDef (line 5112) | struct ImGuiResizeBorderDef
function ImRect (line 5127) | static ImRect GetResizeBorderRect(ImGuiWindow* window, int border_n, flo...
function ImGuiID (line 5141) | ImGuiID ImGui::GetWindowResizeID(ImGuiWindow* window, int n)
function ClampWindowRect (line 5279) | static inline void ClampWindowRect(ImGuiWindow* window, const ImRect& vi...
function ImVec2 (line 6484) | ImVec2 ImGui::GetWindowPos()
function ImVec2 (line 6522) | ImVec2 ImGui::GetWindowSize()
function ImDrawList (line 6696) | ImDrawList* ImGui::GetWindowDrawList()
function ImFont (line 6702) | ImFont* ImGui::GetFont()
function ImVec2 (line 6712) | ImVec2 ImGui::GetFontTexUvWhitePixel()
function ImGuiStorage (line 6782) | ImGuiStorage* ImGui::GetStateStorage()
function ImGuiID (line 6831) | ImGuiID ImGui::GetIDWithSeed(const char* str, const char* str_end, ImGui...
function ImGuiID (line 6849) | ImGuiID ImGui::GetID(const char* str_id)
function ImGuiID (line 6855) | ImGuiID ImGui::GetID(const char* str_id_begin, const char* str_id_end)
function ImGuiID (line 6861) | ImGuiID ImGui::GetID(const void* ptr_id)
function ImVec2 (line 7245) | ImVec2 ImGui::GetCursorScreenPos()
function ImVec2 (line 7260) | ImVec2 ImGui::GetCursorPos()
function ImVec2 (line 7299) | ImVec2 ImGui::GetCursorStartPos()
function ImVec2 (line 7383) | ImVec2 ImGui::CalcItemSize(ImVec2 size, float default_w, float default_h)
function ImVec2 (line 7431) | ImVec2 ImGui::GetContentRegionMax()
function ImVec2 (line 7442) | ImVec2 ImGui::GetContentRegionMaxAbs()
function ImVec2 (line 7452) | ImVec2 ImGui::GetContentRegionAvail()
function ImVec2 (line 7459) | ImVec2 ImGui::GetWindowContentRegionMin()
function ImVec2 (line 7465) | ImVec2 ImGui::GetWindowContentRegionMax()
function CalcScrollEdgeSnap (line 7569) | static float CalcScrollEdgeSnap(float target, float snap_min, float snap...
function ImVec2 (line 7578) | static ImVec2 CalcNextScrollFromScrollTargetAndClamp(ImGuiWindow* window)
function ImVec2 (line 7613) | ImVec2 ImGui::ScrollToBringRectIntoView(ImGuiWindow* window, const ImRec...
function ImGuiWindow (line 7864) | ImGuiWindow* ImGui::GetTopMostPopupModal()
function ImVec2 (line 8181) | ImVec2 ImGui::FindBestWindowPosForPopupEx(const ImVec2& ref_pos, const I...
function ImRect (line 8255) | ImRect ImGui::GetWindowAllowedExtentRect(ImGuiWindow* window)
function ImVec2 (line 8264) | ImVec2 ImGui::FindBestWindowPosForPopup(ImGuiWindow* window)
function ImGuiDir (line 8354) | ImGuiDir ImGetDirQuadrantFromDelta(float dx, float dy)
function NavScoreItemDistInterval (line 8361) | static float inline NavScoreItemDistInterval(float a0, float a1, float b...
function NavClampRectToVisibleAreaForMoveDir (line 8370) | static void inline NavClampRectToVisibleAreaForMoveDir(ImGuiDir move_dir...
function ImGuiWindow (line 8634) | static ImGuiWindow* ImGui::NavRestoreLastChildNavWindow(ImGuiWindow* win...
function NavRestoreLayer (line 8641) | static void NavRestoreLayer(ImGuiNavLayer layer)
function ImVec2 (line 8688) | static ImVec2 ImGui::NavCalcPreferredRefPos()
function ImVec2 (line 8730) | ImVec2 ImGui::GetNavInputAmount2d(ImGuiNavDirSourceFlags dir_sources, Im...
function ImGuiWindow (line 9248) | static ImGuiWindow* FindWindowNavFocusable(int i_start, int i_stop, int ...
function NavUpdateWindowingHighlightWindow (line 9257) | static void NavUpdateWindowingHighlightWindow(int focus_change_dir)
function ImGuiPayload (line 9700) | const ImGuiPayload* ImGui::AcceptDragDropPayload(const char* type, ImGui...
function ImGuiPayload (line 9743) | const ImGuiPayload* ImGui::GetDragDropPayload()
function ImGuiWindowSettings (line 10033) | ImGuiWindowSettings* ImGui::CreateNewWindowSettings(const char* name)
function ImGuiWindowSettings (line 10055) | ImGuiWindowSettings* ImGui::FindWindowSettings(ImGuiID id)
function ImGuiWindowSettings (line 10064) | ImGuiWindowSettings* ImGui::FindOrCreateWindowSettings(const char* name)
function ImGuiSettingsHandler (line 10071) | ImGuiSettingsHandler* ImGui::FindSettingsHandler(const char* type_name)
function WindowSettingsHandler_ClearAll (line 10204) | static void WindowSettingsHandler_ClearAll(ImGuiContext* ctx, ImGuiSetti...
function WindowSettingsHandler_ReadLine (line 10222) | static void WindowSettingsHandler_ReadLine(ImGuiContext*, ImGuiSettingsH...
function WindowSettingsHandler_ApplyAll (line 10233) | static void WindowSettingsHandler_ApplyAll(ImGuiContext* ctx, ImGuiSetti...
function WindowSettingsHandler_WriteAll (line 10245) | static void WindowSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSetti...
function SetClipboardTextFn_DefaultImpl (line 10332) | static void SetClipboardTextFn_DefaultImpl(void*, const char* text)
function SetClipboardTextFn_DefaultImpl (line 10359) | static void SetClipboardTextFn_DefaultImpl(void*, const char* text)
function SetClipboardTextFn_DefaultImpl (line 10414) | static void SetClipboardTextFn_DefaultImpl(void*, const char* text)
function ImeSetInputScreenPosFn_DefaultImpl (line 10434) | static void ImeSetInputScreenPosFn_DefaultImpl(int x, int y)
function ImeSetInputScreenPosFn_DefaultImpl (line 10452) | static void ImeSetInputScreenPosFn_DefaultImpl(int, int) {}
function MetricsHelpMarker (line 10474) | static void MetricsHelpMarker(const char* desc)
type Funcs (line 10519) | struct Funcs
method ImRect (line 10521) | static ImRect GetTableRect(ImGuiTable* table, int rect_type, int n)
method ImRect (line 10538) | static ImRect GetWindowRect(ImGuiWindow* window, int rect_type)
FILE: LView/imgui.h
type ImDrawChannel (line 119) | struct ImDrawChannel
type ImDrawCmd (line 120) | struct ImDrawCmd
type ImDrawData (line 121) | struct ImDrawData
type ImDrawList (line 122) | struct ImDrawList
type ImDrawListSharedData (line 123) | struct ImDrawListSharedData
type ImDrawListSplitter (line 124) | struct ImDrawListSplitter
type ImDrawVert (line 125) | struct ImDrawVert
type ImFont (line 126) | struct ImFont
type ImFontAtlas (line 127) | struct ImFontAtlas
type ImFontConfig (line 128) | struct ImFontConfig
type ImFontGlyph (line 129) | struct ImFontGlyph
type ImFontGlyphRangesBuilder (line 130) | struct ImFontGlyphRangesBuilder
type ImColor (line 131) | struct ImColor
type ImGuiContext (line 132) | struct ImGuiContext
type ImGuiIO (line 133) | struct ImGuiIO
type ImGuiInputTextCallbackData (line 134) | struct ImGuiInputTextCallbackData
type ImGuiListClipper (line 135) | struct ImGuiListClipper
type ImGuiOnceUponAFrame (line 136) | struct ImGuiOnceUponAFrame
type ImGuiPayload (line 137) | struct ImGuiPayload
type ImGuiSizeCallbackData (line 138) | struct ImGuiSizeCallbackData
type ImGuiStorage (line 139) | struct ImGuiStorage
type ImGuiStyle (line 140) | struct ImGuiStyle
type ImGuiTableSortSpecs (line 141) | struct ImGuiTableSortSpecs
type ImGuiTableColumnSortSpecs (line 142) | struct ImGuiTableColumnSortSpecs
type ImGuiTextBuffer (line 143) | struct ImGuiTextBuffer
type ImGuiTextFilter (line 144) | struct ImGuiTextFilter
type ImGuiCol (line 150) | typedef int ImGuiCol;
type ImGuiCond (line 151) | typedef int ImGuiCond;
type ImGuiDataType (line 152) | typedef int ImGuiDataType;
type ImGuiDir (line 153) | typedef int ImGuiDir;
type ImGuiKey (line 154) | typedef int ImGuiKey;
type ImGuiNavInput (line 155) | typedef int ImGuiNavInput;
type ImGuiMouseButton (line 156) | typedef int ImGuiMouseButton;
type ImGuiMouseCursor (line 157) | typedef int ImGuiMouseCursor;
type ImGuiSortDirection (line 158) | typedef int ImGuiSortDirection;
type ImGuiStyleVar (line 159) | typedef int ImGuiStyleVar;
type ImGuiTableBgTarget (line 160) | typedef int ImGuiTableBgTarget;
type ImDrawCornerFlags (line 161) | typedef int ImDrawCornerFlags;
type ImDrawListFlags (line 162) | typedef int ImDrawListFlags;
type ImFontAtlasFlags (line 163) | typedef int ImFontAtlasFlags;
type ImGuiBackendFlags (line 164) | typedef int ImGuiBackendFlags;
type ImGuiButtonFlags (line 165) | typedef int ImGuiButtonFlags;
type ImGuiColorEditFlags (line 166) | typedef int ImGuiColorEditFlags;
type ImGuiConfigFlags (line 167) | typedef int ImGuiConfigFlags;
type ImGuiComboFlags (line 168) | typedef int ImGuiComboFlags;
type ImGuiDragDropFlags (line 169) | typedef int ImGuiDragDropFlags;
type ImGuiFocusedFlags (line 170) | typedef int ImGuiFocusedFlags;
type ImGuiHoveredFlags (line 171) | typedef int ImGuiHoveredFlags;
type ImGuiInputTextFlags (line 172) | typedef int ImGuiInputTextFlags;
type ImGuiKeyModFlags (line 173) | typedef int ImGuiKeyModFlags;
type ImGuiPopupFlags (line 174) | typedef int ImGuiPopupFlags;
type ImGuiSelectableFlags (line 175) | typedef int ImGuiSelectableFlags;
type ImGuiSliderFlags (line 176) | typedef int ImGuiSliderFlags;
type ImGuiTabBarFlags (line 177) | typedef int ImGuiTabBarFlags;
type ImGuiTabItemFlags (line 178) | typedef int ImGuiTabItemFlags;
type ImGuiTableFlags (line 179) | typedef int ImGuiTableFlags;
type ImGuiTableColumnFlags (line 180) | typedef int ImGuiTableColumnFlags;
type ImGuiTableRowFlags (line 181) | typedef int ImGuiTableRowFlags;
type ImGuiTreeNodeFlags (line 182) | typedef int ImGuiTreeNodeFlags;
type ImGuiWindowFlags (line 183) | typedef int ImGuiWindowFlags;
type ImGuiID (line 189) | typedef unsigned int ImGuiID;
type ImWchar16 (line 195) | typedef unsigned short ImWchar16;
type ImWchar32 (line 196) | typedef unsigned int ImWchar32;
type ImWchar32 (line 198) | typedef ImWchar32 ImWchar;
type ImWchar16 (line 200) | typedef ImWchar16 ImWchar;
type ImS8 (line 204) | typedef signed char ImS8;
type ImU8 (line 205) | typedef unsigned char ImU8;
type ImS16 (line 206) | typedef signed short ImS16;
type ImU16 (line 207) | typedef unsigned short ImU16;
type ImS32 (line 208) | typedef signed int ImS32;
type ImU32 (line 209) | typedef unsigned int ImU32;
type ImS64 (line 211) | typedef signed __int64 ImS64;
type ImU64 (line 212) | typedef unsigned __int64 ImU64;
type ImS64 (line 215) | typedef int64_t ImS64;
type ImU64 (line 216) | typedef uint64_t ImU64;
type ImS64 (line 218) | typedef signed long long ImS64;
type ImU64 (line 219) | typedef unsigned long long ImU64;
function ImVec2 (line 223) | struct ImVec2
function const (line 228) | float operator[] (size_t idx) const { IM_ASSERT(idx <= 1); return (&...
function ImVec4 (line 236) | struct ImVec4
function namespace (line 251) | namespace ImGui
type ImGuiWindowFlags_ (line 867) | enum ImGuiWindowFlags_
type ImGuiInputTextFlags_ (line 907) | enum ImGuiInputTextFlags_
type ImGuiTreeNodeFlags_ (line 936) | enum ImGuiTreeNodeFlags_
type ImGuiPopupFlags_ (line 965) | enum ImGuiPopupFlags_
type ImGuiSelectableFlags_ (line 981) | enum ImGuiSelectableFlags_
type ImGuiComboFlags_ (line 992) | enum ImGuiComboFlags_
type ImGuiTabBarFlags_ (line 1006) | enum ImGuiTabBarFlags_
type ImGuiTabItemFlags_ (line 1022) | enum ImGuiTabItemFlags_
type ImGuiTableFlags_ (line 1052) | enum ImGuiTableFlags_
type ImGuiTableColumnFlags_ (line 1095) | enum ImGuiTableColumnFlags_
type ImGuiTableRowFlags_ (line 1131) | enum ImGuiTableRowFlags_
type ImGuiTableBgTarget_ (line 1146) | enum ImGuiTableBgTarget_
type ImGuiFocusedFlags_ (line 1157) | enum ImGuiFocusedFlags_
type ImGuiHoveredFlags_ (line 1169) | enum ImGuiHoveredFlags_
type ImGuiDragDropFlags_ (line 1185) | enum ImGuiDragDropFlags_
type ImGuiDataType_ (line 1207) | enum ImGuiDataType_
type ImGuiDir_ (line 1223) | enum ImGuiDir_
type ImGuiSortDirection_ (line 1234) | enum ImGuiSortDirection_
type ImGuiKey_ (line 1242) | enum ImGuiKey_
type ImGuiKeyModFlags_ (line 1270) | enum ImGuiKeyModFlags_
type ImGuiNavInput_ (line 1283) | enum ImGuiNavInput_
type ImGuiConfigFlags_ (line 1315) | enum ImGuiConfigFlags_
type ImGuiBackendFlags_ (line 1331) | enum ImGuiBackendFlags_
type ImGuiCol_ (line 1341) | enum ImGuiCol_
type ImGuiStyleVar_ (line 1411) | enum ImGuiStyleVar_
type ImGuiButtonFlags_ (line 1442) | enum ImGuiButtonFlags_
type ImGuiColorEditFlags_ (line 1455) | enum ImGuiColorEditFlags_
type ImGuiSliderFlags_ (line 1502) | enum ImGuiSliderFlags_
type ImGuiMouseButton_ (line 1519) | enum ImGuiMouseButton_
type ImGuiMouseCursor_ (line 1529) | enum ImGuiMouseCursor_
type ImGuiCond_ (line 1547) | enum ImGuiCond_
type ImNewWrapper (line 1563) | struct ImNewWrapper {}
function delete (line 1565) | inline void operator delete(void*, ImNewWrapper, void*) {}
type T (line 1591) | typedef T value_type;
type value_type (line 1592) | typedef value_type* iterator;
type value_type (line 1593) | typedef const value_type* const_iterator;
function size_in_bytes (line 1603) | inline int size_in_bytes() const { return Size * ...
function T (line 1606) | inline T& operator[](int i) { IM_ASSERT(i >=...
function T (line 1607) | inline const T& operator[](int i) const { IM_ASSERT(i >=...
function clear (line 1609) | inline void clear() { if (Data) { Si...
function T (line 1610) | inline T* begin() { return Data; }
function T (line 1611) | inline const T* begin() const { return Data; }
function T (line 1612) | inline T* end() { return Data + ...
function T (line 1613) | inline const T* end() const { return Data + ...
function T (line 1614) | inline T& front() { IM_ASSERT(Size...
function T (line 1615) | inline const T& front() const { IM_ASSERT(Size...
function T (line 1617) | inline const T& back() const { IM_ASSERT(Size...
function _grow_capacity (line 1620) | inline int _grow_capacity(int sz) const { int new_capaci...
function resize (line 1621) | inline void resize(int new_size) { if (new_size >...
function resize (line 1622) | inline void resize(int new_size, const T& v) { if (new_size >...
function shrink (line 1623) | inline void shrink(int new_size) { IM_ASSERT(new_...
function reserve (line 1624) | inline void reserve(int new_capacity) { if (new_capaci...
function push_back (line 1627) | inline void push_back(const T& v) { if (Size == Ca...
function pop_back (line 1628) | inline void pop_back() { IM_ASSERT(Size...
function push_front (line 1629) | inline void push_front(const T& v) { if (Size == 0)...
function T (line 1630) | inline T* erase(const T* it) { IM_ASSERT(it >...
function T (line 1631) | inline T* erase(const T* it, const T* it_last){ IM_ASSERT(it >...
function T (line 1632) | inline T* erase_unsorted(const T* it) { IM_ASSERT(it >...
function T (line 1633) | inline T* insert(const T* it, const T& v) { IM_ASSERT(it >...
function contains (line 1634) | inline bool contains(const T& v) const { const T* data ...
function T (line 1635) | inline T* find(const T& v) { T* data = Data...
function T (line 1636) | inline const T* find(const T& v) const { const T* data ...
function find_erase (line 1637) | inline bool find_erase(const T& v) { const T* it = ...
function find_erase_unsorted (line 1638) | inline bool find_erase_unsorted(const T& v) { const T* it = ...
function index_from_ptr (line 1639) | inline int index_from_ptr(const T* it) const { IM_ASSERT(it >...
type ImGuiStyle (line 1649) | struct ImGuiStyle
type ImGuiIO (line 1702) | struct ImGuiIO
function ClearSelection (line 1843) | struct ImGuiInputTextCallbackData
type ImGuiSizeCallbackData (line 1874) | struct ImGuiSizeCallbackData
function Clear (line 1883) | struct ImGuiPayload
function IsDataType (line 1899) | bool IsDataType(const char* type) const { return DataFrameCount != -1 &&...
type ImGuiTableColumnSortSpecs (line 1905) | struct ImGuiTableColumnSortSpecs
type ImGuiTableSortSpecs (line 1919) | struct ImGuiTableSortSpecs
function namespace (line 1934) | namespace ImGui
function DragFloat (line 1943) | static inline bool DragFloat(const char* label, float* v, float v_speed...
function DragFloat2 (line 1944) | static inline bool DragFloat2(const char* label, float v[2], float v_sp...
function DragFloat3 (line 1945) | static inline bool DragFloat3(const char* label, float v[3], float v_sp...
function DragFloat4 (line 1946) | static inline bool DragFloat4(const char* label, float v[4], float v_sp...
function SliderFloat (line 1949) | static inline bool SliderFloat(const char* label, float* v, float v_min...
function SliderFloat2 (line 1950) | static inline bool SliderFloat2(const char* label, float v[2], float v_...
function SliderFloat3 (line 1951) | static inline bool SliderFloat3(const char* label, float v[3], float v_...
function SliderFloat4 (line 1952) | static inline bool SliderFloat4(const char* label, float v[4], float v_...
function BeginPopupContextWindow (line 1954) | static inline bool BeginPopupContextWindow(const char* str_id, ImGuiMou...
function TreeAdvanceToLabelPos (line 1956) | static inline void TreeAdvanceToLabelPos() { SetCursorPos...
function GetContentRegionAvailWidth (line 1960) | static inline float GetContentRegionAvailWidth() { return GetCo...
function ImDrawList (line 1962) | static inline ImDrawList* GetOverlayDrawList() { return GetFo...
function IsItemDeactivatedAfterChange (line 1966) | static inline bool IsItemDeactivatedAfterChange() { return IsIte...
type ImGuiInputTextCallback (line 1968) | typedef ImGuiInputTextCallback ImGuiTextEditCallback;
type ImGuiInputTextCallbackData (line 1969) | typedef ImGuiInputTextCallbackData ImGuiTextEditCallbackData;
type ImGuiOnceUponAFrame (line 1986) | struct ImGuiOnceUponAFrame
function IsActive (line 1994) | struct ImGuiTextFilter
type ImGuiTextBuffer (line 2021) | struct ImGuiTextBuffer
function clear (line 2032) | void clear() { Buf.clear(); }
function reserve (line 2033) | void reserve(int capacity) { Buf.reserve(capacity); }
function ImGuiStoragePair (line 2048) | struct ImGuiStorage
function Clear (line 2065) | void Clear() { Data.clear(); }
type ImGuiListClipper (line 2108) | struct ImGuiListClipper
type ImColor (line 2157) | struct ImColor
function operator (line 2166) | inline operator ImU32() const { return...
type ImDrawCmd (line 2206) | struct ImDrawCmd
type ImDrawIdx (line 2223) | typedef unsigned short ImDrawIdx;
type ImDrawVert (line 2228) | struct ImDrawVert
type ImDrawCmdHeader (line 2243) | struct ImDrawCmdHeader
type ImDrawChannel (line 2251) | struct ImDrawChannel
function ImDrawListSplitter (line 2260) | struct ImDrawListSplitter
function Clear (line 2268) | inline void Clear() { _Current = 0; _Count = 1; }
type ImDrawCornerFlags_ (line 2275) | enum ImDrawCornerFlags_
type ImDrawListFlags_ (line 2291) | enum ImDrawListFlags_
function ImDrawList (line 2308) | struct ImDrawList
function ImVec2 (line 2337) | inline ImVec2 GetClipRectMin() const { const ImVec4& cr = _ClipRectSta...
function PathClear (line 2373) | inline void PathClear() ...
function PathLineTo (line 2374) | inline void PathLineTo(const ImVec2& pos) ...
function PathLineToMergeDuplicate (line 2375) | inline void PathLineToMergeDuplicate(const ImVec2& pos) ...
function PathFillConvex (line 2376) | inline void PathFillConvex(ImU32 col) ...
function ChannelsSplit (line 2394) | inline void ChannelsSplit(int count) { _Splitter.Split(this, coun...
function ChannelsMerge (line 2395) | inline void ChannelsMerge() { _Splitter.Merge(this); }
function ChannelsSetCurrent (line 2396) | inline void ChannelsSetCurrent(int n) { _Splitter.SetCurrentChanne...
function PrimWriteVtx (line 2406) | inline void PrimWriteVtx(const ImVec2& pos, const ImVec2& uv, ImU32 ...
function PrimWriteIdx (line 2407) | inline void PrimWriteIdx(ImDrawIdx idx) ...
function PrimVtx (line 2408) | inline void PrimVtx(const ImVec2& pos, const ImVec2& uv, ImU32 col) ...
function ImDrawData (line 2422) | struct ImDrawData
function Clear (line 2436) | void Clear() { Valid = false; CmdLists = NULL; CmdListsCount = TotalV...
type ImFontConfig (line 2445) | struct ImFontConfig
type ImFontGlyph (line 2474) | struct ImFontGlyph
function Clear (line 2485) | struct ImFontGlyphRangesBuilder
function GetBit (line 2491) | inline bool GetBit(size_t n) const { int off = (int)(n >> 5); ImU32...
function SetBit (line 2492) | inline void SetBit(size_t n) { int off = (int)(n >> 5); ImU32...
function AddChar (line 2493) | inline void AddChar(ImWchar c) { SetBit(c); }
type ImFontAtlasFlags_ (line 2513) | enum ImFontAtlasFlags_
function SetTexID (line 2538) | struct ImFontAtlas
function ImFontAtlasCustomRect (line 2592) | ImFontAtlasCustomRect* GetCustomRectByIndex(int index) { IM_ASSERT(...
type ImFontAtlasCustomRect (line 2626) | typedef ImFontAtlasCustomRect CustomRect;
type ImFontGlyphRangesBuilder (line 2627) | typedef ImFontGlyphRangesBuilder GlyphRangesBuilder;
type ImFont (line 2633) | struct ImFont
FILE: LView/imgui_demo.cpp
function HelpMarker (line 177) | static void HelpMarker(const char* desc)
function ShowDemoWindowWidgets (line 508) | static void ShowDemoWindowWidgets()
function ShowDemoWindowLayout (line 2125) | static void ShowDemoWindowLayout()
function ShowDemoWindowPopups (line 3028) | static void ShowDemoWindowPopups()
type MyItemColumnID (line 3283) | enum MyItemColumnID
type MyItem (line 3292) | struct MyItem
method CompareWithSortSpecs (line 3308) | CompareWithSortSpecs(const void* lhs, const void* rhs)
function PushStyleCompact (line 3341) | static void PushStyleCompact()
function PopStyleCompact (line 3348) | static void PopStyleCompact()
function EditTableColumnsFlags (line 3353) | static void EditTableColumnsFlags(ImGuiTableColumnFlags* p_flags)
function ShowTableColumnsStatusFlags (line 3377) | static void ShowTableColumnsStatusFlags(ImGuiTableColumnFlags flags)
function ShowDemoWindowTables (line 3385) | static void ShowDemoWindowTables()
function ShowExampleAppConsole (line 6304) | static void ShowExampleAppConsole(bool* p_open)
function Draw (line 6318) | struct ExampleAppLog
function ShowExampleAppLog (line 6439) | static void ShowExampleAppLog(bool* p_open)
function ShowExampleAppLayout (line 6473) | static void ShowExampleAppLayout(bool* p_open)
function ShowPlaceholderObject (line 6537) | static void ShowPlaceholderObject(const char* prefix, int uid)
function ShowExampleAppPropertyEditor (line 6585) | static void ShowExampleAppPropertyEditor(bool* p_open)
function ShowExampleAppLongText (line 6620) | static void ShowExampleAppLongText(bool* p_open)
function ShowExampleAppAutoResize (line 6682) | static void ShowExampleAppAutoResize(bool* p_open)
function ShowExampleAppConstrainedResize (line 6706) | static void ShowExampleAppConstrainedResize(bool* p_open)
function ShowExampleAppSimpleOverlay (line 6760) | static void ShowExampleAppSimpleOverlay(bool* p_open)
function ShowExampleAppWindowTitles (line 6803) | static void ShowExampleAppWindowTitles(bool*)
function ShowExampleAppCustomRendering (line 6833) | static void ShowExampleAppCustomRendering(bool* p_open)
type MyDocument (line 7062) | struct MyDocument
method MyDocument (line 7071) | MyDocument(const char* name, bool open = true, const ImVec4& color = I...
method DoOpen (line 7079) | void DoOpen() { Open = true; }
method DoQueueClose (line 7080) | void DoQueueClose() { WantClose = true; }
method DoForceClose (line 7081) | void DoForceClose() { Open = false; Dirty = false; }
method DoSave (line 7082) | void DoSave() { Dirty = false; }
method DisplayContents (line 7085) | static void DisplayContents(MyDocument* doc)
method DisplayContextMenu (line 7102) | static void DisplayContextMenu(MyDocument* doc)
type ExampleAppDocuments (line 7117) | struct ExampleAppDocuments
method ExampleAppDocuments (line 7121) | ExampleAppDocuments()
function NotifyOfDocumentsClosedElsewhere (line 7140) | static void NotifyOfDocumentsClosedElsewhere(ExampleAppDocuments& app)
function ShowExampleAppDocuments (line 7151) | void ShowExampleAppDocuments(bool* p_open)
FILE: LView/imgui_draw.cpp
function ImDrawList (line 425) | ImDrawList* ImDrawList::CloneOutput() const
function ImVec2 (line 1053) | ImVec2 ImBezierCalc(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3...
function PathBezierToCasteljau (line 1064) | static void PathBezierToCasteljau(ImVector<ImVec2>* path, float x1, floa...
function ImFont (line 1842) | ImFont* ImFontAtlas::AddFont(const ImFontConfig* font_cfg)
function Decode85Byte (line 1877) | static unsigned int Decode85Byte(char c) ...
function Decode85 (line 1878) | static void Decode85(const unsigned char* src, unsigned char* dst)
function ImFont (line 1890) | ImFont* ImFontAtlas::AddFontDefault(const ImFontConfig* font_cfg_template)
function ImFont (line 1911) | ImFont* ImFontAtlas::AddFontFromFileTTF(const char* filename, float size...
function ImFont (line 1933) | ImFont* ImFontAtlas::AddFontFromMemoryTTF(void* ttf_data, int ttf_size, ...
function ImFont (line 1946) | ImFont* ImFontAtlas::AddFontFromMemoryCompressedTTF(const void* compress...
function ImFont (line 1958) | ImFont* ImFontAtlas::AddFontFromMemoryCompressedBase85TTF(const char* co...
function ImFontAtlasBuildMultiplyCalcLookupTable (line 2033) | void ImFontAtlasBuildMultiplyCalcLookupTable(unsigned char out_table[...
function ImFontAtlasBuildMultiplyRectAlpha8 (line 2042) | void ImFontAtlasBuildMultiplyRectAlpha8(const unsigned char table[256...
type ImFontBuildSrcData (line 2052) | struct ImFontBuildSrcData
type ImFontBuildDstData (line 2067) | struct ImFontBuildDstData
function UnpackBitVectorToFlatIndexList (line 2075) | static void UnpackBitVectorToFlatIndexList(const ImBitVector* in, ImVect...
function ImFontAtlasBuildWithStbTruetype (line 2087) | bool ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas)
function ImFontAtlasBuildSetupFont (line 2339) | void ImFontAtlasBuildSetupFont(ImFontAtlas* atlas, ImFont* font, ImFontC...
function ImFontAtlasBuildPackCustomRects (line 2354) | void ImFontAtlasBuildPackCustomRects(ImFontAtlas* atlas, void* stbrp_con...
function ImFontAtlasBuildRender1bppRectFromString (line 2381) | void ImFontAtlasBuildRender1bppRectFromString(ImFontAtlas* atlas, int x,...
function ImFontAtlasBuildRenderDefaultTexData (line 2391) | static void ImFontAtlasBuildRenderDefaultTexData(ImFontAtlas* atlas)
function ImFontAtlasBuildRenderLinesTexData (line 2416) | static void ImFontAtlasBuildRenderLinesTexData(ImFontAtlas* atlas)
function ImFontAtlasBuildInit (line 2448) | void ImFontAtlasBuildInit(ImFontAtlas* atlas)
function ImFontAtlasBuildFinish (line 2469) | void ImFontAtlasBuildFinish(ImFontAtlas* atlas)
function ImWchar (line 2514) | const ImWchar* ImFontAtlas::GetGlyphRangesDefault()
function ImWchar (line 2524) | const ImWchar* ImFontAtlas::GetGlyphRangesKorean()
function ImWchar (line 2536) | const ImWchar* ImFontAtlas::GetGlyphRangesChineseFull()
function UnpackAccumulativeOffsetsIntoRanges (line 2551) | static void UnpackAccumulativeOffsetsIntoRanges(int base_codepoint, cons...
function ImWchar (line 2565) | const ImWchar* ImFontAtlas::GetGlyphRangesChineseSimplifiedCommon()
function ImWchar (line 2632) | const ImWchar* ImFontAtlas::GetGlyphRangesJapanese()
function ImWchar (line 2721) | const ImWchar* ImFontAtlas::GetGlyphRangesCyrillic()
function ImWchar (line 2734) | const ImWchar* ImFontAtlas::GetGlyphRangesThai()
function ImWchar (line 2746) | const ImWchar* ImFontAtlas::GetGlyphRangesVietnamese()
function ImFontGlyph (line 2986) | const ImFontGlyph* ImFont::FindGlyph(ImWchar c) const
function ImFontGlyph (line 2996) | const ImFontGlyph* ImFont::FindGlyphNoFallback(ImWchar c) const
function ImVec2 (line 3105) | ImVec2 ImFont::CalcTextSizeA(float size, float max_width, float wrap_wid...
function ImAcos01 (line 3498) | static inline float ImAcos01(float x)
function stb_decompress_length (line 3629) | static unsigned int stb_decompress_length(const unsigned char *input)
function stb__match (line 3637) | static void stb__match(const unsigned char *data, unsigned int length)
function stb__lit (line 3646) | static void stb__lit(const unsigned char *data, unsigned int length)
function stb_adler32 (line 3676) | static unsigned int stb_adler32(unsigned int adler32, unsigned char *buf...
function stb_decompress (line 3707) | static unsigned int stb_decompress(unsigned char *output, const unsigned...
FILE: LView/imgui_impl_dx11.cpp
type VERTEX_CONSTANT_BUFFER (line 56) | struct VERTEX_CONSTANT_BUFFER
function ImGui_ImplDX11_SetupRenderState (line 61) | static void ImGui_ImplDX11_SetupRenderState(ImDrawData* draw_data, ID3D1...
function ImGui_ImplDX11_RenderDrawData (line 97) | void ImGui_ImplDX11_RenderDrawData(ImDrawData* draw_data)
function ImGui_ImplDX11_CreateFontsTexture (line 279) | static void ImGui_ImplDX11_CreateFontsTexture()
function ImGui_ImplDX11_CreateDeviceObjects (line 338) | bool ImGui_ImplDX11_CreateDeviceObjects()
function ImGui_ImplDX11_InvalidateDeviceObjects (line 491) | void ImGui_ImplDX11_InvalidateDeviceObjects()
function ImGui_ImplDX11_Init (line 510) | bool ImGui_ImplDX11_Init(ID3D11Device* device, ID3D11DeviceContext* d...
function ImGui_ImplDX11_Shutdown (line 538) | void ImGui_ImplDX11_Shutdown()
function ImGui_ImplDX11_NewFrame (line 546) | void ImGui_ImplDX11_NewFrame()
FILE: LView/imgui_impl_dx11.h
type ID3D11Device (line 15) | struct ID3D11Device
type ID3D11DeviceContext (line 16) | struct ID3D11DeviceContext
FILE: LView/imgui_impl_win32.cpp
function ImGui_ImplWin32_Init (line 69) | bool ImGui_ImplWin32_Init(void* hwnd)
function ImGui_ImplWin32_Shutdown (line 111) | void ImGui_ImplWin32_Shutdown()
function ImGui_ImplWin32_UpdateMouseCursor (line 116) | static bool ImGui_ImplWin32_UpdateMouseCursor()
function ImGui_ImplWin32_UpdateMousePos (line 149) | static void ImGui_ImplWin32_UpdateMousePos()
function ImGui_ImplWin32_UpdateGamepads (line 170) | static void ImGui_ImplWin32_UpdateGamepads()
function ImGui_ImplWin32_NewFrame (line 218) | void ImGui_ImplWin32_NewFrame()
function IMGUI_IMPL_API (line 276) | IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hwnd, UINT ms...
function BOOL (line 364) | static BOOL IsWindowsVersionOrGreater(WORD major, WORD minor, WORD sp)
function ImGui_ImplWin32_EnableDpiAwareness (line 392) | void ImGui_ImplWin32_EnableDpiAwareness()
function ImGui_ImplWin32_GetDpiScaleForMonitor (line 421) | float ImGui_ImplWin32_GetDpiScaleForMonitor(void* monitor)
function ImGui_ImplWin32_GetDpiScaleForHwnd (line 444) | float ImGui_ImplWin32_GetDpiScaleForHwnd(void* hwnd)
FILE: LView/imgui_internal.h
type ImBitVector (line 90) | struct ImBitVector
type ImRect (line 91) | struct ImRect
type ImDrawDataBuilder (line 92) | struct ImDrawDataBuilder
type ImDrawListSharedData (line 93) | struct ImDrawListSharedData
type ImGuiColorMod (line 94) | struct ImGuiColorMod
type ImGuiContext (line 95) | struct ImGuiContext
type ImGuiContextHook (line 96) | struct ImGuiContextHook
type ImGuiDataTypeInfo (line 97) | struct ImGuiDataTypeInfo
type ImGuiGroupData (line 98) | struct ImGuiGroupData
type ImGuiInputTextState (line 99) | struct ImGuiInputTextState
type ImGuiLastItemDataBackup (line 100) | struct ImGuiLastItemDataBackup
type ImGuiMenuColumns (line 101) | struct ImGuiMenuColumns
type ImGuiNavMoveResult (line 102) | struct ImGuiNavMoveResult
type ImGuiMetricsConfig (line 103) | struct ImGuiMetricsConfig
type ImGuiNextWindowData (line 104) | struct ImGuiNextWindowData
type ImGuiNextItemData (line 105) | struct ImGuiNextItemData
type ImGuiOldColumnData (line 106) | struct ImGuiOldColumnData
type ImGuiOldColumns (line 107) | struct ImGuiOldColumns
type ImGuiPopupData (line 108) | struct ImGuiPopupData
type ImGuiSettingsHandler (line 109) | struct ImGuiSettingsHandler
type ImGuiStackSizes (line 110) | struct ImGuiStackSizes
type ImGuiStyleMod (line 111) | struct ImGuiStyleMod
type ImGuiTabBar (line 112) | struct ImGuiTabBar
type ImGuiTabItem (line 113) | struct ImGuiTabItem
type ImGuiTable (line 114) | struct ImGuiTable
type ImGuiTableColumn (line 115) | struct ImGuiTableColumn
type ImGuiTableSettings (line 116) | struct ImGuiTableSettings
type ImGuiTableColumnsSettings (line 117) | struct ImGuiTableColumnsSettings
type ImGuiWindow (line 118) | struct ImGuiWindow
type ImGuiWindowTempData (line 119) | struct ImGuiWindowTempData
type ImGuiWindowSettings (line 120) | struct ImGuiWindowSettings
type ImGuiLayoutType (line 123) | typedef int ImGuiLayoutType;
type ImGuiItemFlags (line 124) | typedef int ImGuiItemFlags;
type ImGuiItemStatusFlags (line 125) | typedef int ImGuiItemStatusFlags;
type ImGuiOldColumnFlags (line 126) | typedef int ImGuiOldColumnFlags;
type ImGuiNavHighlightFlags (line 127) | typedef int ImGuiNavHighlightFlags;
type ImGuiNavDirSourceFlags (line 128) | typedef int ImGuiNavDirSourceFlags;
type ImGuiNavMoveFlags (line 129) | typedef int ImGuiNavMoveFlags;
type ImGuiNextItemDataFlags (line 130) | typedef int ImGuiNextItemDataFlags;
type ImGuiNextWindowDataFlags (line 131) | typedef int ImGuiNextWindowDataFlags;
type ImGuiSeparatorFlags (line 132) | typedef int ImGuiSeparatorFlags;
type ImGuiTextFlags (line 133) | typedef int ImGuiTextFlags;
type ImGuiTooltipFlags (line 134) | typedef int ImGuiTooltipFlags;
function namespace (line 151) | namespace ImStb
function ImIsPowerOfTwo (line 271) | static inline bool ImIsPowerOfTwo(int v) { return v != 0 ...
function ImIsPowerOfTwo (line 272) | static inline bool ImIsPowerOfTwo(ImU64 v) { return v != 0 ...
function ImUpperPowerOfTwo (line 273) | static inline int ImUpperPowerOfTwo(int v) { v--; v |= v >>...
function ImCharIsBlankA (line 294) | static inline bool ImCharIsBlankA(char c) { return c == ' ...
function ImCharIsBlankW (line 295) | static inline bool ImCharIsBlankW(unsigned int c) { return c == ' ...
function ImFileHandle (line 330) | static inline ImFileHandle ImFileOpen(const char*, const char*) ...
function ImFileClose (line 331) | static inline bool ImFileClose(ImFileHandle) ...
function ImU64 (line 332) | static inline ImU64 ImFileGetSize(ImFileHandle) ...
function ImU64 (line 333) | static inline ImU64 ImFileRead(void*, ImU64, ImU64, ImFileHandle...
function ImU64 (line 334) | static inline ImU64 ImFileWrite(const void*, ImU64, ImU64, ImFil...
type FILE (line 337) | typedef FILE* ImFileHandle;
function ImPow (line 361) | static inline float ImPow(float x, float y) { return powf(x, y); }
function ImPow (line 362) | static inline double ImPow(double x, double y) { return pow(x, y); }
function ImLog (line 363) | static inline float ImLog(float x) { return logf(x); }
function ImLog (line 364) | static inline double ImLog(double x) { return log(x); }
function ImAbs (line 365) | static inline float ImAbs(float x) { return fabsf(x); }
function ImAbs (line 366) | static inline double ImAbs(double x) { return fabs(x); }
function ImSign (line 367) | static inline float ImSign(float x) { return (x < 0.0f) ? -1...
function ImSign (line 368) | static inline double ImSign(double x) { return (x < 0.0) ? -1....
function T (line 372) | inline T ImMin(T lhs, T rhs) { return lhs < rhs ?...
function T (line 373) | inline T ImMax(T lhs, T rhs) { return lhs >= rhs ...
function T (line 374) | inline T ImClamp(T v, T mn, T mx) { return (v < mn) ? ...
function T (line 375) | inline T ImLerp(T a, T b, float t) { return (T)(a + (b ...
function ImSwap (line 376) | inline void ImSwap(T& a, T& b) { T tmp = a; a = b; ...
function T (line 377) | inline T ImAddClampOverflow(T a, T b, T mn, T mx) { if (b < 0 && (a < ...
function T (line 378) | inline T ImSubClampOverflow(T a, T b, T mn, T mx) { if (b > 0 && (a < ...
function ImVec2 (line 380) | static inline ImVec2 ImMin(const ImVec2& lhs, const ImVec2& rhs) ...
function ImVec2 (line 381) | static inline ImVec2 ImMax(const ImVec2& lhs, const ImVec2& rhs) ...
function ImVec2 (line 382) | static inline ImVec2 ImClamp(const ImVec2& v, const ImVec2& mn, ImVec2 m...
function ImVec2 (line 383) | static inline ImVec2 ImLerp(const ImVec2& a, const ImVec2& b, float t) ...
function ImVec2 (line 384) | static inline ImVec2 ImLerp(const ImVec2& a, const ImVec2& b, const ImVe...
function ImVec4 (line 385) | static inline ImVec4 ImLerp(const ImVec4& a, const ImVec4& b, float t) ...
function ImSaturate (line 386) | static inline float ImSaturate(float f) ...
function ImLengthSqr (line 387) | static inline float ImLengthSqr(const ImVec2& lhs) ...
function ImLengthSqr (line 388) | static inline float ImLengthSqr(const ImVec4& lhs) ...
function ImInvLength (line 389) | static inline float ImInvLength(const ImVec2& lhs, float fail_value) ...
function ImFloor (line 390) | static inline float ImFloor(float f) ...
function ImVec2 (line 391) | static inline ImVec2 ImFloor(const ImVec2& v) ...
function ImModPositive (line 392) | static inline int ImModPositive(int a, int b) ...
function ImDot (line 393) | static inline float ImDot(const ImVec2& a, const ImVec2& b) ...
function ImVec2 (line 394) | static inline ImVec2 ImRotate(const ImVec2& v, float cos_a, float sin_a)...
function ImLinearSweep (line 395) | static inline float ImLinearSweep(float current, float target, float sp...
function ImVec2 (line 396) | static inline ImVec2 ImMul(const ImVec2& lhs, const ImVec2& rhs) ...
function ImTriangleArea (line 406) | inline float ImTriangleArea(const ImVec2& a, const ImVec2& b, co...
function ImVec1 (line 411) | struct ImVec1
function ImVec2ih (line 419) | struct ImVec2ih
function explicit (line 424) | explicit ImVec2ih(const ImVec2& rhs) { x = (short)rhs.x; y = (short)rhs....
function ImRect (line 429) | struct IMGUI_API ImRect
function Contains (line 447) | bool Contains(const ImVec2& p) const { return p.x >= Min....
function Contains (line 448) | bool Contains(const ImRect& r) const { return r.Min.x >= Min....
function Overlaps (line 449) | bool Overlaps(const ImRect& r) const { return r.Min.y < Max....
function Add (line 450) | void Add(const ImVec2& p) { if (Min.x > p.x) M...
function Add (line 451) | void Add(const ImRect& r) { if (Min.x > r.Min.x) M...
function Expand (line 452) | void Expand(const float amount) { Min.x -= amount; Min...
function Expand (line 453) | void Expand(const ImVec2& amount) { Min.x -= amount.x; Min...
function Translate (line 454) | void Translate(const ImVec2& d) { Min.x += d.x; Min.y +=...
function TranslateX (line 455) | void TranslateX(float dx) { Min.x += dx; Max.x += ...
function TranslateY (line 456) | void TranslateY(float dy) { Min.y += dy; Max.y += ...
function ClipWith (line 457) | void ClipWith(const ImRect& r) { Min = ImMax(Min, r.Min...
function ClipWithFull (line 458) | void ClipWithFull(const ImRect& r) { Min = ImClamp(Min, r.M...
function Floor (line 459) | void Floor() { Min.x = IM_FLOOR(Min.x...
function ImBitArrayTestBit (line 465) | inline bool ImBitArrayTestBit(const ImU32* arr, int n) { ImU32 ...
function ImBitArrayClearBit (line 466) | inline void ImBitArrayClearBit(ImU32* arr, int n) { ImU32 ...
function ImBitArraySetBit (line 467) | inline void ImBitArraySetBit(ImU32* arr, int n) { ImU32 ...
function ImBitArraySetBitRange (line 468) | inline void ImBitArraySetBitRange(ImU32* arr, int n, int n2)
function IMGUI_API (line 483) | IMGUI_API ImBitArray
function ImBitVector (line 496) | struct IMGUI_API ImBitVector
function set (line 519) | inline void set(T* data, int size) { Data = data; DataEnd =...
function set (line 520) | inline void set(T* data, T* data_end) { Data = data; DataEnd =...
function T (line 523) | inline T& operator[](int i) { T* p = Data + i; IM_AS...
function T (line 524) | inline const T& operator[](int i) const { const T* p = Data + i;...
function T (line 526) | inline T* begin() { return Data; }
function T (line 527) | inline const T* begin() const { return Data; }
function T (line 528) | inline T* end() { return DataEnd; }
function T (line 529) | inline const T* end() const { return DataEnd; }
function index_from_ptr (line 532) | inline int index_from_ptr(const T* it) const { IM_ASSERT(it >= Data &...
function ReserveBytes (line 546) | inline void ReserveBytes(int n, size_t sz) { IM_ASSERT(n == CurrSpa...
function GetArenaSizeInBytes (line 547) | inline int GetArenaSizeInBytes() { return TotalSize; }
function SetArenaBasePtr (line 548) | inline void SetArenaBasePtr(void* base_ptr) { BasePtr = (char*)base_...
function GetSpan (line 552) | void GetSpan(int n, ImSpan<T>* span) { span->set((T*)GetSpanPtrBegin...
type ImPoolIdx (line 558) | typedef int ImPoolIdx;
function IMGUI_API (line 560) | IMGUI_API ImPool
function IMGUI_API (line 587) | IMGUI_API ImChunkStream
function ImDrawListSharedData (line 621) | struct IMGUI_API ImDrawListSharedData
function ClearFreeMemory (line 640) | struct ImDrawDataBuilder
type ImGuiItemFlags_ (line 655) | enum ImGuiItemFlags_
type ImGuiItemStatusFlags_ (line 670) | enum ImGuiItemStatusFlags_
type ImGuiButtonFlagsPrivate_ (line 691) | enum ImGuiButtonFlagsPrivate_
type ImGuiSliderFlagsPrivate_ (line 714) | enum ImGuiSliderFlagsPrivate_
type ImGuiSelectableFlagsPrivate_ (line 721) | enum ImGuiSelectableFlagsPrivate_
type ImGuiTreeNodeFlagsPrivate_ (line 734) | enum ImGuiTreeNodeFlagsPrivate_
type ImGuiSeparatorFlags_ (line 739) | enum ImGuiSeparatorFlags_
type ImGuiTextFlags_ (line 747) | enum ImGuiTextFlags_
type ImGuiTooltipFlags_ (line 753) | enum ImGuiTooltipFlags_
type ImGuiLayoutType_ (line 761) | enum ImGuiLayoutType_
type ImGuiLogType (line 767) | enum ImGuiLogType
type ImGuiAxis (line 777) | enum ImGuiAxis
type ImGuiPlotType (line 784) | enum ImGuiPlotType
type ImGuiInputSource (line 790) | enum ImGuiInputSource
type ImGuiInputReadMode (line 801) | enum ImGuiInputReadMode
type ImGuiNavHighlightFlags_ (line 811) | enum ImGuiNavHighlightFlags_
type ImGuiNavDirSourceFlags_ (line 820) | enum ImGuiNavDirSourceFlags_
type ImGuiNavMoveFlags_ (line 828) | enum ImGuiNavMoveFlags_
type ImGuiNavForward (line 840) | enum ImGuiNavForward
type ImGuiNavLayer (line 847) | enum ImGuiNavLayer
type ImGuiPopupPositionPolicy (line 854) | enum ImGuiPopupPositionPolicy
type ImGuiDataTypeTempStorage (line 861) | struct ImGuiDataTypeTempStorage
type ImGuiDataTypeInfo (line 867) | struct ImGuiDataTypeInfo
type ImGuiDataTypePrivate_ (line 876) | enum ImGuiDataTypePrivate_
type ImGuiColorMod (line 884) | struct ImGuiColorMod
function ImGuiStyleMod (line 891) | struct ImGuiStyleMod
type ImGuiGroupData (line 901) | struct ImGuiGroupData
function ImGuiMenuColumns (line 916) | struct IMGUI_API ImGuiMenuColumns
function ImGuiInputTextState (line 930) | struct IMGUI_API ImGuiInputTextState
type ImGuiPopupData (line 965) | struct ImGuiPopupData
type ImGuiNextWindowDataFlags_ (line 992) | enum ImGuiNextWindowDataFlags_
function ClearFlags (line 1006) | struct ImGuiNextWindowData
type ImGuiNextItemDataFlags_ (line 1028) | enum ImGuiNextItemDataFlags_
function ClearFlags (line 1035) | struct ImGuiNextItemData
type ImGuiShrinkWidthItem (line 1047) | struct ImGuiShrinkWidthItem
function ImGuiPtrOrIndex (line 1053) | struct ImGuiPtrOrIndex
type ImGuiOldColumnFlags_ (line 1067) | enum ImGuiOldColumnFlags_
type ImGuiOldColumnData (line 1087) | struct ImGuiOldColumnData
type ImGuiOldColumns (line 1097) | struct ImGuiOldColumns
type ImGuiWindowSettings (line 1149) | struct ImGuiWindowSettings
type ImGuiSettingsHandler (line 1161) | struct ImGuiSettingsHandler
function ImGuiStackSizes (line 1202) | struct IMGUI_API ImGuiStackSizes
type ImGuiContextHookType (line 1222) | enum ImGuiContextHookType { ImGuiContextHookType_NewFramePre, ImGuiConte...
type ImGuiContextHook (line 1224) | struct ImGuiContextHook
function ImGuiWindowTempData (line 1628) | struct IMGUI_API ImGuiWindowTempData
function ImGuiWindow (line 1683) | struct IMGUI_API ImGuiWindow
type ImGuiTabBarFlagsPrivate_ (line 1810) | enum ImGuiTabBarFlagsPrivate_
type ImGuiTabItemFlagsPrivate_ (line 1818) | enum ImGuiTabItemFlagsPrivate_
type ImGuiTabItem (line 1825) | struct ImGuiTabItem
type ImGuiTabBar (line 1843) | struct ImGuiTabBar
type ImS8 (line 1897) | typedef ImS8 ImGuiTableColumnIdx;
type ImU8 (line 1898) | typedef ImU8 ImGuiTableDrawChannelIdx;
type ImGuiTableCellData (line 1960) | struct ImGuiTableCellData
type ImGuiTable (line 1967) | struct ImGuiTable
type ImGuiTableSettings (line 2102) | struct ImGuiTableSettings
function namespace (line 2122) | namespace ImGui
function IsNavInputDown (line 2265) | inline bool IsNavInputDown(ImGuiNavInput n) ...
function IsNavInputTest (line 2266) | inline bool IsNavInputTest(ImGuiNavInput n, ImGuiInputReadMo...
function RenderBullet (line 2371) | inline void RenderBullet(ImVec2 pos) { Im...
function TempInputIsActive (line 2419) | inline bool TempInputIsActive(ImGuiID id) { ImGuiConte...
function ImGuiInputTextState (line 2420) | inline ImGuiInputTextState* GetInputTextState(ImGuiID id) { ImGuiConte...
function DebugStartItemPicker (line 2442) | inline void DebugStartItemPicker() ...
FILE: LView/imgui_tables.cpp
function ImGuiTableFlags (line 176) | inline ImGuiTableFlags TableFixFlags(ImGuiTableFlags flags, ImGuiWindow*...
function ImGuiTable (line 237) | ImGuiTable* ImGui::TableFindByID(ImGuiID id)
function ImGuiTableColumnFlags (line 576) | static ImGuiTableColumnFlags TableFixColumnFlags(ImGuiTable* table, ImGu...
function TableGetMinColumnWidth (line 604) | static float TableGetMinColumnWidth()
function TableUpdateColumnsWeightFromWidth (line 1264) | static void TableUpdateColumnsWeightFromWidth(ImGuiTable* table)
function ImGuiTableColumnFlags (line 1789) | ImGuiTableColumnFlags ImGui::TableGetColumnFlags(int column_n)
function ImRect (line 1837) | ImRect ImGui::TableGetCellBgRect(const ImGuiTable* table, int column_n)
function ImGuiID (line 1858) | ImGuiID ImGui::TableGetColumnResizeID(const ImGuiTable* table, int colum...
type MergeGroup (line 2061) | struct MergeGroup
function ImGuiTableSortSpecs (line 2326) | ImGuiTableSortSpecs* ImGui::TableGetSortSpecs()
function TableSettingsInit (line 2832) | static void TableSettingsInit(ImGuiTableSettings* settings, ImGuiID id, ...
function TableSettingsCalcChunkSize (line 2844) | static size_t TableSettingsCalcChunkSize(int columns_count)
function ImGuiTableSettings (line 2849) | ImGuiTableSettings* ImGui::TableSettingsCreate(ImGuiID id, int columns_c...
function ImGuiTableSettings (line 2858) | ImGuiTableSettings* ImGui::TableSettingsFindByID(ImGuiID id)
function ImGuiTableSettings (line 2869) | ImGuiTableSettings* ImGui::TableGetBoundSettings(ImGuiTable* table)
function TableSettingsHandler_ClearAll (line 3004) | static void TableSettingsHandler_ClearAll(ImGuiContext* ctx, ImGuiSettin...
function TableSettingsHandler_ApplyAll (line 3013) | static void TableSettingsHandler_ApplyAll(ImGuiContext* ctx, ImGuiSettin...
function TableSettingsHandler_ReadLine (line 3043) | static void TableSettingsHandler_ReadLine(ImGuiContext*, ImGuiSettingsHa...
function TableSettingsHandler_WriteAll (line 3069) | static void TableSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettin...
function GetDraggedColumnOffset (line 3326) | static float GetDraggedColumnOffset(ImGuiOldColumns* columns, int column...
function GetColumnWidthEx (line 3359) | static float GetColumnWidthEx(ImGuiOldColumns* columns, int column_index...
function ImGuiOldColumns (line 3455) | ImGuiOldColumns* ImGui::FindOrCreateColumns(ImGuiWindow* window, ImGuiID...
function ImGuiID (line 3468) | ImGuiID ImGui::GetColumnsID(const char* str_id, int columns_count)
FILE: LView/imgui_widgets.cpp
function ImGuiID (line 834) | ImGuiID ImGui::GetWindowScrollbarID(ImGuiWindow* window, ImGuiAxis axis)
function ImRect (line 840) | ImRect ImGui::GetWindowScrollbarRect(ImGuiWindow* window, ImGuiAxis axis)
function CalcMaxPopupHeightFromItemCount (line 1510) | static float CalcMaxPopupHeightFromItemCount(int items_count)
function Items_ArrayGetter (line 1636) | static bool Items_ArrayGetter(void* data, int idx, const char** out_text)
function Items_SingleStringGetter (line 1645) | static bool Items_SingleStringGetter(void* data, int idx, const char** o...
function ImGuiDataTypeInfo (line 1784) | const ImGuiDataTypeInfo* ImGui::DataTypeGetInfo(ImGuiDataType data_type)
function DataTypeCompareT (line 1965) | static int DataTypeCompareT(const T* lhs, const T* rhs)
function DataTypeClampT (line 1993) | static bool DataTypeClampT(T* v, const T* v_min, const T* v_max)
function GetMinimumStepAtDecimalPrecision (line 2021) | static float GetMinimumStepAtDecimalPrecision(int decimal_precision)
function TYPE (line 2043) | TYPE ImGui::RoundScalarWithFormatT(const char* format, ImGuiDataType dat...
function TYPE (line 2561) | TYPE ImGui::ScaleValueFromRatioT(ImGuiDataType data_type, float t, TYPE ...
function ImParseFormatPrecision (line 3175) | int ImParseFormatPrecision(const char* fmt, int default_precision)
function InputTextCalcTextLenAndLineCount (line 3443) | static int InputTextCalcTextLenAndLineCount(const char* text_begin, cons...
function ImVec2 (line 3457) | static ImVec2 InputTextCalcTextSizeW(const ImWchar* text_begin, const Im...
type ImStb (line 3503) | namespace ImStb
function STB_TEXTEDIT_STRINGLEN (line 3506) | static int STB_TEXTEDIT_STRINGLEN(const STB_TEXTEDIT_STRING* obj) ...
function ImWchar (line 3507) | static ImWchar STB_TEXTEDIT_GETCHAR(const STB_TEXTEDIT_STRING* obj, in...
function STB_TEXTEDIT_GETWIDTH (line 3508) | static float STB_TEXTEDIT_GETWIDTH(STB_TEXTEDIT_STRING* obj, int lin...
function STB_TEXTEDIT_KEYTOTEXT (line 3509) | static int STB_TEXTEDIT_KEYTOTEXT(int key) ...
function STB_TEXTEDIT_LAYOUTROW (line 3511) | static void STB_TEXTEDIT_LAYOUTROW(StbTexteditRow* r, STB_TEXTEDIT_...
function is_separator (line 3524) | static bool is_separator(unsigned int c) ...
function is_word_boundary_from_right (line 3525) | static int is_word_boundary_from_right(STB_TEXTEDIT_STRING* obj, int ...
function STB_TEXTEDIT_MOVEWORDLEFT_IMPL (line 3526) | static int STB_TEXTEDIT_MOVEWORDLEFT_IMPL(STB_TEXTEDIT_STRING* obj, i...
function is_word_boundary_from_left (line 3528) | static int is_word_boundary_from_left(STB_TEXTEDIT_STRING* obj, int i...
function STB_TEXTEDIT_MOVEWORDRIGHT_IMPL (line 3529) | static int STB_TEXTEDIT_MOVEWORDRIGHT_IMPL(STB_TEXTEDIT_STRING* obj, ...
function STB_TEXTEDIT_MOVEWORDRIGHT_IMPL (line 3531) | static int STB_TEXTEDIT_MOVEWORDRIGHT_IMPL(STB_TEXTEDIT_STRING* obj, ...
function STB_TEXTEDIT_DELETECHARS (line 3536) | static void STB_TEXTEDIT_DELETECHARS(STB_TEXTEDIT_STRING* obj, int pos...
function STB_TEXTEDIT_INSERTCHARS (line 3552) | static bool STB_TEXTEDIT_INSERTCHARS(STB_TEXTEDIT_STRING* obj, int pos...
function stb_textedit_replace (line 3608) | static void stb_textedit_replace(STB_TEXTEDIT_STRING* str, STB_Textedi...
function InputTextFilterCharacter (line 3691) | static bool InputTextFilterCharacter(unsigned int* p_char, ImGuiInputTex...
function RenderArrowsForVerticalBar (line 4849) | static void RenderArrowsForVerticalBar(ImDrawList* draw_list, ImVec2 pos...
type ImGuiPlotArrayGetterData (line 6333) | struct ImGuiPlotArrayGetterData
method ImGuiPlotArrayGetterData (line 6338) | ImGuiPlotArrayGetterData(const float* values, int stride) { Values = v...
function Plot_ArrayGetter (line 6341) | static float Plot_ArrayGetter(void* data, int idx)
type ImGuiTabBarSection (line 6819) | struct ImGuiTabBarSection
method ImGuiTabBarSection (line 6825) | ImGuiTabBarSection() { memset(this, 0, sizeof(*this)); }
type ImGui (line 6828) | namespace ImGui
function ImGuiTabBar (line 6864) | static ImGuiTabBar* GetTabBarFromTabBarRef(const ImGuiPtrOrIndex& ref)
function ImGuiPtrOrIndex (line 6870) | static ImGuiPtrOrIndex GetTabBarRefFromTabBar(ImGuiTabBar* tab_bar)
function ImU32 (line 7221) | static ImU32 ImGui::TabBarCalcTabID(ImGuiTabBar* tab_bar, const char* ...
function ImGuiTabItem (line 7242) | ImGuiTabItem* ImGui::TabBarFindTabByID(ImGuiTabBar* tab_bar, ImGuiID tab...
function ImGuiTabItem (line 7356) | static ImGuiTabItem* ImGui::TabBarScrollingButtons(ImGuiTabBar* tab_bar)
function ImGuiTabItem (line 7417) | static ImGuiTabItem* ImGui::TabBarTabListPopupButton(ImGuiTabBar* tab_bar)
function ImVec2 (line 7758) | ImVec2 ImGui::TabItemCalcSize(const char* label, bool has_close_button)
FILE: LView/imstb_rectpack.h
type stbrp_context (line 80) | typedef struct stbrp_context stbrp_context;
type stbrp_node (line 81) | typedef struct stbrp_node stbrp_node;
type stbrp_rect (line 82) | typedef struct stbrp_rect stbrp_rect;
type stbrp_coord (line 85) | typedef int stbrp_coord;
type stbrp_coord (line 87) | typedef unsigned short stbrp_coord;
type stbrp_rect (line 115) | struct stbrp_rect
type stbrp_node (line 175) | struct stbrp_node
type stbrp_context (line 181) | struct stbrp_context
function STBRP_DEF (line 230) | STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic)
function STBRP_DEF (line 242) | STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int ...
function STBRP_DEF (line 262) | STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int ...
function stbrp__skyline_find_min_y (line 295) | static int stbrp__skyline_find_min_y(stbrp_context *c, stbrp_node *first...
type stbrp__findresult (line 345) | typedef struct
function stbrp__findresult (line 351) | static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, ...
function stbrp__findresult (line 453) | static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *co...
function rect_height_compare (line 533) | static int STBRP__CDECL rect_height_compare(const void *a, const void *b)
function rect_original_order (line 545) | static int STBRP__CDECL rect_original_order(const void *a, const void *b)
function STBRP_DEF (line 558) | STBRP_DEF int stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects...
FILE: LView/imstb_textedit.h
type StbUndoRecord (line 299) | typedef struct
type StbUndoState (line 308) | typedef struct
type STB_TexteditState (line 317) | typedef struct
type StbTexteditRow (line 364) | typedef struct
function stb_text_locate_coord (line 398) | static int stb_text_locate_coord(STB_TEXTEDIT_STRING *str, float x, floa...
function stb_textedit_click (line 458) | static void stb_textedit_click(STB_TEXTEDIT_STRING *str, STB_TexteditSta...
function stb_textedit_drag (line 476) | static void stb_textedit_drag(STB_TEXTEDIT_STRING *str, STB_TexteditStat...
type StbFindState (line 508) | typedef struct
function stb_textedit_find_charpos (line 518) | static void stb_textedit_find_charpos(StbFindState *find, STB_TEXTEDIT_S...
function stb_textedit_clamp (line 577) | static void stb_textedit_clamp(STB_TEXTEDIT_STRING *str, STB_TexteditSta...
function stb_textedit_delete (line 591) | static void stb_textedit_delete(STB_TEXTEDIT_STRING *str, STB_TexteditSt...
function stb_textedit_delete_selection (line 599) | static void stb_textedit_delete_selection(STB_TEXTEDIT_STRING *str, STB_...
function stb_textedit_sortselection (line 615) | static void stb_textedit_sortselection(STB_TexteditState *state)
function stb_textedit_move_to_first (line 625) | static void stb_textedit_move_to_first(STB_TexteditState *state)
function stb_textedit_move_to_last (line 636) | static void stb_textedit_move_to_last(STB_TEXTEDIT_STRING *str, STB_Text...
function is_word_boundary (line 648) | static int is_word_boundary( STB_TEXTEDIT_STRING *str, int idx )
function stb_textedit_move_to_word_previous (line 654) | static int stb_textedit_move_to_word_previous( STB_TEXTEDIT_STRING *str,...
function stb_textedit_move_to_word_next (line 669) | static int stb_textedit_move_to_word_next( STB_TEXTEDIT_STRING *str, int...
function stb_textedit_prep_selection_at_cursor (line 687) | static void stb_textedit_prep_selection_at_cursor(STB_TexteditState *state)
function stb_textedit_cut (line 696) | static int stb_textedit_cut(STB_TEXTEDIT_STRING *str, STB_TexteditState ...
function stb_textedit_paste_internal (line 707) | static int stb_textedit_paste_internal(STB_TEXTEDIT_STRING *str, STB_Tex...
function stb_textedit_key (line 730) | static void stb_textedit_key(STB_TEXTEDIT_STRING *str, STB_TexteditState...
function stb_textedit_flush_redo (line 1120) | static void stb_textedit_flush_redo(StbUndoState *state)
function stb_textedit_discard_undo (line 1127) | static void stb_textedit_discard_undo(StbUndoState *state)
function stb_textedit_discard_redo (line 1149) | static void stb_textedit_discard_redo(StbUndoState *state)
function StbUndoRecord (line 1179) | static StbUndoRecord *stb_text_create_undo_record(StbUndoState *state, i...
function STB_TEXTEDIT_CHARTYPE (line 1203) | static STB_TEXTEDIT_CHARTYPE *stb_text_createundo(StbUndoState *state, i...
function stb_text_undo (line 1223) | static void stb_text_undo(STB_TEXTEDIT_STRING *str, STB_TexteditState *s...
function stb_text_redo (line 1291) | static void stb_text_redo(STB_TEXTEDIT_STRING *str, STB_TexteditState *s...
function stb_text_makeundo_insert (line 1342) | static void stb_text_makeundo_insert(STB_TexteditState *state, int where...
function stb_text_makeundo_delete (line 1347) | static void stb_text_makeundo_delete(STB_TEXTEDIT_STRING *str, STB_Texte...
function stb_text_makeundo_replace (line 1357) | static void stb_text_makeundo_replace(STB_TEXTEDIT_STRING *str, STB_Text...
function stb_textedit_clear_state (line 1368) | static void stb_textedit_clear_state(STB_TexteditState *state, int is_si...
function stb_textedit_initialize_state (line 1386) | static void stb_textedit_initialize_state(STB_TexteditState *state, int ...
function stb_textedit_paste (line 1396) | static int stb_textedit_paste(STB_TEXTEDIT_STRING *str, STB_TexteditStat...
FILE: LView/imstb_truetype.h
function my_stbtt_initfont (line 290) | void my_stbtt_initfont(void)
function my_stbtt_print (line 302) | void my_stbtt_print(float x, float y, char *text)
function main (line 335) | int main(int argc, char **argv)
function main (line 376) | int main(int arg, char **argv)
type stbtt_uint8 (line 429) | typedef unsigned char stbtt_uint8;
type stbtt_int8 (line 430) | typedef signed char stbtt_int8;
type stbtt_uint16 (line 431) | typedef unsigned short stbtt_uint16;
type stbtt_int16 (line 432) | typedef signed short stbtt_int16;
type stbtt_uint32 (line 433) | typedef unsigned int stbtt_uint32;
type stbtt_int32 (line 434) | typedef signed int stbtt_int32;
type stbtt__buf (line 514) | typedef struct
type stbtt_bakedchar (line 528) | typedef struct
type stbtt_aligned_quad (line 544) | typedef struct
type stbtt_packedchar (line 576) | typedef struct
type stbtt_pack_context (line 583) | typedef struct stbtt_pack_context stbtt_pack_context;
type stbtt_fontinfo (line 584) | typedef struct stbtt_fontinfo stbtt_fontinfo;
type stbrp_rect (line 586) | typedef struct stbrp_rect stbrp_rect;
type stbtt_pack_range (line 620) | typedef struct
type stbtt_pack_context (line 679) | struct stbtt_pack_context {
type stbtt_fontinfo (line 714) | struct stbtt_fontinfo
type stbtt_vertex (line 824) | typedef struct
type stbtt__bitmap (line 907) | typedef struct
function stbtt_uint8 (line 1116) | static stbtt_uint8 stbtt__buf_get8(stbtt__buf *b)
function stbtt_uint8 (line 1123) | static stbtt_uint8 stbtt__buf_peek8(stbtt__buf *b)
function stbtt__buf_seek (line 1130) | static void stbtt__buf_seek(stbtt__buf *b, int o)
function stbtt__buf_skip (line 1136) | static void stbtt__buf_skip(stbtt__buf *b, int o)
function stbtt_uint32 (line 1141) | static stbtt_uint32 stbtt__buf_get(stbtt__buf *b, int n)
function stbtt__buf (line 1151) | static stbtt__buf stbtt__new_buf(const void *p, size_t size)
function stbtt__buf (line 1164) | static stbtt__buf stbtt__buf_range(const stbtt__buf *b, int o, int s)
function stbtt__buf (line 1173) | static stbtt__buf stbtt__cff_get_index(stbtt__buf *b)
function stbtt_uint32 (line 1187) | static stbtt_uint32 stbtt__cff_int(stbtt__buf *b)
function stbtt__cff_skip_operand (line 1199) | static void stbtt__cff_skip_operand(stbtt__buf *b) {
function stbtt__buf (line 1214) | static stbtt__buf stbtt__dict_get(stbtt__buf *b, int key)
function stbtt__dict_get_ints (line 1229) | static void stbtt__dict_get_ints(stbtt__buf *b, int key, int outcount, s...
function stbtt__cff_index_count (line 1237) | static int stbtt__cff_index_count(stbtt__buf *b)
function stbtt__buf (line 1243) | static stbtt__buf stbtt__cff_index_get(stbtt__buf b, int i)
function stbtt_uint16 (line 1269) | static stbtt_uint16 ttUSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; }
function stbtt_int16 (line 1270) | static stbtt_int16 ttSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; }
function stbtt_uint32 (line 1271) | static stbtt_uint32 ttULONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]...
function stbtt_int32 (line 1272) | static stbtt_int32 ttLONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]...
function stbtt__isfont (line 1277) | static int stbtt__isfont(stbtt_uint8 *font)
function stbtt_uint32 (line 1289) | static stbtt_uint32 stbtt__find_table(stbtt_uint8 *data, stbtt_uint32 fo...
function stbtt_GetFontOffsetForIndex_internal (line 1302) | static int stbtt_GetFontOffsetForIndex_internal(unsigned char *font_coll...
function stbtt_GetNumberOfFonts_internal (line 1321) | static int stbtt_GetNumberOfFonts_internal(unsigned char *font_collection)
function stbtt__buf (line 1337) | static stbtt__buf stbtt__get_subrs(stbtt__buf cff, stbtt__buf fontdict)
function stbtt_InitFont_internal (line 1350) | static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *...
function STBTT_DEF (line 1461) | STBTT_DEF int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unico...
function STBTT_DEF (line 1554) | STBTT_DEF int stbtt_GetCodepointShape(const stbtt_fontinfo *info, int un...
function stbtt_setvertex (line 1559) | static void stbtt_setvertex(stbtt_vertex *v, stbtt_uint8 type, stbtt_int...
function stbtt__GetGlyfOffset (line 1568) | static int stbtt__GetGlyfOffset(const stbtt_fontinfo *info, int glyph_in...
function STBTT_DEF (line 1590) | STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_in...
function STBTT_DEF (line 1606) | STBTT_DEF int stbtt_GetCodepointBox(const stbtt_fontinfo *info, int code...
function STBTT_DEF (line 1611) | STBTT_DEF int stbtt_IsGlyphEmpty(const stbtt_fontinfo *info, int glyph_i...
function stbtt__close_shape (line 1623) | static int stbtt__close_shape(stbtt_vertex *vertices, int num_vertices, ...
function stbtt__GetGlyphShapeTT (line 1639) | static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_...
type stbtt__csctx (line 1865) | typedef struct
function stbtt__track_vertex (line 1879) | static void stbtt__track_vertex(stbtt__csctx *c, stbtt_int32 x, stbtt_in...
function stbtt__csctx_v (line 1888) | static void stbtt__csctx_v(stbtt__csctx *c, stbtt_uint8 type, stbtt_int3...
function stbtt__csctx_close_shape (line 1904) | static void stbtt__csctx_close_shape(stbtt__csctx *ctx)
function stbtt__csctx_rmove_to (line 1910) | static void stbtt__csctx_rmove_to(stbtt__csctx *ctx, float dx, float dy)
function stbtt__csctx_rline_to (line 1918) | static void stbtt__csctx_rline_to(stbtt__csctx *ctx, float dx, float dy)
function stbtt__csctx_rccurve_to (line 1925) | static void stbtt__csctx_rccurve_to(stbtt__csctx *ctx, float dx1, float ...
function stbtt__buf (line 1936) | static stbtt__buf stbtt__get_subr(stbtt__buf idx, int n)
function stbtt__buf (line 1950) | static stbtt__buf stbtt__cid_get_glyph_subrs(const stbtt_fontinfo *info,...
function stbtt__run_charstring (line 1978) | static int stbtt__run_charstring(const stbtt_fontinfo *info, int glyph_i...
function stbtt__GetGlyphShapeT2 (line 2237) | static int stbtt__GetGlyphShapeT2(const stbtt_fontinfo *info, int glyph_...
function stbtt__GetGlyphInfoT2 (line 2254) | static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_i...
function STBTT_DEF (line 2265) | STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_...
function STBTT_DEF (line 2273) | STBTT_DEF void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int gl...
function stbtt__GetGlyphKernInfoAdvance (line 2285) | static int stbtt__GetGlyphKernInfoAdvance(const stbtt_fontinfo *info, i...
function stbtt_int32 (line 2315) | static stbtt_int32 stbtt__GetCoverageIndex(stbtt_uint8 *coverageTable, ...
function stbtt_int32 (line 2374) | static stbtt_int32 stbtt__GetGlyphClass(stbtt_uint8 *classDefTable, int...
function stbtt_int32 (line 2428) | static stbtt_int32 stbtt__GetGlyphGPOSInfoAdvance(const stbtt_fontinfo ...
function STBTT_DEF (line 2556) | STBTT_DEF int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int...
function STBTT_DEF (line 2569) | STBTT_DEF int stbtt_GetCodepointKernAdvance(const stbtt_fontinfo *info,...
function STBTT_DEF (line 2576) | STBTT_DEF void stbtt_GetCodepointHMetrics(const stbtt_fontinfo *info, in...
function STBTT_DEF (line 2581) | STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *as...
function STBTT_DEF (line 2588) | STBTT_DEF int stbtt_GetFontVMetricsOS2(const stbtt_fontinfo *info, int ...
function STBTT_DEF (line 2599) | STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int ...
function STBTT_DEF (line 2607) | STBTT_DEF float stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, fl...
function STBTT_DEF (line 2613) | STBTT_DEF float stbtt_ScaleForMappingEmToPixels(const stbtt_fontinfo *in...
function STBTT_DEF (line 2619) | STBTT_DEF void stbtt_FreeShape(const stbtt_fontinfo *info, stbtt_vertex *v)
function STBTT_DEF (line 2629) | STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *fon...
function STBTT_DEF (line 2647) | STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int g...
function STBTT_DEF (line 2652) | STBTT_DEF void stbtt_GetCodepointBitmapBoxSubpixel(const stbtt_fontinfo ...
function STBTT_DEF (line 2657) | STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, i...
type stbtt__hheap_chunk (line 2666) | typedef struct stbtt__hheap_chunk
type stbtt__hheap (line 2671) | typedef struct stbtt__hheap
function stbtt__hheap_free (line 2699) | static void stbtt__hheap_free(stbtt__hheap *hh, void *p)
function stbtt__hheap_cleanup (line 2705) | static void stbtt__hheap_cleanup(stbtt__hheap *hh, void *userdata)
type stbtt__edge (line 2715) | typedef struct stbtt__edge {
type stbtt__active_edge (line 2721) | typedef struct stbtt__active_edge
function stbtt__active_edge (line 2743) | static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__ed...
function stbtt__active_edge (line 2765) | static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__ed...
function stbtt__fill_active_edges (line 2790) | static void stbtt__fill_active_edges(unsigned char *scanline, int len, s...
function stbtt__rasterize_sorted_edges (line 2832) | static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__...
function stbtt__handle_clipped_edge (line 2936) | static void stbtt__handle_clipped_edge(float *scanline, int x, stbtt__ac...
function stbtt__fill_active_edges_new (line 2973) | static void stbtt__fill_active_edges_new(float *scanline, float *scanlin...
function stbtt__rasterize_sorted_edges (line 3137) | static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__...
function stbtt__sort_edges_ins_sort (line 3239) | static void stbtt__sort_edges_ins_sort(stbtt__edge *p, int n)
function stbtt__sort_edges_quicksort (line 3257) | static void stbtt__sort_edges_quicksort(stbtt__edge *p, int n)
function stbtt__sort_edges (line 3319) | static void stbtt__sort_edges(stbtt__edge *p, int n)
type stbtt__point (line 3325) | typedef struct
function stbtt__rasterize (line 3330) | static void stbtt__rasterize(stbtt__bitmap *result, stbtt__point *pts, i...
function stbtt__add_point (line 3387) | static void stbtt__add_point(stbtt__point *points, int n, float x, float y)
function stbtt__tesselate_curve (line 3395) | static int stbtt__tesselate_curve(stbtt__point *points, int *num_points,...
function stbtt__tesselate_cubic (line 3415) | static void stbtt__tesselate_cubic(stbtt__point *points, int *num_points...
function stbtt__point (line 3458) | static stbtt__point *stbtt_FlattenCurves(stbtt_vertex *vertices, int num...
function STBTT_DEF (line 3535) | STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, float flatness_in_...
function STBTT_DEF (line 3548) | STBTT_DEF void stbtt_FreeBitmap(unsigned char *bitmap, void *userdata)
function STBTT_DEF (line 3598) | STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info,...
function STBTT_DEF (line 3617) | STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigne...
function STBTT_DEF (line 3627) | STBTT_DEF void stbtt_MakeCodepointBitmapSubpixelPrefilter(const stbtt_fo...
function STBTT_DEF (line 3632) | STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *i...
function STBTT_DEF (line 3642) | STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, uns...
function stbtt_BakeFontBitmap_internal (line 3653) | static int stbtt_BakeFontBitmap_internal(unsigned char *data, int offset...
function STBTT_DEF (line 3699) | STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int p...
type stbrp_coord (line 3727) | typedef int stbrp_coord;
type stbrp_context (line 3740) | typedef struct
type stbrp_node (line 3746) | typedef struct
type stbrp_rect (line 3751) | struct stbrp_rect
function stbrp_init_target (line 3757) | static void stbrp_init_target(stbrp_context *con, int pw, int ph, stbrp_...
function stbrp_pack_rects (line 3768) | static void stbrp_pack_rects(stbrp_context *con, stbrp_rect *rects, int ...
function STBTT_DEF (line 3797) | STBTT_DEF int stbtt_PackBegin(stbtt_pack_context *spc, unsigned char *pi...
function STBTT_DEF (line 3829) | STBTT_DEF void stbtt_PackEnd (stbtt_pack_context *spc)
function STBTT_DEF (line 3835) | STBTT_DEF void stbtt_PackSetOversampling(stbtt_pack_context *spc, unsign...
function STBTT_DEF (line 3845) | STBTT_DEF void stbtt_PackSetSkipMissingCodepoints(stbtt_pack_context *sp...
function stbtt__h_prefilter (line 3852) | static void stbtt__h_prefilter(unsigned char *pixels, int w, int h, int ...
function stbtt__v_prefilter (line 3914) | static void stbtt__v_prefilter(unsigned char *pixels, int w, int h, int ...
function stbtt__oversample_shift (line 3976) | static float stbtt__oversample_shift(int oversample)
function STBTT_DEF (line 3989) | STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, c...
function STBTT_DEF (line 4021) | STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontin...
function STBTT_DEF (line 4045) | STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *sp...
function STBTT_DEF (line 4127) | STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, st...
function STBTT_DEF (line 4132) | STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, const unsign...
function STBTT_DEF (line 4168) | STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigne...
function STBTT_DEF (line 4180) | STBTT_DEF void stbtt_GetScaledFontVMetrics(const unsigned char *fontdata...
function STBTT_DEF (line 4193) | STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int...
function stbtt__ray_intersect_bezier (line 4228) | static int stbtt__ray_intersect_bezier(float orig[2], float ray[2], floa...
function equal (line 4292) | static int equal(float *a, float *b)
function stbtt__compute_crossings_x (line 4297) | static int stbtt__compute_crossings_x(float x, float y, int nverts, stbt...
function stbtt__cuberoot (line 4366) | static float stbtt__cuberoot( float x )
function stbtt__solve_cubic (line 4375) | static int stbtt__solve_cubic(float a, float b, float c, float* r)
function STBTT_DEF (line 4597) | STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata)
function stbtt_int32 (line 4608) | static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(stbtt_uint...
function stbtt_CompareUTF8toUTF16_bigendian_internal (line 4647) | static int stbtt_CompareUTF8toUTF16_bigendian_internal(char *s1, int len...
function STBTT_DEF (line 4654) | STBTT_DEF const char *stbtt_GetFontNameString(const stbtt_fontinfo *font...
function stbtt__matchpair (line 4675) | static int stbtt__matchpair(stbtt_uint8 *fc, stbtt_uint32 nm, stbtt_uint...
function stbtt__matches (line 4722) | static int stbtt__matches(stbtt_uint8 *fc, stbtt_uint32 offset, stbtt_ui...
function stbtt_FindMatchingFont_internal (line 4751) | static int stbtt_FindMatchingFont_internal(unsigned char *font_collectio...
function STBTT_DEF (line 4767) | STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset,
function STBTT_DEF (line 4774) | STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *data, int...
function STBTT_DEF (line 4779) | STBTT_DEF int stbtt_GetNumberOfFonts(const unsigned char *data)
function STBTT_DEF (line 4784) | STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *...
function STBTT_DEF (line 4789) | STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *fontdata, cons...
function STBTT_DEF (line 4794) | STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len...
FILE: LView/stb_image.h
type stbi_uc (line 356) | typedef unsigned char stbi_uc;
type stbi_us (line 357) | typedef unsigned short stbi_us;
type stbi_io_callbacks (line 380) | typedef struct
type stbi__uint16 (line 609) | typedef unsigned short stbi__uint16;
type stbi__int16 (line 610) | typedef signed short stbi__int16;
type stbi__uint32 (line 611) | typedef unsigned int stbi__uint32;
type stbi__int32 (line 612) | typedef signed int stbi__int32;
type stbi__uint16 (line 615) | typedef uint16_t stbi__uint16;
type stbi__int16 (line 616) | typedef int16_t stbi__int16;
type stbi__uint32 (line 617) | typedef uint32_t stbi__uint32;
type stbi__int32 (line 618) | typedef int32_t stbi__int32;
function stbi__cpuid3 (line 699) | static int stbi__cpuid3(void)
function stbi__sse2_available (line 721) | static int stbi__sse2_available(void)
function stbi__sse2_available (line 732) | static int stbi__sse2_available(void)
type stbi__context (line 769) | typedef struct
function stbi__start_mem (line 790) | static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int...
function stbi__start_callbacks (line 800) | static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c...
function stbi__stdio_read (line 814) | static int stbi__stdio_read(void *user, char *data, int size)
function stbi__stdio_skip (line 819) | static void stbi__stdio_skip(void *user, int n)
function stbi__stdio_eof (line 829) | static int stbi__stdio_eof(void *user)
function stbi__start_file (line 841) | static void stbi__start_file(stbi__context *s, FILE *f)
function stbi__rewind (line 850) | static void stbi__rewind(stbi__context *s)
type stbi__result_info (line 865) | typedef struct
function STBIDEF (line 935) | STBIDEF const char *stbi_failure_reason(void)
function stbi__err (line 941) | static int stbi__err(const char *str)
function stbi__addsizes_valid (line 965) | static int stbi__addsizes_valid(int a, int b)
function stbi__mul2sizes_valid (line 977) | static int stbi__mul2sizes_valid(int a, int b)
function stbi__mad2sizes_valid (line 987) | static int stbi__mad2sizes_valid(int a, int b, int add)
function stbi__mad3sizes_valid (line 994) | static int stbi__mad3sizes_valid(int a, int b, int c, int add)
function stbi__mad4sizes_valid (line 1002) | static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add)
function STBIDEF (line 1047) | STBIDEF void stbi_image_free(void *retval_from_stbi_load)
function STBIDEF (line 1062) | STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip)
function STBIDEF (line 1072) | STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_sh...
function stbi_uc (line 1130) | static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, ...
function stbi__uint16 (line 1146) | static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, ...
function stbi__vertical_flip (line 1162) | static void stbi__vertical_flip(void *image, int w, int h, int bytes_per...
function stbi__vertical_flip_slices (line 1187) | static void stbi__vertical_flip_slices(void *image, int w, int h, int z,...
function stbi__uint16 (line 1226) | static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, ...
function stbi__float_postprocess (line 1254) | static void stbi__float_postprocess(float *result, int *x, int *y, int *...
function STBIDEF (line 1271) | STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, c...
function FILE (line 1277) | static FILE *stbi__fopen(char const *filename, char const *mode)
function STBIDEF (line 1306) | STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *co...
function STBIDEF (line 1316) | STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp,...
function STBIDEF (line 1329) | STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, in...
function STBIDEF (line 1342) | STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int ...
function STBIDEF (line 1355) | STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len...
function STBIDEF (line 1362) | STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *cl...
function STBIDEF (line 1369) | STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, i...
function STBIDEF (line 1376) | STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk,...
function STBIDEF (line 1384) | STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int le...
function STBIDEF (line 1418) | STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, in...
function STBIDEF (line 1425) | STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, ...
function STBIDEF (line 1433) | STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *com...
function STBIDEF (line 1443) | STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, ...
function STBIDEF (line 1457) | STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len)
function STBIDEF (line 1471) | STBIDEF int stbi_is_hdr(char const *filename)
function STBIDEF (line 1482) | STBIDEF int stbi_is_hdr_from_file(FILE *f)
function STBIDEF (line 1499) | STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clb...
function STBIDEF (line 1515) | STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = ga...
function STBIDEF (line 1516) | STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = sc...
function STBIDEF (line 1521) | STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = ...
function STBIDEF (line 1522) | STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = ...
function stbi__refill_buffer (line 1537) | static void stbi__refill_buffer(stbi__context *s)
function stbi_inline (line 1555) | stbi_inline static stbi_uc stbi__get8(stbi__context *s)
function stbi_inline (line 1569) | stbi_inline static int stbi__at_eof(stbi__context *s)
function stbi__skip (line 1585) | static void stbi__skip(stbi__context *s, int n)
function stbi__getn (line 1607) | static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n)
function stbi__get16be (line 1636) | static int stbi__get16be(stbi__context *s)
function stbi__uint32 (line 1646) | static stbi__uint32 stbi__get32be(stbi__context *s)
function stbi__get16le (line 1656) | static int stbi__get16le(stbi__context *s)
function stbi__uint32 (line 1664) | static stbi__uint32 stbi__get32le(stbi__context *s)
function stbi_uc (line 1687) | static stbi_uc stbi__compute_y(int r, int g, int b)
function stbi__uint16 (line 1744) | static stbi__uint16 stbi__compute_y_16(int r, int g, int b)
function stbi__uint16 (line 1753) | static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_...
function stbi_uc (line 1825) | static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp)
type stbi__huffman (line 1879) | typedef struct
type stbi__jpeg (line 1890) | typedef struct
function stbi__build_huffman (line 1944) | static int stbi__build_huffman(stbi__huffman *h, int *count)
function stbi__build_fast_ac (line 1988) | static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h)
function stbi__grow_buffer_unsafe (line 2013) | static void stbi__grow_buffer_unsafe(stbi__jpeg *j)
function stbi_inline (line 2035) | stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffm...
function stbi_inline (line 2089) | stbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n)
function stbi_inline (line 2105) | stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n)
function stbi_inline (line 2116) | stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j)
function stbi__jpeg_decode_block (line 2144) | static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__...
function stbi__jpeg_decode_block_prog_dc (line 2198) | static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64]...
function stbi__jpeg_decode_block_prog_ac (line 2227) | static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64]...
function stbi_inline (line 2354) | stbi_inline static stbi_uc stbi__clamp(int x)
function stbi__idct_block (line 2405) | static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64])
function stbi__idct_simd (line 2469) | static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])
function stbi__idct_simd (line 2650) | static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])
function stbi_uc (line 2858) | static stbi_uc stbi__get_marker(stbi__jpeg *j)
function stbi__jpeg_reset (line 2875) | static void stbi__jpeg_reset(stbi__jpeg *j)
function stbi__parse_entropy_coded_data (line 2888) | static int stbi__parse_entropy_coded_data(stbi__jpeg *z)
function stbi__jpeg_dequantize (line 3016) | static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant)
function stbi__jpeg_finish (line 3023) | static void stbi__jpeg_finish(stbi__jpeg *z)
function stbi__process_marker (line 3042) | static int stbi__process_marker(stbi__jpeg *z, int m)
function stbi__process_scan_header (line 3147) | static int stbi__process_scan_header(stbi__jpeg *z)
function stbi__free_jpeg_components (line 3187) | static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why)
function stbi__process_frame_header (line 3209) | static int stbi__process_frame_header(stbi__jpeg *z, int scan)
function stbi__decode_jpeg_header (line 3303) | static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan)
function stbi__decode_jpeg_image (line 3328) | static int stbi__decode_jpeg_image(stbi__jpeg *j)
type stbi_uc (line 3372) | typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_u...
function stbi_uc (line 3377) | static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *...
function stbi_uc (line 3386) | static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, s...
function stbi_uc (line 3396) | static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, ...
function stbi_uc (line 3426) | static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, ...
function stbi_uc (line 3451) | static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_n...
function stbi_uc (line 3567) | static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_nea...
function stbi__YCbCr_to_RGB_row (line 3581) | static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const...
function stbi__YCbCr_to_RGB_simd (line 3607) | static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi...
function stbi__setup_jpeg (line 3742) | static void stbi__setup_jpeg(stbi__jpeg *j)
function stbi__cleanup_jpeg (line 3764) | static void stbi__cleanup_jpeg(stbi__jpeg *j)
type stbi__resample (line 3769) | typedef struct
function stbi_uc (line 3780) | static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y)
function stbi_uc (line 3786) | static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, i...
function stbi__jpeg_test (line 3966) | static int stbi__jpeg_test(stbi__context *s)
function stbi__jpeg_info_raw (line 3978) | static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp)
function stbi__jpeg_info (line 3990) | static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp)
type stbi__zhuffman (line 4016) | typedef struct
function stbi_inline (line 4026) | stbi_inline static int stbi__bitreverse16(int n)
function stbi_inline (line 4035) | stbi_inline static int stbi__bit_reverse(int v, int bits)
function stbi__zbuild_huffman (line 4043) | static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizeli...
type stbi__zbuf (line 4096) | typedef struct
function stbi_inline (line 4110) | stbi_inline static int stbi__zeof(stbi__zbuf *z)
function stbi_inline (line 4115) | stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z)
function stbi__fill_bits (line 4120) | static void stbi__fill_bits(stbi__zbuf *z)
function stbi__zreceive (line 4132) | int stbi__zreceive(stbi__zbuf *z, int n)
function stbi__zhuffman_decode_slowpath (line 4142) | static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z)
function stbi_inline (line 4161) | stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffm...
function stbi__zexpand (line 4180) | static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to m...
function stbi__parse_huffman_block (line 4216) | static int stbi__parse_huffman_block(stbi__zbuf *a)
function stbi__compute_huffman_codes (line 4260) | static int stbi__compute_huffman_codes(stbi__zbuf *a)
function stbi__parse_uncompressed_block (line 4313) | static int stbi__parse_uncompressed_block(stbi__zbuf *a)
function stbi__parse_zlib_header (line 4342) | static int stbi__parse_zlib_header(stbi__zbuf *a)
function stbi__parse_zlib (line 4385) | static int stbi__parse_zlib(stbi__zbuf *a, int parse_header)
function stbi__do_zlib (line 4416) | static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, i...
function STBIDEF (line 4426) | STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int ...
function STBIDEF (line 4443) | STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *...
function STBIDEF (line 4448) | STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *b...
function STBIDEF (line 4465) | STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const ...
function STBIDEF (line 4476) | STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int l...
function STBIDEF (line 4493) | STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, co...
type stbi__pngchunk (line 4516) | typedef struct
function stbi__pngchunk (line 4522) | static stbi__pngchunk stbi__get_chunk_header(stbi__context *s)
function stbi__check_png_header (line 4530) | static int stbi__check_png_header(stbi__context *s)
type stbi__png (line 4539) | typedef struct
function stbi__paeth (line 4567) | static int stbi__paeth(int a, int b, int c)
function stbi__create_png_image_raw (line 4581) | static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__...
function stbi__create_png_image (line 4800) | static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stb...
function stbi__compute_transparency (line 4844) | static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int o...
function stbi__compute_transparency16 (line 4870) | static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3]...
function stbi__expand_png_palette (line 4896) | static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int ...
function STBIDEF (line 4937) | STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpr...
function STBIDEF (line 4942) | STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_conv...
function stbi__de_iphone (line 4947) | static void stbi__de_iphone(stbi__png *z)
function stbi__parse_png_file (line 4995) | static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)
function stbi__png_test (line 5215) | static int stbi__png_test(stbi__context *s)
function stbi__png_info_raw (line 5223) | static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp)
function stbi__png_info (line 5235) | static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp)
function stbi__png_is16 (line 5242) | static int stbi__png_is16(stbi__context *s)
function stbi__bmp_test_raw (line 5259) | static int stbi__bmp_test_raw(stbi__context *s)
function stbi__bmp_test (line 5274) | static int stbi__bmp_test(stbi__context *s)
function stbi__high_bit (line 5283) | static int stbi__high_bit(unsigned int z)
function stbi__bitcount (line 5295) | static int stbi__bitcount(unsigned int a)
function stbi__shiftsigned (line 5308) | static int stbi__shiftsigned(unsigned int v, int shift, int bits)
type stbi__bmp_data (line 5328) | typedef struct
function stbi__tga_get_comp (line 5628) | static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_r...
function stbi__tga_info (line 5644) | static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp)
function stbi__tga_test (line 5711) | static int stbi__tga_test(stbi__context *s)
function stbi__tga_read_rgb16 (line 5744) | static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out)
function stbi__psd_test (line 5979) | static int stbi__psd_test(stbi__context *s)
function stbi__psd_decode_rle (line 5986) | static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelC...
function stbi__pic_is4 (line 6244) | static int stbi__pic_is4(stbi__context *s, const char *str)
function stbi__pic_test_core (line 6254) | static int stbi__pic_test_core(stbi__context *s)
type stbi__pic_packet (line 6270) | typedef struct
function stbi_uc (line 6275) | static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest)
function stbi__copyval (line 6289) | static void stbi__copyval(int channel, stbi_uc *dest, const stbi_uc *src)
function stbi_uc (line 6298) | static stbi_uc *stbi__pic_load_core(stbi__context *s, int width, int hei...
function stbi__pic_test (line 6449) | static int stbi__pic_test(stbi__context *s)
type stbi__gif_lzw (line 6461) | typedef struct
type stbi__gif (line 6468) | typedef struct
function stbi__gif_test_raw (line 6488) | static int stbi__gif_test_raw(stbi__context *s)
function stbi__gif_test (line 6498) | static int stbi__gif_test(stbi__context *s)
function stbi__gif_parse_colortable (line 6505) | static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256...
function stbi__gif_header (line 6516) | static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, i...
function stbi__gif_info_raw (line 6547) | static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp)
function stbi__out_gif_code (line 6561) | static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code)
function stbi_uc (line 6598) | static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g)
function stbi_uc (line 6690) | static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int ...
function stbi__gif_info (line 6982) | static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp)
function stbi__hdr_test_core (line 6992) | static int stbi__hdr_test_core(stbi__context *s, const char *signature)
function stbi__hdr_test (line 7002) | static int stbi__hdr_test(stbi__context* s)
function stbi__hdr_convert (line 7036) | static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp)
function stbi__hdr_info (line 7197) | static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp)
function stbi__bmp_info (line 7243) | static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp)
function stbi__psd_info (line 7266) | static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)
function stbi__psd_is16 (line 7301) | static int stbi__psd_is16(stbi__context *s)
function stbi__pic_info (line 7330) | static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp)
function stbi__pnm_test (line 7402) | static int stbi__pnm_test(stbi__context *s)
function stbi__pnm_isspace (line 7443) | static int stbi__pnm_isspace(char c)
function stbi__pnm_skip_whitespace (line 7448) | static void stbi__pnm_skip_whitespace(stbi__context *s, char *c)
function stbi__pnm_isdigit (line 7462) | static int stbi__pnm_isdigit(char c)
function stbi__pnm_getinteger (line 7467) | static int stbi__pnm_getinteger(stbi__context *s, char *c)
function stbi__pnm_info (line 7479) | static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp)
function stbi__info_main (line 7518) | static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp)
function stbi__is_16_main (line 7560) | static int stbi__is_16_main(stbi__context *s)
function STBIDEF (line 7574) | STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp)
function STBIDEF (line 7584) | STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp)
function STBIDEF (line 7595) | STBIDEF int stbi_is_16_bit(char const *filename)
function STBIDEF (line 7605) | STBIDEF int stbi_is_16_bit_from_file(FILE *f)
function STBIDEF (line 7617) | STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x...
function STBIDEF (line 7624) | STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *u...
function STBIDEF (line 7631) | STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len)
function STBIDEF (line 7638) | STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, vo...
FILE: UtilityScripts/DownloadIcons.py
function download_icons (line 13) | def download_icons(url, f_filter = lambda x: True):
function read_character_icons (line 31) | def read_character_icons(url_characters, url_character_icons, f_filter =...
function read_other_icons (line 53) | def read_other_icons():
FILE: UtilityScripts/GenerateUnitData.py
function find_key_ending_with (line 8) | def find_key_ending_with(dictionary, partial_key):
Condensed preview — 296 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,526K chars).
[
{
"path": ".gitignore",
"chars": 72,
"preview": "x64/\nDebug/\nRelease/\nLView/boost/\nLView/Debug/\nLView/Release/\nLView/x64/"
},
{
"path": "GameplayScripts/auto_smite.py",
"chars": 1479,
"preview": "from lview import *\n\nenable_key = 0\nshow_smitable = False\n\nenabled_autosmite = False\n\nlview_script_info = {\n\t\"script\": \""
},
{
"path": "GameplayScripts/auto_spell.py",
"chars": 1731,
"preview": "from lview import *\nfrom commons.targeting import TargetingConfig\nfrom commons.skills import *\nimport json, time\nfrom pp"
},
{
"path": "GameplayScripts/base_script.py",
"chars": 308,
"preview": "from lview import *\n\nlview_script_info = {\n\t\"script\": \"<script-name>\",\n\t\"author\": \"<author-name>\",\n\t\"description\": \"<scr"
},
{
"path": "GameplayScripts/champ_tracker.py",
"chars": 2191,
"preview": "from lview import *\nfrom time import time\n\nlview_script_info = {\n\t\"script\": \"Champion Tracker\",\n\t\"author\": \"leryss\",\n\t\"d"
},
{
"path": "GameplayScripts/commons/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "GameplayScripts/commons/damage_calculator.py",
"chars": 4981,
"preview": "import enum\nfrom typing import Optional\n\nclass DamageType(enum.Enum):\n True_ = 0\n Normal = 1\n Magic = 2\n\nclass "
},
{
"path": "GameplayScripts/commons/items.py",
"chars": 1464,
"preview": "from lview import *\n\ndef crit_from_items(items):\n\tcrit = 0.0\n\tfor item in items:\n\t\tcrit += item.crit\n\treturn crit\n\ndef o"
},
{
"path": "GameplayScripts/commons/skills.py",
"chars": 17468,
"preview": "from lview import *\nimport math, itertools, time\nfrom . import items\n\nVersion = \"experimental version\"\nMissileToSpell = "
},
{
"path": "GameplayScripts/commons/targeting.py",
"chars": 2171,
"preview": "from enum import Enum\n\nclass Target(Enum):\n\tClosestToPlayer = 0\n\tLowestHealth = 1\n\tMostFed = 2\n\nclass Targeti"
},
{
"path": "GameplayScripts/drawings.py",
"chars": 6903,
"preview": "### Note: \n### Currently the code to draw skillshots is disabled because there are way too many exceptions to make a gen"
},
{
"path": "GameplayScripts/execution_notifier.py",
"chars": 808,
"preview": "from lview import *\nimport commons.damage_calculator as damage_calculator\n\nlview_script_info = {\n\t\"script\": \"Execution n"
},
{
"path": "GameplayScripts/map_awareness.py",
"chars": 3850,
"preview": "from lview import *\n\nlview_script_info = {\n\t\"script\": \"Map Awareness\",\n\t\"author\": \"leryss\",\n\t\"description\": \"Cheat that "
},
{
"path": "GameplayScripts/object_viewer.py",
"chars": 6262,
"preview": "from lview import *\nfrom pprint import pprint\n\nlview_script_info = {\n\t\"script\": \"Object Explorer\",\n\t\"author\": \"leryss\",\n"
},
{
"path": "GameplayScripts/orb_walker.py",
"chars": 3463,
"preview": "from lview import *\nfrom commons import skills\nfrom commons.targeting import TargetingConfig\nimport time, json\n\nlview_sc"
},
{
"path": "GameplayScripts/spell_tracker.py",
"chars": 2556,
"preview": "from lview import *\n\nshow_local_champ = False\nshow_allies = False\nshow_enemies = False\n\nlview_script_info = {\n\t\"script\":"
},
{
"path": "GameplayScripts/tf_card_picker.py",
"chars": 1545,
"preview": "from lview import *\n\nlview_script_info = {\n\t\"script\": \"Twisted Fate Card Picker\",\n\t\"author\": \"leryss\",\n\t\"description\": \""
},
{
"path": "GameplayScripts/util_make_heightmap.py____",
"chars": 3981,
"preview": "\n\nfrom lview import *\nimport json, time, os\nfrom pprint import pformat\n\nlview_script_info = {\n\t\"script\": \"Util Make Heig"
},
{
"path": "GameplayScripts/vision_tracker.py",
"chars": 4171,
"preview": "from lview import *\nimport json\n\nlview_script_info = {\n\t\"script\": \"Vision Tracker\",\n\t\"author\": \"leryss\",\n\t\"description\":"
},
{
"path": "LView/AntiCrack.cpp",
"chars": 1336,
"preview": "#include \"AntiCrack.h\"\n#include \"Windows.h\"\n#include <array>\n#include <unordered_map>\n#include <sstream>\n\nstd::string ex"
},
{
"path": "LView/AntiCrack.h",
"chars": 152,
"preview": "#pragma once\n#include <string>\n\n/// Utilities to prevent people from craking the cheat in 1 hour\nnamespace AntiCrack {\n\n"
},
{
"path": "LView/Benchmark.h",
"chars": 244,
"preview": "#pragma once\n\nstruct UIBenchmark {\n\tfloat renderTimeMs;\n\tfloat processTimeMs;\n};\n\nstruct ReadBenchmark {\n\tfloat readObje"
},
{
"path": "LView/ConfigSet.cpp",
"chars": 2403,
"preview": "#include \"ConfigSet.h\"\n#include <fstream>\n\nConfigSet* ConfigSet::instance = nullptr;\n\nvoid ConfigSet::LoadFromFile() {\n\t"
},
{
"path": "LView/ConfigSet.h",
"chars": 1221,
"preview": "#pragma once\n#include <string>\n#include <map>\n\n/// Class used to save and load configs\nclass ConfigSet {\n\npublic:\n\t/// O"
},
{
"path": "LView/GameData.cpp",
"chars": 7362,
"preview": "#include \"GameData.h\"\n#include <boost/json.hpp>\n#include <fstream>\n#include <filesystem>\n#include \"Utils.h\"\n#include \"Ov"
},
{
"path": "LView/GameData.h",
"chars": 1027,
"preview": "#pragma once\n#include <map>\n#include \"UnitInfo.h\"\n#include \"SpellInfo.h\"\n#include \"Texture2D.h\"\n#include \"ItemInfo.h\"\n\n/"
},
{
"path": "LView/GameObject.cpp",
"chars": 8504,
"preview": "#include \"GameObject.h\"\n#include \"Utils.h\"\n#include \"Offsets.h\"\n#include \"Spell.h\"\n#include \"GameData.h\"\n\nBYTE GameObje"
},
{
"path": "LView/GameObject.h",
"chars": 4935,
"preview": "#pragma once\n#include <string>\n#include <map>\n#include <chrono>\n\n#include \"Vector.h\"\n#include \"windows.h\"\n#include \"Memo"
},
{
"path": "LView/GameRenderer.cpp",
"chars": 3531,
"preview": "#include \"GameRenderer.h\"\n#include \"Offsets.h\"\n#include \"Utils.h\"\n#include \"MapObject.h\"\n#include <algorithm>\n\n\nvoid Gam"
},
{
"path": "LView/GameRenderer.h",
"chars": 1413,
"preview": "#pragma once\n#include \"Vector.h\"\n#include \"windows.h\"\n#include \"imgui.h\"\n\n/// Represents the state of the games renderer"
},
{
"path": "LView/Input.cpp",
"chars": 3623,
"preview": "#include \"Input.h\"\n#include \"windows.h\"\n#include <chrono>\n#include \"Vector.h\"\n\nusing namespace std::chrono;\n\nvoid Input:"
},
{
"path": "LView/Input.h",
"chars": 2060,
"preview": "#pragma once\n#include \"Vector.h\"\n\n/* Took from https://www.millisecond.com/support/docs/v6/html/language/scancodes.htm *"
},
{
"path": "LView/ItemInfo.h",
"chars": 307,
"preview": "\n#pragma once\n#include <map>\n\nstruct ItemInfo {\n\npublic:\n\tint id;\n\tfloat cost;\n\tfloat movementSpeed;\n\tfloat health;\n\tflo"
},
{
"path": "LView/ItemSlot.cpp",
"chars": 875,
"preview": "#include \"ItemSlot.h\"\n\nint ItemSlot::GetId()\n{\n\treturn stats->id;\n}\n\nfloat ItemSlot::GetCost()\n{\n\treturn stats->cost;\n}\n"
},
{
"path": "LView/ItemSlot.h",
"chars": 471,
"preview": "#pragma once\n#include \"ItemInfo.h\"\n\nclass ItemSlot {\n\npublic:\n\tint GetId();\n\tfloat GetCost();\n\tfloat GetMovementSpeed();"
},
{
"path": "LView/LView.cpp",
"chars": 6100,
"preview": "#define BOOST_DEBUG_PYTHON \n#define USE_IMPORT_EXPORT\n#define USE_WINDOWS_DLL_SEMANTICS\n#define STB_IMAGE_IMPLEMENTATIO"
},
{
"path": "LView/LView.vcxproj",
"chars": 12314,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.microso"
},
{
"path": "LView/LView.vcxproj.filters",
"chars": 9435,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "LView/LView.vcxproj.user",
"chars": 160,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "LView/LeagueMemoryReader.cpp",
"chars": 8145,
"preview": "#include \"LeagueMemoryReader.h\"\n#include \"windows.h\"\n#include \"Utils.h\"\n#include \"Structs.h\"\n#include \"psapi.h\"\n#include"
},
{
"path": "LView/LeagueMemoryReader.h",
"chars": 1735,
"preview": "#pragma once\n\n#include \"windows.h\"\n#include \"GameObject.h\"\n#include \"GameRenderer.h\"\n#include \"Offsets.h\"\n#include \"MemS"
},
{
"path": "LView/MapObject.cpp",
"chars": 1029,
"preview": "#include \"MapObject.h\"\n#include <fstream>\n#include \"Utils.h\"\n\nstd::array<std::shared_ptr<MapObject>, 2> MapObject::maps "
},
{
"path": "LView/MapObject.h",
"chars": 774,
"preview": "#pragma once\n#include <array>\n#include <memory>\n\nenum MapType {\n\tSUMMONERS_RIFT = 0,\n\tHOWLING_ABYSS = 1\n};\n\nclass MapOb"
},
{
"path": "LView/MemSnapshot.h",
"chars": 1889,
"preview": "#pragma once\n#include <vector>\n#include <set>\n#include <map>\n#include \"Benchmark.h\"\n#include \"GameRenderer.h\"\n#include \""
},
{
"path": "LView/MemoryLoadable.h",
"chars": 217,
"preview": "#pragma once\n#include \"windows.h\"\n\n/// Interface to be implemented by game objects that are read from memory\nclass Memor"
},
{
"path": "LView/Offsets.cpp",
"chars": 2025,
"preview": "#include \"Offsets.h\"\n\nOffsets::Offsets() {};\n\nint Offsets::GameTime = 0x30d2c58;\n\nint Offsets::ObjIndex = 0x20;\nint Offs"
},
{
"path": "LView/Offsets.h",
"chars": 1607,
"preview": "#pragma once\n#include \"ConfigSet.h\"\n\n/// Defines offsets for reading structs from league of legends memory\nclass Offsets"
},
{
"path": "LView/Overlay.cpp",
"chars": 11806,
"preview": "#include \"Overlay.h\"\n#include \"Utils.h\"\n#include \"Structs.h\"\n#include \"LeagueMemoryReader.h\"\n#include \"Benchmark.h\"\n\n#in"
},
{
"path": "LView/Overlay.h",
"chars": 2472,
"preview": "#pragma once\n#include \"Structs.h\"\n#include \"LeagueMemoryReader.h\"\n\n#include <chrono>\n#include <map>\n#include <list>\n\n#in"
},
{
"path": "LView/PyGame.h",
"chars": 9336,
"preview": "#pragma once\n#include <boost/python.hpp>\n#include \"MemSnapshot.h\"\n#include \"Utils.h\"\n\nusing namespace boost::python;\n\n//"
},
{
"path": "LView/PyImguiInterface.h",
"chars": 7261,
"preview": "#pragma once\n#include \"imgui.h\"\n#include <boost/python.hpp>\nusing namespace boost::python;\n\n/// Interface used by python"
},
{
"path": "LView/PyStructs.h",
"chars": 22990,
"preview": "#pragma once\n\n#include <boost/python/suite/indexing/map_indexing_suite.hpp>\n#include <boost/python.hpp>\n\n#include \"GameO"
},
{
"path": "LView/Script.cpp",
"chars": 3552,
"preview": "#include \"Script.h\"\n#include <stdio.h>\n\nstd::string GetPyError()\n{\n\tPyObject *exc, *val, *tb;\n\tPyErr_Fetch(&exc, &val, &"
},
{
"path": "LView/Script.h",
"chars": 1006,
"preview": "#pragma once\n#include \"PyGame.h\"\n#include \"PyImguiInterface.h\"\n#include \"Python.h\"\n#include \"ConfigSet.h\"\n#include <chro"
},
{
"path": "LView/ScriptManager.cpp",
"chars": 2002,
"preview": "#include \"ScriptManager.h\"\n#include <filesystem>\n\nvoid ScriptManager::LoadAll(std::string scriptsLocation, std::string& "
},
{
"path": "LView/ScriptManager.h",
"chars": 582,
"preview": "#pragma once\n#include <string>\n#include \"Script.h\"\n\n/// Manages gameplay scripts executed in Python\nclass ScriptManager "
},
{
"path": "LView/Spell.cpp",
"chars": 3189,
"preview": "#include \"Spell.h\"\n#include \"Utils.h\"\n#include \"Offsets.h\"\n#include \"GameData.h\"\n\nBYTE Spell::buffer[0x150];\nconst char*"
},
{
"path": "LView/Spell.h",
"chars": 2104,
"preview": "#pragma once\n#include <string>\n#include \"windows.h\"\n#include <map>\n#include \"Input.h\"\n#include \"MemoryLoadable.h\"\n#inclu"
},
{
"path": "LView/SpellInfo.cpp",
"chars": 142,
"preview": "#include \"SpellInfo.h\"\n\n\nSpellInfo * SpellInfo::AddFlags(SpellFlags flags)\n{\n\tthis->flags = (SpellFlags)(this->flags | f"
},
{
"path": "LView/SpellInfo.h",
"chars": 1537,
"preview": "#pragma once\n#include <string>\n#include <map>\n\n/// Flags of a spell/missile (they are the same thing anyway)\nenum SpellF"
},
{
"path": "LView/SpellInterface.h",
"chars": 598,
"preview": "#pragma once\n#include \"SpellInfo.h\"\n\n/// Used to expose spell information to python\nclass SpellInterface {\n\n\tvirtual boo"
},
{
"path": "LView/Structs.cpp",
"chars": 48,
"preview": "#include \"Structs.h\"\n#include <ctype.h>\n\n\n\n\n\n\n\n\n"
},
{
"path": "LView/Structs.h",
"chars": 150,
"preview": "#pragma once\n\n#include \"windows.h\"\n#include \"Offsets.h\"\n#include \"Utils.h\"\n#include \"imgui.h\"\n#include <string>\n#include"
},
{
"path": "LView/Texture2D.cpp",
"chars": 1483,
"preview": "#include \"Texture2D.h\"\n\nTexture2D* Texture2D::LoadFromFile(ID3D11Device* dxDevice, std::string file)\n{\n\tTexture2D* textu"
},
{
"path": "LView/Texture2D.h",
"chars": 251,
"preview": "#pragma once\n#include \"stb_image.h\"\n#include <d3d11.h>\n#include <functional>\n\nclass Texture2D {\n\npublic:\n\tstatic Texture"
},
{
"path": "LView/UnitInfo.cpp",
"chars": 3625,
"preview": "#include \"UnitInfo.h\"\n\nstd::map<std::string, UnitTag> UnitInfo::TagMapping = {\n\t{std::string(\"Unit_\"), Unit_},\n\t{std::st"
},
{
"path": "LView/UnitInfo.h",
"chars": 2138,
"preview": "\n#pragma once\n#include <map>\n#include <string>\n#include <bitset>\n#include <array>\n\n\nenum UnitTag {\n\tUnit_ = 1,\n\tUnit_Cha"
},
{
"path": "LView/Utils.cpp",
"chars": 1947,
"preview": "#include \"Utils.h\"\n#include <algorithm>\n#include <cmath>\n#include <ctime>\n\nDWORD Mem::ReadDWORD(HANDLE hProcess, DWORD a"
},
{
"path": "LView/Utils.h",
"chars": 2896,
"preview": "#pragma once\n\n#include <string>\n#include <stdexcept>\n#include \"windows.h\"\n#include \"imgui.h\"\n\n#include \"Input.h\"\n#includ"
},
{
"path": "LView/Vector.h",
"chars": 2694,
"preview": "#pragma once\n#include <cmath>\n\nstruct Vector2 {\n\tVector2() {};\n\tVector2(float _x, float _y) {\n\t\tx = _x;\n\t\ty = _y; \n\t}\n\n\t"
},
{
"path": "LView/config.ini",
"chars": 2112,
"preview": "::scriptsFolder=F:\\Github\\LViewLoL\\GameplayScripts\nAuto Smite::enable_key=41\nAuto Smite::enabled=1\nAuto Smite::show_smit"
},
{
"path": "LView/data/ItemData.json",
"chars": 75113,
"preview": "[\n {\n \"movementSpeed\": 25,\n \"health\": 0.0,\n \"crit\": 0.0,\n \"abilityPower\": 0.0,\n \"m"
},
{
"path": "LView/data/SpellData.json",
"chars": 1054178,
"preview": "[\n {\n \"name\": \"AatroxBasicAttack\",\n \"icon\": \"\",\n \"flags\": 5327,\n \"delay\": 0.4499999992549"
},
{
"path": "LView/data/SpellDataCustom.json",
"chars": 3871,
"preview": "[\n\t{\n \"name\": \"s5_summonersmiteduel\",\n \"icon\": \"smite_red\",\n \"flags\": 0,\n \"delay\": 0.0,\n "
},
{
"path": "LView/data/UnitData.json",
"chars": 249177,
"preview": "[\n {\n \"name\": \"aatrox\",\n \"healthBarHeight\": 140.0,\n \"baseMoveSpeed\": 345.0,\n \"attackRange"
},
{
"path": "LView/external_includes/Python-ast.h",
"chars": 26193,
"preview": "/* File automatically generated by Parser/asdl_c.py. */\n\n#ifndef Py_PYTHON_AST_H\n#define Py_PYTHON_AST_H\n#ifdef __cplusp"
},
{
"path": "LView/external_includes/Python.h",
"chars": 3690,
"preview": "#ifndef Py_PYTHON_H\n#define Py_PYTHON_H\n/* Since this is a \"meta-include\" file, no #ifdef __cplusplus / extern \"C\" { */\n"
},
{
"path": "LView/external_includes/abstract.h",
"chars": 30477,
"preview": "/* Abstract Object Interface (many thanks to Jim Fulton) */\n\n#ifndef Py_ABSTRACTOBJECT_H\n#define Py_ABSTRACTOBJECT_H\n#if"
},
{
"path": "LView/external_includes/asdl.h",
"chars": 1224,
"preview": "#ifndef Py_LIMITED_API\n#ifndef Py_ASDL_H\n#define Py_ASDL_H\n\ntypedef PyObject * identifier;\ntypedef PyObject * string;\nty"
},
{
"path": "LView/external_includes/ast.h",
"chars": 947,
"preview": "#ifndef Py_LIMITED_API\n#ifndef Py_AST_H\n#define Py_AST_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include \"Python-ast.h\""
},
{
"path": "LView/external_includes/bitset.h",
"chars": 468,
"preview": "\n#ifndef Py_BITSET_H\n#define Py_BITSET_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Bitset interface */\n\n#define BYTE "
},
{
"path": "LView/external_includes/bltinmodule.h",
"chars": 264,
"preview": "#ifndef Py_BLTINMODULE_H\n#define Py_BLTINMODULE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nPyAPI_DATA(PyTypeObject) PyFil"
},
{
"path": "LView/external_includes/boolobject.h",
"chars": 885,
"preview": "/* Boolean object interface */\n\n#ifndef Py_BOOLOBJECT_H\n#define Py_BOOLOBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"
},
{
"path": "LView/external_includes/bytearrayobject.h",
"chars": 1484,
"preview": "/* ByteArray object interface */\n\n#ifndef Py_BYTEARRAYOBJECT_H\n#define Py_BYTEARRAYOBJECT_H\n#ifdef __cplusplus\nextern \"C"
},
{
"path": "LView/external_includes/bytesobject.h",
"chars": 3048,
"preview": "\n/* Bytes (String) object interface */\n\n#ifndef Py_BYTESOBJECT_H\n#define Py_BYTESOBJECT_H\n#ifdef __cplusplus\nextern \"C\" "
},
{
"path": "LView/external_includes/cellobject.h",
"chars": 712,
"preview": "/* Cell object interface */\n#ifndef Py_LIMITED_API\n#ifndef Py_CELLOBJECT_H\n#define Py_CELLOBJECT_H\n#ifdef __cplusplus\nex"
},
{
"path": "LView/external_includes/ceval.h",
"chars": 5954,
"preview": "#ifndef Py_CEVAL_H\n#define Py_CEVAL_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* Interface to random parts in ceval.c *"
},
{
"path": "LView/external_includes/classobject.h",
"chars": 1657,
"preview": "/* Former class object interface -- now only bound methods are here */\n\n/* Revealing some structures (not for general u"
},
{
"path": "LView/external_includes/code.h",
"chars": 318,
"preview": "/* Definitions for bytecode */\n\n#ifndef Py_CODE_H\n#define Py_CODE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef stru"
},
{
"path": "LView/external_includes/codecs.h",
"chars": 6793,
"preview": "#ifndef Py_CODECREGISTRY_H\n#define Py_CODECREGISTRY_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* -----------------------"
},
{
"path": "LView/external_includes/compile.h",
"chars": 3778,
"preview": "#ifndef Py_COMPILE_H\n#define Py_COMPILE_H\n\n#ifndef Py_LIMITED_API\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Public int"
},
{
"path": "LView/external_includes/complexobject.h",
"chars": 1806,
"preview": "/* Complex number structure */\n\n#ifndef Py_COMPLEXOBJECT_H\n#define Py_COMPLEXOBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#e"
},
{
"path": "LView/external_includes/context.h",
"chars": 1962,
"preview": "#ifndef Py_CONTEXT_H\n#define Py_CONTEXT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_LIMITED_API\n\n\nPyAPI_DATA(Py"
},
{
"path": "LView/external_includes/cpython/abstract.h",
"chars": 14202,
"preview": "#ifndef Py_CPYTHON_ABSTRACTOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus"
},
{
"path": "LView/external_includes/cpython/bytearrayobject.h",
"chars": 769,
"preview": "#ifndef Py_CPYTHON_BYTEARRAYOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\n/* Object layout "
},
{
"path": "LView/external_includes/cpython/bytesobject.h",
"chars": 4114,
"preview": "#ifndef Py_CPYTHON_BYTESOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\ntypedef struct {\n "
},
{
"path": "LView/external_includes/cpython/ceval.h",
"chars": 1537,
"preview": "#ifndef Py_CPYTHON_CEVAL_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nextern \""
},
{
"path": "LView/external_includes/cpython/code.h",
"chars": 6989,
"preview": "#ifndef Py_CPYTHON_CODE_H\n# error \"this header file must not be included directly\"\n#endif\n\ntypedef uint16_t _Py_CODEUNI"
},
{
"path": "LView/external_includes/cpython/dictobject.h",
"chars": 3800,
"preview": "#ifndef Py_CPYTHON_DICTOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\next"
},
{
"path": "LView/external_includes/cpython/fileobject.h",
"chars": 721,
"preview": "#ifndef Py_CPYTHON_FILEOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\next"
},
{
"path": "LView/external_includes/cpython/fileutils.h",
"chars": 4004,
"preview": "#ifndef Py_CPYTHON_FILEUTILS_H\n# error \"this header file must not be included directly\"\n#endif\n\ntypedef enum {\n _Py_"
},
{
"path": "LView/external_includes/cpython/frameobject.h",
"chars": 3059,
"preview": "/* Frame object interface */\n\n#ifndef Py_CPYTHON_FRAMEOBJECT_H\n# error \"this header file must not be included directly\""
},
{
"path": "LView/external_includes/cpython/import.h",
"chars": 1473,
"preview": "#ifndef Py_CPYTHON_IMPORT_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nextern "
},
{
"path": "LView/external_includes/cpython/initconfig.h",
"chars": 16979,
"preview": "#ifndef Py_PYCORECONFIG_H\n#define Py_PYCORECONFIG_H\n#ifndef Py_LIMITED_API\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* --"
},
{
"path": "LView/external_includes/cpython/interpreteridobject.h",
"chars": 456,
"preview": "#ifndef Py_CPYTHON_INTERPRETERIDOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplu"
},
{
"path": "LView/external_includes/cpython/listobject.h",
"chars": 1364,
"preview": "#ifndef Py_CPYTHON_LISTOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\next"
},
{
"path": "LView/external_includes/cpython/methodobject.h",
"chars": 1399,
"preview": "#ifndef Py_CPYTHON_METHODOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\nPyAPI_DATA(PyTypeObj"
},
{
"path": "LView/external_includes/cpython/object.h",
"chars": 19358,
"preview": "#ifndef Py_CPYTHON_OBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nextern "
},
{
"path": "LView/external_includes/cpython/objimpl.h",
"chars": 4456,
"preview": "#ifndef Py_CPYTHON_OBJIMPL_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nextern"
},
{
"path": "LView/external_includes/cpython/pyerrors.h",
"chars": 5101,
"preview": "#ifndef Py_CPYTHON_ERRORS_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nextern "
},
{
"path": "LView/external_includes/cpython/pylifecycle.h",
"chars": 2096,
"preview": "#ifndef Py_CPYTHON_PYLIFECYCLE_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nex"
},
{
"path": "LView/external_includes/cpython/pymem.h",
"chars": 3511,
"preview": "#ifndef Py_CPYTHON_PYMEM_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nextern \""
},
{
"path": "LView/external_includes/cpython/pystate.h",
"chars": 10167,
"preview": "#ifndef Py_CPYTHON_PYSTATE_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nextern"
},
{
"path": "LView/external_includes/cpython/sysmodule.h",
"chars": 575,
"preview": "#ifndef Py_CPYTHON_SYSMODULE_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nexte"
},
{
"path": "LView/external_includes/cpython/traceback.h",
"chars": 473,
"preview": "#ifndef Py_CPYTHON_TRACEBACK_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nexte"
},
{
"path": "LView/external_includes/cpython/tupleobject.h",
"chars": 1036,
"preview": "#ifndef Py_CPYTHON_TUPLEOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\nex"
},
{
"path": "LView/external_includes/cpython/unicodeobject.h",
"chars": 45576,
"preview": "#ifndef Py_CPYTHON_UNICODEOBJECT_H\n# error \"this header file must not be included directly\"\n#endif\n\n#ifdef __cplusplus\n"
},
{
"path": "LView/external_includes/datetime.h",
"chars": 9255,
"preview": "/* datetime.h\n */\n#ifndef Py_LIMITED_API\n#ifndef DATETIME_H\n#define DATETIME_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"
},
{
"path": "LView/external_includes/descrobject.h",
"chars": 3019,
"preview": "/* Descriptors */\n#ifndef Py_DESCROBJECT_H\n#define Py_DESCROBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef PyOb"
},
{
"path": "LView/external_includes/dictobject.h",
"chars": 3715,
"preview": "#ifndef Py_DICTOBJECT_H\n#define Py_DICTOBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Dictionary object type -- map"
},
{
"path": "LView/external_includes/dynamic_annotations.h",
"chars": 22469,
"preview": "/* Copyright (c) 2008-2009, Google Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "LView/external_includes/enumobject.h",
"chars": 253,
"preview": "#ifndef Py_ENUMOBJECT_H\n#define Py_ENUMOBJECT_H\n\n/* Enumerate Object */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nPyAPI_D"
},
{
"path": "LView/external_includes/errcode.h",
"chars": 1624,
"preview": "#ifndef Py_ERRCODE_H\n#define Py_ERRCODE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* Error codes passed around between "
},
{
"path": "LView/external_includes/eval.h",
"chars": 1209,
"preview": "\n/* Interface to execute compiled code */\n\n#ifndef Py_EVAL_H\n#define Py_EVAL_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nP"
},
{
"path": "LView/external_includes/exports.h",
"chars": 1098,
"preview": "#ifndef Py_EXPORTS_H\n#define Py_EXPORTS_H\n\n#if defined(_WIN32) || defined(__CYGWIN__)\n #define Py_IMPORTED_SYMBOL __d"
},
{
"path": "LView/external_includes/fileobject.h",
"chars": 1571,
"preview": "/* File object interface (what's left of it -- see io.py) */\n\n#ifndef Py_FILEOBJECT_H\n#define Py_FILEOBJECT_H\n#ifdef __c"
},
{
"path": "LView/external_includes/fileutils.h",
"chars": 597,
"preview": "#ifndef Py_FILEUTILS_H\n#define Py_FILEUTILS_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(Py_LIMITED_API) || Py"
},
{
"path": "LView/external_includes/floatobject.h",
"chars": 4360,
"preview": "\n/* Float object interface */\n\n/*\nPyFloatObject represents a (double precision) floating point number.\n*/\n\n#ifndef Py_FL"
},
{
"path": "LView/external_includes/frameobject.h",
"chars": 337,
"preview": "/* Frame object interface */\n\n#ifndef Py_FRAMEOBJECT_H\n#define Py_FRAMEOBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"
},
{
"path": "LView/external_includes/funcobject.h",
"chars": 4057,
"preview": "\n/* Function object interface */\n#ifndef Py_LIMITED_API\n#ifndef Py_FUNCOBJECT_H\n#define Py_FUNCOBJECT_H\n#ifdef __cpluspl"
},
{
"path": "LView/external_includes/genericaliasobject.h",
"chars": 334,
"preview": "// Implementation of PEP 585: support list[int] etc.\n#ifndef Py_GENERICALIASOBJECT_H\n#define Py_GENERICALIASOBJECT_H\n#if"
},
{
"path": "LView/external_includes/genobject.h",
"chars": 3525,
"preview": "\n/* Generator object interface */\n\n#ifndef Py_LIMITED_API\n#ifndef Py_GENOBJECT_H\n#define Py_GENOBJECT_H\n#ifdef __cpluspl"
},
{
"path": "LView/external_includes/graminit.h",
"chars": 2118,
"preview": "/* Generated by Parser/pgen */\n\n#define single_input 256\n#define file_input 257\n#define eval_input 258\n#define decorator"
},
{
"path": "LView/external_includes/grammar.h",
"chars": 1821,
"preview": "\n/* Grammar interface */\n\n#ifndef Py_GRAMMAR_H\n#define Py_GRAMMAR_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include \"bi"
},
{
"path": "LView/external_includes/import.h",
"chars": 3026,
"preview": "/* Module definition and import interface */\n\n#ifndef Py_IMPORT_H\n#define Py_IMPORT_H\n#ifdef __cplusplus\nextern \"C\" {\n#e"
},
{
"path": "LView/external_includes/internal/pegen_interface.h",
"chars": 953,
"preview": "#ifndef Py_PEGENINTERFACE\n#define Py_PEGENINTERFACE\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n# err"
},
{
"path": "LView/external_includes/internal/pycore_abstract.h",
"chars": 479,
"preview": "#ifndef Py_INTERNAL_ABSTRACT_H\n#define Py_INTERNAL_ABSTRACT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_C"
},
{
"path": "LView/external_includes/internal/pycore_accu.h",
"chars": 1126,
"preview": "#ifndef Py_LIMITED_API\n#ifndef Py_INTERNAL_ACCU_H\n#define Py_INTERNAL_ACCU_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**"
},
{
"path": "LView/external_includes/internal/pycore_atomic.h",
"chars": 16977,
"preview": "#ifndef Py_ATOMIC_H\n#define Py_ATOMIC_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n# error \"this hea"
},
{
"path": "LView/external_includes/internal/pycore_bytes_methods.h",
"chars": 3384,
"preview": "#ifndef Py_LIMITED_API\n#ifndef Py_BYTES_CTYPE_H\n#define Py_BYTES_CTYPE_H\n\n#ifndef Py_BUILD_CORE\n# error \"this header re"
},
{
"path": "LView/external_includes/internal/pycore_byteswap.h",
"chars": 2620,
"preview": "/* Bytes swap functions, reverse order of bytes:\n\n - _Py_bswap16(uint16_t)\n - _Py_bswap32(uint32_t)\n - _Py_bswap64"
},
{
"path": "LView/external_includes/internal/pycore_call.h",
"chars": 870,
"preview": "#ifndef Py_INTERNAL_CALL_H\n#define Py_INTERNAL_CALL_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n# e"
},
{
"path": "LView/external_includes/internal/pycore_ceval.h",
"chars": 3930,
"preview": "#ifndef Py_INTERNAL_CEVAL_H\n#define Py_INTERNAL_CEVAL_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n# "
},
{
"path": "LView/external_includes/internal/pycore_code.h",
"chars": 542,
"preview": "#ifndef Py_INTERNAL_CODE_H\n#define Py_INTERNAL_CODE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n \ntypedef struct {\n PyOb"
},
{
"path": "LView/external_includes/internal/pycore_condvar.h",
"chars": 2809,
"preview": "#ifndef Py_INTERNAL_CONDVAR_H\n#define Py_INTERNAL_CONDVAR_H\n\n#ifndef Py_BUILD_CORE\n# error \"this header requires Py_BUI"
},
{
"path": "LView/external_includes/internal/pycore_context.h",
"chars": 800,
"preview": "#ifndef Py_INTERNAL_CONTEXT_H\n#define Py_INTERNAL_CONTEXT_H\n\n#ifndef Py_BUILD_CORE\n# error \"this header requires Py_BUI"
},
{
"path": "LView/external_includes/internal/pycore_dtoa.h",
"chars": 646,
"preview": "#ifndef PY_NO_SHORT_FLOAT_REPR\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n# error \"this header requi"
},
{
"path": "LView/external_includes/internal/pycore_fileutils.h",
"chars": 1254,
"preview": "#ifndef Py_INTERNAL_FILEUTILS_H\n#define Py_INTERNAL_FILEUTILS_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD"
},
{
"path": "LView/external_includes/internal/pycore_gc.h",
"chars": 6647,
"preview": "#ifndef Py_INTERNAL_GC_H\n#define Py_INTERNAL_GC_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n# error"
},
{
"path": "LView/external_includes/internal/pycore_getopt.h",
"chars": 490,
"preview": "#ifndef Py_INTERNAL_PYGETOPT_H\n#define Py_INTERNAL_PYGETOPT_H\n\n#ifndef Py_BUILD_CORE\n# error \"this header requires Py_B"
},
{
"path": "LView/external_includes/internal/pycore_gil.h",
"chars": 1565,
"preview": "#ifndef Py_INTERNAL_GIL_H\n#define Py_INTERNAL_GIL_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n# err"
},
{
"path": "LView/external_includes/internal/pycore_hamt.h",
"chars": 3127,
"preview": "#ifndef Py_INTERNAL_HAMT_H\n#define Py_INTERNAL_HAMT_H\n\n#ifndef Py_BUILD_CORE\n# error \"this header requires Py_BUILD_COR"
},
{
"path": "LView/external_includes/internal/pycore_hashtable.h",
"chars": 4197,
"preview": "#ifndef Py_INTERNAL_HASHTABLE_H\n#define Py_INTERNAL_HASHTABLE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD"
},
{
"path": "LView/external_includes/internal/pycore_import.h",
"chars": 473,
"preview": "#ifndef Py_LIMITED_API\n#ifndef Py_INTERNAL_IMPORT_H\n#define Py_INTERNAL_IMPORT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n"
},
{
"path": "LView/external_includes/internal/pycore_initconfig.h",
"chars": 5183,
"preview": "#ifndef Py_INTERNAL_CORECONFIG_H\n#define Py_INTERNAL_CORECONFIG_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUI"
},
{
"path": "LView/external_includes/internal/pycore_interp.h",
"chars": 5270,
"preview": "#ifndef Py_INTERNAL_INTERP_H\n#define Py_INTERNAL_INTERP_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n"
},
{
"path": "LView/external_includes/internal/pycore_object.h",
"chars": 4037,
"preview": "#ifndef Py_INTERNAL_OBJECT_H\n#define Py_INTERNAL_OBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n"
},
{
"path": "LView/external_includes/internal/pycore_pathconfig.h",
"chars": 1936,
"preview": "#ifndef Py_INTERNAL_PATHCONFIG_H\n#define Py_INTERNAL_PATHCONFIG_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUI"
},
{
"path": "LView/external_includes/internal/pycore_pyerrors.h",
"chars": 2032,
"preview": "#ifndef Py_INTERNAL_PYERRORS_H\n#define Py_INTERNAL_PYERRORS_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_C"
},
{
"path": "LView/external_includes/internal/pycore_pyhash.h",
"chars": 206,
"preview": "#ifndef Py_INTERNAL_HASH_H\n#define Py_INTERNAL_HASH_H\n\n#ifndef Py_BUILD_CORE\n# error \"this header requires Py_BUILD_COR"
},
{
"path": "LView/external_includes/internal/pycore_pylifecycle.h",
"chars": 3741,
"preview": "#ifndef Py_INTERNAL_LIFECYCLE_H\n#define Py_INTERNAL_LIFECYCLE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD"
},
{
"path": "LView/external_includes/internal/pycore_pymem.h",
"chars": 3357,
"preview": "#ifndef Py_INTERNAL_PYMEM_H\n#define Py_INTERNAL_PYMEM_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_CORE\n# "
},
{
"path": "LView/external_includes/internal/pycore_pystate.h",
"chars": 3583,
"preview": "#ifndef Py_INTERNAL_PYSTATE_H\n#define Py_INTERNAL_PYSTATE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_COR"
},
{
"path": "LView/external_includes/internal/pycore_runtime.h",
"chars": 4452,
"preview": "#ifndef Py_INTERNAL_RUNTIME_H\n#define Py_INTERNAL_RUNTIME_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_COR"
},
{
"path": "LView/external_includes/internal/pycore_sysmodule.h",
"chars": 548,
"preview": "#ifndef Py_INTERNAL_SYSMODULE_H\n#define Py_INTERNAL_SYSMODULE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD"
},
{
"path": "LView/external_includes/internal/pycore_traceback.h",
"chars": 3058,
"preview": "#ifndef Py_INTERNAL_TRACEBACK_H\n#define Py_INTERNAL_TRACEBACK_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD"
},
{
"path": "LView/external_includes/internal/pycore_tupleobject.h",
"chars": 442,
"preview": "#ifndef Py_INTERNAL_TUPLEOBJECT_H\n#define Py_INTERNAL_TUPLEOBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_B"
},
{
"path": "LView/external_includes/internal/pycore_warnings.h",
"chars": 633,
"preview": "#ifndef Py_INTERNAL_WARNINGS_H\n#define Py_INTERNAL_WARNINGS_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_BUILD_C"
},
{
"path": "LView/external_includes/interpreteridobject.h",
"chars": 334,
"preview": "#ifndef Py_INTERPRETERIDOBJECT_H\n#define Py_INTERPRETERIDOBJECT_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef Py_LI"
},
{
"path": "LView/external_includes/intrcheck.h",
"chars": 861,
"preview": "\n#ifndef Py_INTRCHECK_H\n#define Py_INTRCHECK_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nPyAPI_FUNC(int) PyOS_InterruptOcc"
},
{
"path": "LView/external_includes/iterobject.h",
"chars": 521,
"preview": "#ifndef Py_ITEROBJECT_H\n#define Py_ITEROBJECT_H\n/* Iterators (the basic kind, over a sequence) */\n#ifdef __cplusplus\next"
},
{
"path": "LView/external_includes/listobject.h",
"chars": 1781,
"preview": "/* List object interface\n\n Another generally useful object type is a list of object pointers.\n This is a mutable typ"
},
{
"path": "LView/external_includes/longintrepr.h",
"chars": 3799,
"preview": "#ifndef Py_LIMITED_API\n#ifndef Py_LONGINTREPR_H\n#define Py_LONGINTREPR_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* Thi"
},
{
"path": "LView/external_includes/longobject.h",
"chars": 9513,
"preview": "#ifndef Py_LONGOBJECT_H\n#define Py_LONGOBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* Long (arbitrary precision) i"
},
{
"path": "LView/external_includes/marshal.h",
"chars": 803,
"preview": "\n/* Interface for marshal.c */\n\n#ifndef Py_MARSHAL_H\n#define Py_MARSHAL_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#defin"
},
{
"path": "LView/external_includes/memoryobject.h",
"chars": 2764,
"preview": "/* Memory view object. In Python this is available as \"memoryview\". */\n\n#ifndef Py_MEMORYOBJECT_H\n#define Py_MEMORYOBJEC"
},
{
"path": "LView/external_includes/methodobject.h",
"chars": 3775,
"preview": "\n/* Method object interface */\n\n#ifndef Py_METHODOBJECT_H\n#define Py_METHODOBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#end"
},
{
"path": "LView/external_includes/modsupport.h",
"chars": 9959,
"preview": "\n#ifndef Py_MODSUPPORT_H\n#define Py_MODSUPPORT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Module support interface */\n"
},
{
"path": "LView/external_includes/moduleobject.h",
"chars": 2361,
"preview": "\n/* Module object interface */\n\n#ifndef Py_MODULEOBJECT_H\n#define Py_MODULEOBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#end"
},
{
"path": "LView/external_includes/namespaceobject.h",
"chars": 349,
"preview": "\n/* simple namespace object interface */\n\n#ifndef NAMESPACEOBJECT_H\n#define NAMESPACEOBJECT_H\n#ifdef __cplusplus\nextern "
},
{
"path": "LView/external_includes/node.h",
"chars": 1281,
"preview": "\n/* Parse tree node interface */\n\n#ifndef Py_NODE_H\n#define Py_NODE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef st"
},
{
"path": "LView/external_includes/object.h",
"chars": 24628,
"preview": "#ifndef Py_OBJECT_H\n#define Py_OBJECT_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* Object and type object interface */"
},
{
"path": "LView/external_includes/objimpl.h",
"chars": 8423,
"preview": "/* The PyObject_ memory family: high-level object memory interfaces.\n See pymem.h for the low-level PyMem_ family.\n*/"
},
{
"path": "LView/external_includes/odictobject.h",
"chars": 1299,
"preview": "#ifndef Py_ODICTOBJECT_H\n#define Py_ODICTOBJECT_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* OrderedDict */\n/* This API"
},
{
"path": "LView/external_includes/opcode.h",
"chars": 4900,
"preview": "/* Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py */\n#ifndef Py_OPCODE_H\n#define Py_OPCODE_H\n#i"
},
{
"path": "LView/external_includes/osdefs.h",
"chars": 737,
"preview": "#ifndef Py_OSDEFS_H\n#define Py_OSDEFS_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* Operating system dependencies */\n\n#i"
},
{
"path": "LView/external_includes/osmodule.h",
"chars": 291,
"preview": "\n/* os module interface */\n\n#ifndef Py_OSMODULE_H\n#define Py_OSMODULE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !def"
},
{
"path": "LView/external_includes/parsetok.h",
"chars": 2958,
"preview": "/* Parser-tokenizer link interface */\n\n#ifndef Py_LIMITED_API\n#ifndef Py_PARSETOK_H\n#define Py_PARSETOK_H\n#ifdef __cplus"
},
{
"path": "LView/external_includes/patchlevel.h",
"chars": 1297,
"preview": "\n/* Python version identification scheme.\n\n When the major or minor version changes, the VERSION variable in\n config"
},
{
"path": "LView/external_includes/picklebufobject.h",
"chars": 846,
"preview": "/* PickleBuffer object. This is built-in for ease of use from third-party\n * C extensions.\n */\n\n#ifndef Py_PICKLEBUFOBJE"
},
{
"path": "LView/external_includes/py_curses.h",
"chars": 2474,
"preview": "\n#ifndef Py_CURSES_H\n#define Py_CURSES_H\n\n#ifdef __APPLE__\n/*\n** On Mac OS X 10.2 [n]curses.h and stdlib.h use different"
},
{
"path": "LView/external_includes/pyarena.h",
"chars": 2744,
"preview": "/* An arena-like memory interface for the compiler.\n */\n\n#ifndef Py_LIMITED_API\n#ifndef Py_PYARENA_H\n#define Py_PYARENA_"
},
{
"path": "LView/external_includes/pycapsule.h",
"chars": 1725,
"preview": "\n/* Capsule objects let you wrap a C \"void *\" pointer in a Python\n object. They're a way of passing data through the "
},
{
"path": "LView/external_includes/pyconfig.h",
"chars": 20281,
"preview": "#ifndef Py_CONFIG_H\n#define Py_CONFIG_H\n\n/* pyconfig.h. NOT Generated automatically by configure.\n\nThis is a manually m"
},
{
"path": "LView/external_includes/pyctype.h",
"chars": 1320,
"preview": "#ifndef Py_LIMITED_API\n#ifndef PYCTYPE_H\n#define PYCTYPE_H\n\n#define PY_CTF_LOWER 0x01\n#define PY_CTF_UPPER 0x02\n#defin"
},
{
"path": "LView/external_includes/pydebug.h",
"chars": 1093,
"preview": "#ifndef Py_LIMITED_API\n#ifndef Py_PYDEBUG_H\n#define Py_PYDEBUG_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nPyAPI_DATA(int)"
},
{
"path": "LView/external_includes/pydtrace.h",
"chars": 2413,
"preview": "/* Static DTrace probes interface */\n\n#ifndef Py_DTRACE_H\n#define Py_DTRACE_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#i"
},
{
"path": "LView/external_includes/pyerrors.h",
"chars": 12427,
"preview": "#ifndef Py_ERRORS_H\n#define Py_ERRORS_H\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include <stdarg.h> // va_"
},
{
"path": "LView/external_includes/pyexpat.h",
"chars": 2450,
"preview": "/* Stuff to export relevant 'expat' entry points from pyexpat to other\n * parser modules, such as cElementTree. */\n\n/* n"
},
{
"path": "LView/external_includes/pyfpe.h",
"chars": 444,
"preview": "#ifndef Py_PYFPE_H\n#define Py_PYFPE_H\n/* Header excluded from the stable API */\n#ifndef Py_LIMITED_API\n\n/* These macros "
}
]
// ... and 96 more files (download for full content)
About this extraction
This page contains the full source code of the orkido/LViewLoL GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 296 files (19.7 MB), approximately 1.3M tokens, and a symbol index with 1856 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.