├── .gitignore ├── Demo ├── .gitattributes ├── .gitignore ├── CMakeLists.txt ├── Dependencies │ ├── CMakeLists.txt │ ├── MinHook │ │ ├── CMakeLists.txt │ │ ├── MinHook.h │ │ ├── buffer.c │ │ ├── buffer.h │ │ ├── hde │ │ │ ├── hde32.c │ │ │ ├── hde32.h │ │ │ ├── hde64.c │ │ │ ├── hde64.h │ │ │ ├── pstdint.h │ │ │ ├── table32.h │ │ │ └── table64.h │ │ ├── hook.c │ │ ├── trampoline.c │ │ └── trampoline.h │ ├── StringPool.h │ ├── fnv.h │ ├── freetype │ │ ├── CMakeLists.txt │ │ ├── freetype │ │ │ ├── config │ │ │ │ ├── ftconfig.h │ │ │ │ ├── ftheader.h │ │ │ │ ├── ftmodule.h │ │ │ │ ├── ftoption.h │ │ │ │ ├── ftstdlib.h │ │ │ │ ├── integer-types.h │ │ │ │ ├── mac-support.h │ │ │ │ └── public-macros.h │ │ │ ├── freetype.h │ │ │ ├── ftadvanc.h │ │ │ ├── ftbbox.h │ │ │ ├── ftbdf.h │ │ │ ├── ftbitmap.h │ │ │ ├── ftbzip2.h │ │ │ ├── ftcache.h │ │ │ ├── ftchapters.h │ │ │ ├── ftcid.h │ │ │ ├── ftcolor.h │ │ │ ├── ftdriver.h │ │ │ ├── fterrdef.h │ │ │ ├── fterrors.h │ │ │ ├── ftfntfmt.h │ │ │ ├── ftgasp.h │ │ │ ├── ftglyph.h │ │ │ ├── ftgxval.h │ │ │ ├── ftgzip.h │ │ │ ├── ftimage.h │ │ │ ├── ftincrem.h │ │ │ ├── ftlcdfil.h │ │ │ ├── ftlist.h │ │ │ ├── ftlzw.h │ │ │ ├── ftmac.h │ │ │ ├── ftmm.h │ │ │ ├── ftmodapi.h │ │ │ ├── ftmoderr.h │ │ │ ├── ftotval.h │ │ │ ├── ftoutln.h │ │ │ ├── ftparams.h │ │ │ ├── ftpfr.h │ │ │ ├── ftrender.h │ │ │ ├── ftsizes.h │ │ │ ├── ftsnames.h │ │ │ ├── ftstroke.h │ │ │ ├── ftsynth.h │ │ │ ├── ftsystem.h │ │ │ ├── fttrigon.h │ │ │ ├── fttypes.h │ │ │ ├── ftwinfnt.h │ │ │ ├── internal │ │ │ │ ├── autohint.h │ │ │ │ ├── cffotypes.h │ │ │ │ ├── cfftypes.h │ │ │ │ ├── compiler-macros.h │ │ │ │ ├── ftcalc.h │ │ │ │ ├── ftdebug.h │ │ │ │ ├── ftdrv.h │ │ │ │ ├── ftgloadr.h │ │ │ │ ├── fthash.h │ │ │ │ ├── ftmemory.h │ │ │ │ ├── ftobjs.h │ │ │ │ ├── ftpsprop.h │ │ │ │ ├── ftrfork.h │ │ │ │ ├── ftserv.h │ │ │ │ ├── ftstream.h │ │ │ │ ├── fttrace.h │ │ │ │ ├── ftvalid.h │ │ │ │ ├── psaux.h │ │ │ │ ├── pshints.h │ │ │ │ ├── services │ │ │ │ │ ├── svbdf.h │ │ │ │ │ ├── svcfftl.h │ │ │ │ │ ├── svcid.h │ │ │ │ │ ├── svfntfmt.h │ │ │ │ │ ├── svgldict.h │ │ │ │ │ ├── svgxval.h │ │ │ │ │ ├── svkern.h │ │ │ │ │ ├── svmetric.h │ │ │ │ │ ├── svmm.h │ │ │ │ │ ├── svotval.h │ │ │ │ │ ├── svpfr.h │ │ │ │ │ ├── svpostnm.h │ │ │ │ │ ├── svprop.h │ │ │ │ │ ├── svpscmap.h │ │ │ │ │ ├── svpsinfo.h │ │ │ │ │ ├── svsfnt.h │ │ │ │ │ ├── svttcmap.h │ │ │ │ │ ├── svtteng.h │ │ │ │ │ ├── svttglyf.h │ │ │ │ │ └── svwinfnt.h │ │ │ │ ├── sfnt.h │ │ │ │ ├── t1types.h │ │ │ │ ├── tttypes.h │ │ │ │ └── wofftypes.h │ │ │ ├── t1tables.h │ │ │ ├── ttnameid.h │ │ │ ├── tttables.h │ │ │ └── tttags.h │ │ ├── ft2build.h │ │ └── src │ │ │ ├── autofit │ │ │ ├── afangles.c │ │ │ ├── afangles.h │ │ │ ├── afblue.c │ │ │ ├── afblue.h │ │ │ ├── afcjk.c │ │ │ ├── afcjk.h │ │ │ ├── afcover.h │ │ │ ├── afdummy.c │ │ │ ├── afdummy.h │ │ │ ├── aferrors.h │ │ │ ├── afglobal.c │ │ │ ├── afglobal.h │ │ │ ├── afhints.c │ │ │ ├── afhints.h │ │ │ ├── afindic.c │ │ │ ├── afindic.h │ │ │ ├── aflatin.c │ │ │ ├── aflatin.h │ │ │ ├── aflatin2.c │ │ │ ├── aflatin2.h │ │ │ ├── afloader.c │ │ │ ├── afloader.h │ │ │ ├── afmodule.c │ │ │ ├── afmodule.h │ │ │ ├── afranges.c │ │ │ ├── afranges.h │ │ │ ├── afscript.h │ │ │ ├── afshaper.c │ │ │ ├── afshaper.h │ │ │ ├── afstyles.h │ │ │ ├── aftypes.h │ │ │ ├── afwarp.c │ │ │ ├── afwarp.h │ │ │ ├── afwrtsys.h │ │ │ └── autofit.c │ │ │ ├── base │ │ │ ├── ftadvanc.c │ │ │ ├── ftbase.c │ │ │ ├── ftbase.h │ │ │ ├── ftbbox.c │ │ │ ├── ftbdf.c │ │ │ ├── ftbitmap.c │ │ │ ├── ftcalc.c │ │ │ ├── ftcid.c │ │ │ ├── ftcolor.c │ │ │ ├── ftdbgmem.c │ │ │ ├── ftdebug.c │ │ │ ├── fterrors.c │ │ │ ├── ftfntfmt.c │ │ │ ├── ftfstype.c │ │ │ ├── ftgasp.c │ │ │ ├── ftgloadr.c │ │ │ ├── ftglyph.c │ │ │ ├── ftgxval.c │ │ │ ├── fthash.c │ │ │ ├── ftinit.c │ │ │ ├── ftlcdfil.c │ │ │ ├── ftmac.c │ │ │ ├── ftmm.c │ │ │ ├── ftobjs.c │ │ │ ├── ftotval.c │ │ │ ├── ftoutln.c │ │ │ ├── ftpatent.c │ │ │ ├── ftpfr.c │ │ │ ├── ftpsprop.c │ │ │ ├── ftrfork.c │ │ │ ├── ftsnames.c │ │ │ ├── ftstream.c │ │ │ ├── ftstroke.c │ │ │ ├── ftsynth.c │ │ │ ├── ftsystem.c │ │ │ ├── fttrigon.c │ │ │ ├── fttype1.c │ │ │ ├── ftutil.c │ │ │ ├── ftwinfnt.c │ │ │ ├── md5.c │ │ │ └── md5.h │ │ │ ├── cff │ │ │ ├── cff.c │ │ │ ├── cffcmap.c │ │ │ ├── cffcmap.h │ │ │ ├── cffdrivr.c │ │ │ ├── cffdrivr.h │ │ │ ├── cfferrs.h │ │ │ ├── cffgload.c │ │ │ ├── cffgload.h │ │ │ ├── cffload.c │ │ │ ├── cffload.h │ │ │ ├── cffobjs.c │ │ │ ├── cffobjs.h │ │ │ ├── cffparse.c │ │ │ ├── cffparse.h │ │ │ └── cfftoken.h │ │ │ ├── psaux │ │ │ ├── afmparse.c │ │ │ ├── afmparse.h │ │ │ ├── cffdecode.c │ │ │ ├── cffdecode.h │ │ │ ├── psarrst.c │ │ │ ├── psarrst.h │ │ │ ├── psaux.c │ │ │ ├── psauxerr.h │ │ │ ├── psauxmod.c │ │ │ ├── psauxmod.h │ │ │ ├── psblues.c │ │ │ ├── psblues.h │ │ │ ├── psconv.c │ │ │ ├── psconv.h │ │ │ ├── pserror.c │ │ │ ├── pserror.h │ │ │ ├── psfixed.h │ │ │ ├── psfont.c │ │ │ ├── psfont.h │ │ │ ├── psft.c │ │ │ ├── psft.h │ │ │ ├── psglue.h │ │ │ ├── pshints.c │ │ │ ├── pshints.h │ │ │ ├── psintrp.c │ │ │ ├── psintrp.h │ │ │ ├── psobjs.c │ │ │ ├── psobjs.h │ │ │ ├── psread.c │ │ │ ├── psread.h │ │ │ ├── psstack.c │ │ │ ├── psstack.h │ │ │ ├── pstypes.h │ │ │ ├── t1cmap.c │ │ │ ├── t1cmap.h │ │ │ ├── t1decode.c │ │ │ └── t1decode.h │ │ │ ├── pshinter │ │ │ ├── pshalgo.c │ │ │ ├── pshalgo.h │ │ │ ├── pshglob.c │ │ │ ├── pshglob.h │ │ │ ├── pshinter.c │ │ │ ├── pshmod.c │ │ │ ├── pshmod.h │ │ │ ├── pshnterr.h │ │ │ ├── pshrec.c │ │ │ └── pshrec.h │ │ │ ├── psnames │ │ │ ├── psmodule.c │ │ │ ├── psmodule.h │ │ │ ├── psnamerr.h │ │ │ ├── psnames.c │ │ │ └── pstables.h │ │ │ ├── raster │ │ │ ├── ftmisc.h │ │ │ ├── ftraster.c │ │ │ ├── ftraster.h │ │ │ ├── ftrend1.c │ │ │ ├── ftrend1.h │ │ │ ├── raster.c │ │ │ └── rasterrs.h │ │ │ ├── sfnt │ │ │ ├── pngshim.c │ │ │ ├── pngshim.h │ │ │ ├── sfdriver.c │ │ │ ├── sfdriver.h │ │ │ ├── sferrors.h │ │ │ ├── sfnt.c │ │ │ ├── sfobjs.c │ │ │ ├── sfobjs.h │ │ │ ├── sfwoff.c │ │ │ ├── sfwoff.h │ │ │ ├── sfwoff2.c │ │ │ ├── sfwoff2.h │ │ │ ├── ttbdf.c │ │ │ ├── ttbdf.h │ │ │ ├── ttcmap.c │ │ │ ├── ttcmap.h │ │ │ ├── ttcmapc.h │ │ │ ├── ttcolr.c │ │ │ ├── ttcolr.h │ │ │ ├── ttcpal.c │ │ │ ├── ttcpal.h │ │ │ ├── ttkern.c │ │ │ ├── ttkern.h │ │ │ ├── ttload.c │ │ │ ├── ttload.h │ │ │ ├── ttmtx.c │ │ │ ├── ttmtx.h │ │ │ ├── ttpost.c │ │ │ ├── ttpost.h │ │ │ ├── ttsbit.c │ │ │ ├── ttsbit.h │ │ │ ├── woff2tags.c │ │ │ └── woff2tags.h │ │ │ ├── smooth │ │ │ ├── ftgrays.c │ │ │ ├── ftgrays.h │ │ │ ├── ftsmerrs.h │ │ │ ├── ftsmooth.c │ │ │ ├── ftsmooth.h │ │ │ └── smooth.c │ │ │ └── truetype │ │ │ ├── truetype.c │ │ │ ├── ttdriver.c │ │ │ ├── ttdriver.h │ │ │ ├── tterrors.h │ │ │ ├── ttgload.c │ │ │ ├── ttgload.h │ │ │ ├── ttgxvar.c │ │ │ ├── ttgxvar.h │ │ │ ├── ttinterp.c │ │ │ ├── ttinterp.h │ │ │ ├── ttobjs.c │ │ │ ├── ttobjs.h │ │ │ ├── ttpload.c │ │ │ ├── ttpload.h │ │ │ ├── ttsubpix.c │ │ │ └── ttsubpix.h │ ├── imgui │ │ ├── CMakeLists.txt │ │ ├── LICENSE.txt │ │ ├── imconfig.h │ │ ├── imgui.cpp │ │ ├── imgui.h │ │ ├── imgui_demo.cpp │ │ ├── imgui_draw.cpp │ │ ├── imgui_freetype.cpp │ │ ├── imgui_freetype.h │ │ ├── imgui_impl_dx9.cpp │ │ ├── imgui_impl_dx9.h │ │ ├── imgui_impl_opengl3.cpp │ │ ├── imgui_impl_opengl3.h │ │ ├── imgui_impl_sdl.cpp │ │ ├── imgui_impl_sdl.h │ │ ├── imgui_impl_win32.cpp │ │ ├── imgui_impl_win32.h │ │ ├── imgui_internal.h │ │ ├── imgui_stdlib.cpp │ │ ├── imgui_stdlib.h │ │ ├── imgui_tables.cpp │ │ ├── imgui_widgets.cpp │ │ ├── imstb_rectpack.h │ │ ├── imstb_textedit.h │ │ └── imstb_truetype.h │ ├── nlohmann │ │ └── json.hpp │ ├── range-v3 │ │ ├── concepts │ │ │ ├── compare.hpp │ │ │ ├── concepts.hpp │ │ │ ├── swap.hpp │ │ │ └── type_traits.hpp │ │ ├── meta │ │ │ ├── meta.hpp │ │ │ └── meta_fwd.hpp │ │ ├── range │ │ │ └── v3 │ │ │ │ ├── action.hpp │ │ │ │ ├── action │ │ │ │ ├── action.hpp │ │ │ │ ├── adjacent_remove_if.hpp │ │ │ │ ├── concepts.hpp │ │ │ │ ├── drop.hpp │ │ │ │ ├── drop_while.hpp │ │ │ │ ├── erase.hpp │ │ │ │ ├── insert.hpp │ │ │ │ ├── join.hpp │ │ │ │ ├── push_back.hpp │ │ │ │ ├── push_front.hpp │ │ │ │ ├── remove.hpp │ │ │ │ ├── remove_if.hpp │ │ │ │ ├── reverse.hpp │ │ │ │ ├── shuffle.hpp │ │ │ │ ├── slice.hpp │ │ │ │ ├── sort.hpp │ │ │ │ ├── split.hpp │ │ │ │ ├── split_when.hpp │ │ │ │ ├── stable_sort.hpp │ │ │ │ ├── stride.hpp │ │ │ │ ├── take.hpp │ │ │ │ ├── take_while.hpp │ │ │ │ ├── transform.hpp │ │ │ │ ├── unique.hpp │ │ │ │ └── unstable_remove_if.hpp │ │ │ │ ├── algorithm.hpp │ │ │ │ ├── algorithm │ │ │ │ ├── adjacent_find.hpp │ │ │ │ ├── adjacent_remove_if.hpp │ │ │ │ ├── all_of.hpp │ │ │ │ ├── any_of.hpp │ │ │ │ ├── aux_ │ │ │ │ │ ├── equal_range_n.hpp │ │ │ │ │ ├── lower_bound_n.hpp │ │ │ │ │ ├── merge_n.hpp │ │ │ │ │ ├── merge_n_with_buffer.hpp │ │ │ │ │ ├── partition_point_n.hpp │ │ │ │ │ ├── sort_n_with_buffer.hpp │ │ │ │ │ └── upper_bound_n.hpp │ │ │ │ ├── binary_search.hpp │ │ │ │ ├── contains.hpp │ │ │ │ ├── copy.hpp │ │ │ │ ├── copy_backward.hpp │ │ │ │ ├── copy_if.hpp │ │ │ │ ├── copy_n.hpp │ │ │ │ ├── count.hpp │ │ │ │ ├── count_if.hpp │ │ │ │ ├── ends_with.hpp │ │ │ │ ├── equal.hpp │ │ │ │ ├── equal_range.hpp │ │ │ │ ├── fill.hpp │ │ │ │ ├── fill_n.hpp │ │ │ │ ├── find.hpp │ │ │ │ ├── find_end.hpp │ │ │ │ ├── find_first_of.hpp │ │ │ │ ├── find_if.hpp │ │ │ │ ├── find_if_not.hpp │ │ │ │ ├── for_each.hpp │ │ │ │ ├── for_each_n.hpp │ │ │ │ ├── generate.hpp │ │ │ │ ├── generate_n.hpp │ │ │ │ ├── heap_algorithm.hpp │ │ │ │ ├── inplace_merge.hpp │ │ │ │ ├── is_partitioned.hpp │ │ │ │ ├── is_sorted.hpp │ │ │ │ ├── is_sorted_until.hpp │ │ │ │ ├── lexicographical_compare.hpp │ │ │ │ ├── lower_bound.hpp │ │ │ │ ├── max.hpp │ │ │ │ ├── max_element.hpp │ │ │ │ ├── merge.hpp │ │ │ │ ├── min.hpp │ │ │ │ ├── min_element.hpp │ │ │ │ ├── minmax.hpp │ │ │ │ ├── minmax_element.hpp │ │ │ │ ├── mismatch.hpp │ │ │ │ ├── move.hpp │ │ │ │ ├── move_backward.hpp │ │ │ │ ├── none_of.hpp │ │ │ │ ├── nth_element.hpp │ │ │ │ ├── partial_sort.hpp │ │ │ │ ├── partial_sort_copy.hpp │ │ │ │ ├── partition.hpp │ │ │ │ ├── partition_copy.hpp │ │ │ │ ├── partition_point.hpp │ │ │ │ ├── permutation.hpp │ │ │ │ ├── remove.hpp │ │ │ │ ├── remove_copy.hpp │ │ │ │ ├── remove_copy_if.hpp │ │ │ │ ├── remove_if.hpp │ │ │ │ ├── replace.hpp │ │ │ │ ├── replace_copy.hpp │ │ │ │ ├── replace_copy_if.hpp │ │ │ │ ├── replace_if.hpp │ │ │ │ ├── result_types.hpp │ │ │ │ ├── reverse.hpp │ │ │ │ ├── reverse_copy.hpp │ │ │ │ ├── rotate.hpp │ │ │ │ ├── rotate_copy.hpp │ │ │ │ ├── sample.hpp │ │ │ │ ├── search.hpp │ │ │ │ ├── search_n.hpp │ │ │ │ ├── set_algorithm.hpp │ │ │ │ ├── shuffle.hpp │ │ │ │ ├── sort.hpp │ │ │ │ ├── stable_partition.hpp │ │ │ │ ├── stable_sort.hpp │ │ │ │ ├── starts_with.hpp │ │ │ │ ├── swap_ranges.hpp │ │ │ │ ├── tagspec.hpp │ │ │ │ ├── transform.hpp │ │ │ │ ├── unique.hpp │ │ │ │ ├── unique_copy.hpp │ │ │ │ ├── unstable_remove_if.hpp │ │ │ │ └── upper_bound.hpp │ │ │ │ ├── all.hpp │ │ │ │ ├── at.hpp │ │ │ │ ├── back.hpp │ │ │ │ ├── begin_end.hpp │ │ │ │ ├── compare.hpp │ │ │ │ ├── core.hpp │ │ │ │ ├── data.hpp │ │ │ │ ├── detail │ │ │ │ ├── adl_get.hpp │ │ │ │ ├── config.hpp │ │ │ │ ├── epilogue.hpp │ │ │ │ ├── prologue.hpp │ │ │ │ ├── range_access.hpp │ │ │ │ ├── satisfy_boost_range.hpp │ │ │ │ ├── variant.hpp │ │ │ │ └── with_braced_init_args.hpp │ │ │ │ ├── distance.hpp │ │ │ │ ├── empty.hpp │ │ │ │ ├── experimental │ │ │ │ ├── utility │ │ │ │ │ └── generator.hpp │ │ │ │ └── view │ │ │ │ │ └── shared.hpp │ │ │ │ ├── front.hpp │ │ │ │ ├── functional.hpp │ │ │ │ ├── functional │ │ │ │ ├── arithmetic.hpp │ │ │ │ ├── bind.hpp │ │ │ │ ├── bind_back.hpp │ │ │ │ ├── comparisons.hpp │ │ │ │ ├── compose.hpp │ │ │ │ ├── concepts.hpp │ │ │ │ ├── identity.hpp │ │ │ │ ├── indirect.hpp │ │ │ │ ├── invoke.hpp │ │ │ │ ├── not_fn.hpp │ │ │ │ ├── on.hpp │ │ │ │ ├── overload.hpp │ │ │ │ ├── pipeable.hpp │ │ │ │ └── reference_wrapper.hpp │ │ │ │ ├── getlines.hpp │ │ │ │ ├── index.hpp │ │ │ │ ├── istream_range.hpp │ │ │ │ ├── iterator.hpp │ │ │ │ ├── iterator │ │ │ │ ├── access.hpp │ │ │ │ ├── basic_iterator.hpp │ │ │ │ ├── common_iterator.hpp │ │ │ │ ├── concepts.hpp │ │ │ │ ├── counted_iterator.hpp │ │ │ │ ├── default_sentinel.hpp │ │ │ │ ├── diffmax_t.hpp │ │ │ │ ├── insert_iterators.hpp │ │ │ │ ├── move_iterators.hpp │ │ │ │ ├── operations.hpp │ │ │ │ ├── reverse_iterator.hpp │ │ │ │ ├── stream_iterators.hpp │ │ │ │ ├── traits.hpp │ │ │ │ └── unreachable_sentinel.hpp │ │ │ │ ├── iterator_range.hpp │ │ │ │ ├── numeric.hpp │ │ │ │ ├── numeric │ │ │ │ ├── accumulate.hpp │ │ │ │ ├── adjacent_difference.hpp │ │ │ │ ├── inner_product.hpp │ │ │ │ ├── iota.hpp │ │ │ │ └── partial_sum.hpp │ │ │ │ ├── range.hpp │ │ │ │ ├── range │ │ │ │ ├── access.hpp │ │ │ │ ├── concepts.hpp │ │ │ │ ├── conversion.hpp │ │ │ │ ├── dangling.hpp │ │ │ │ ├── operations.hpp │ │ │ │ ├── primitives.hpp │ │ │ │ └── traits.hpp │ │ │ │ ├── range_access.hpp │ │ │ │ ├── range_concepts.hpp │ │ │ │ ├── range_for.hpp │ │ │ │ ├── range_fwd.hpp │ │ │ │ ├── range_traits.hpp │ │ │ │ ├── size.hpp │ │ │ │ ├── span.hpp │ │ │ │ ├── to_container.hpp │ │ │ │ ├── utility.hpp │ │ │ │ ├── utility │ │ │ │ ├── addressof.hpp │ │ │ │ ├── any.hpp │ │ │ │ ├── associated_types.hpp │ │ │ │ ├── basic_iterator.hpp │ │ │ │ ├── box.hpp │ │ │ │ ├── common_iterator.hpp │ │ │ │ ├── common_tuple.hpp │ │ │ │ ├── common_type.hpp │ │ │ │ ├── compressed_pair.hpp │ │ │ │ ├── concepts.hpp │ │ │ │ ├── copy.hpp │ │ │ │ ├── counted_iterator.hpp │ │ │ │ ├── dangling.hpp │ │ │ │ ├── functional.hpp │ │ │ │ ├── get.hpp │ │ │ │ ├── in_place.hpp │ │ │ │ ├── infinity.hpp │ │ │ │ ├── invoke.hpp │ │ │ │ ├── iterator.hpp │ │ │ │ ├── iterator_concepts.hpp │ │ │ │ ├── iterator_traits.hpp │ │ │ │ ├── memory.hpp │ │ │ │ ├── move.hpp │ │ │ │ ├── nullptr_v.hpp │ │ │ │ ├── optional.hpp │ │ │ │ ├── polymorphic_cast.hpp │ │ │ │ ├── random.hpp │ │ │ │ ├── scope_exit.hpp │ │ │ │ ├── semiregular.hpp │ │ │ │ ├── semiregular_box.hpp │ │ │ │ ├── static_const.hpp │ │ │ │ ├── swap.hpp │ │ │ │ ├── tagged_pair.hpp │ │ │ │ ├── tagged_tuple.hpp │ │ │ │ ├── tuple_algorithm.hpp │ │ │ │ ├── unreachable.hpp │ │ │ │ └── variant.hpp │ │ │ │ ├── version.hpp │ │ │ │ ├── view.hpp │ │ │ │ ├── view │ │ │ │ ├── adaptor.hpp │ │ │ │ ├── addressof.hpp │ │ │ │ ├── adjacent_filter.hpp │ │ │ │ ├── adjacent_remove_if.hpp │ │ │ │ ├── all.hpp │ │ │ │ ├── any_view.hpp │ │ │ │ ├── bounded.hpp │ │ │ │ ├── c_str.hpp │ │ │ │ ├── cache1.hpp │ │ │ │ ├── cartesian_product.hpp │ │ │ │ ├── chunk.hpp │ │ │ │ ├── common.hpp │ │ │ │ ├── concat.hpp │ │ │ │ ├── const.hpp │ │ │ │ ├── counted.hpp │ │ │ │ ├── cycle.hpp │ │ │ │ ├── delimit.hpp │ │ │ │ ├── drop.hpp │ │ │ │ ├── drop_exactly.hpp │ │ │ │ ├── drop_last.hpp │ │ │ │ ├── drop_while.hpp │ │ │ │ ├── empty.hpp │ │ │ │ ├── enumerate.hpp │ │ │ │ ├── exclusive_scan.hpp │ │ │ │ ├── facade.hpp │ │ │ │ ├── filter.hpp │ │ │ │ ├── for_each.hpp │ │ │ │ ├── generate.hpp │ │ │ │ ├── generate_n.hpp │ │ │ │ ├── getlines.hpp │ │ │ │ ├── group_by.hpp │ │ │ │ ├── indices.hpp │ │ │ │ ├── indirect.hpp │ │ │ │ ├── interface.hpp │ │ │ │ ├── intersperse.hpp │ │ │ │ ├── iota.hpp │ │ │ │ ├── istream.hpp │ │ │ │ ├── join.hpp │ │ │ │ ├── linear_distribute.hpp │ │ │ │ ├── map.hpp │ │ │ │ ├── move.hpp │ │ │ │ ├── partial_sum.hpp │ │ │ │ ├── ref.hpp │ │ │ │ ├── remove.hpp │ │ │ │ ├── remove_if.hpp │ │ │ │ ├── repeat.hpp │ │ │ │ ├── repeat_n.hpp │ │ │ │ ├── replace.hpp │ │ │ │ ├── replace_if.hpp │ │ │ │ ├── reverse.hpp │ │ │ │ ├── sample.hpp │ │ │ │ ├── set_algorithm.hpp │ │ │ │ ├── single.hpp │ │ │ │ ├── slice.hpp │ │ │ │ ├── sliding.hpp │ │ │ │ ├── span.hpp │ │ │ │ ├── split.hpp │ │ │ │ ├── split_when.hpp │ │ │ │ ├── stride.hpp │ │ │ │ ├── subrange.hpp │ │ │ │ ├── tail.hpp │ │ │ │ ├── take.hpp │ │ │ │ ├── take_exactly.hpp │ │ │ │ ├── take_last.hpp │ │ │ │ ├── take_while.hpp │ │ │ │ ├── tokenize.hpp │ │ │ │ ├── transform.hpp │ │ │ │ ├── trim.hpp │ │ │ │ ├── unbounded.hpp │ │ │ │ ├── unique.hpp │ │ │ │ ├── view.hpp │ │ │ │ ├── zip.hpp │ │ │ │ └── zip_with.hpp │ │ │ │ ├── view_adaptor.hpp │ │ │ │ ├── view_facade.hpp │ │ │ │ └── view_interface.hpp │ │ └── std │ │ │ ├── detail │ │ │ └── associated_types.hpp │ │ │ └── iterator │ ├── stb_image.h │ └── x86RetSpoof.h ├── LICENSE ├── Osiris.sln ├── README.md ├── SGX_MDL │ ├── GRU.c │ ├── GRU.h │ ├── SGX_MDL.c │ ├── SGX_MDL.config.xml │ ├── SGX_MDL.edl │ ├── SGX_MDL.vcxproj │ ├── SGX_MDL.vcxproj.filters │ ├── SGX_MDL_private.pem │ ├── SGX_MDL_t.c │ ├── SGX_MDL_t.h │ ├── matrix_utils.c │ ├── matrix_utils.h │ ├── mini-gmp.c │ ├── mini-gmp.h │ ├── sha256.c │ ├── sha256.h │ └── state.h ├── Source │ ├── CMakeLists.txt │ ├── Config.cpp │ ├── Config.h │ ├── ConfigStructs.cpp │ ├── ConfigStructs.h │ ├── EventListener.cpp │ ├── EventListener.h │ ├── GUI.cpp │ ├── GUI.h │ ├── GameData.cpp │ ├── GameData.h │ ├── Hacks │ │ ├── Aimbot.cpp │ │ ├── Aimbot.h │ │ ├── AntiAim.cpp │ │ ├── AntiAim.h │ │ ├── Backtrack.cpp │ │ ├── Backtrack.h │ │ ├── CMakeLists.txt │ │ ├── Chams.cpp │ │ ├── Chams.h │ │ ├── Dump.cpp │ │ ├── Dump.h │ │ ├── EnginePrediction.cpp │ │ ├── EnginePrediction.h │ │ ├── Glow.cpp │ │ ├── Glow.h │ │ ├── Misc.cpp │ │ ├── Misc.h │ │ ├── Sound.cpp │ │ ├── Sound.h │ │ ├── StreamProofESP.cpp │ │ ├── StreamProofESP.h │ │ ├── Triggerbot.cpp │ │ ├── Triggerbot.h │ │ ├── Visuals.cpp │ │ └── Visuals.h │ ├── Helpers.cpp │ ├── Helpers.h │ ├── Hooks.cpp │ ├── Hooks.h │ ├── Hooks │ │ ├── CMakeLists.txt │ │ ├── MinHook.cpp │ │ ├── MinHook.h │ │ ├── VmtHook.cpp │ │ ├── VmtHook.h │ │ ├── VmtSwap.cpp │ │ └── VmtSwap.h │ ├── InputUtil.cpp │ ├── InputUtil.h │ ├── Interfaces.h │ ├── InventoryChanger │ │ ├── Backend │ │ │ ├── BackendSimulator.h │ │ │ ├── CMakeLists.txt │ │ │ ├── Item.h │ │ │ ├── ItemIDMap.h │ │ │ ├── Items.h │ │ │ ├── Loadout.h │ │ │ ├── PickEm.h │ │ │ ├── README.md │ │ │ ├── Request │ │ │ │ ├── InventoryHandler.h │ │ │ │ ├── ItemActivationHandler.h │ │ │ │ ├── ItemModificationHandler.h │ │ │ │ ├── ItemRemovalHandler.h │ │ │ │ ├── LoadoutHandler.h │ │ │ │ ├── PickEmHandler.h │ │ │ │ ├── RequestBuilder.h │ │ │ │ ├── RequestHandler.cpp │ │ │ │ ├── RequestHandler.h │ │ │ │ ├── RequestTypes.h │ │ │ │ ├── StorageUnitHandler.h │ │ │ │ └── XRayScannerHandler.h │ │ │ ├── Response │ │ │ │ ├── ItemInResponse.h │ │ │ │ ├── Response.h │ │ │ │ ├── ResponseAccumulator.h │ │ │ │ ├── ResponseHandler.h │ │ │ │ ├── ResponseQueue.h │ │ │ │ └── ResponseTypes.h │ │ │ ├── StorageUnitManager.h │ │ │ └── XRayScanner.h │ │ ├── CMakeLists.txt │ │ ├── EconRarities.h │ │ ├── GameIntegration │ │ │ ├── CMakeLists.txt │ │ │ ├── CrateLoot.cpp │ │ │ ├── CrateLoot.h │ │ │ ├── Inventory.cpp │ │ │ ├── Inventory.h │ │ │ ├── Items.cpp │ │ │ ├── Items.h │ │ │ └── Misc.h │ │ ├── GameItems │ │ │ ├── CMakeLists.txt │ │ │ ├── CrateLoot.h │ │ │ ├── CrateLootLookup.h │ │ │ ├── Enums.h │ │ │ ├── Item.h │ │ │ ├── ItemSorter.h │ │ │ ├── Lookup.h │ │ │ ├── Storage.cpp │ │ │ ├── Storage.h │ │ │ └── Structs.h │ │ ├── Inventory │ │ │ ├── CMakeLists.txt │ │ │ ├── Item.h │ │ │ ├── Structs.h │ │ │ ├── StructsFromJson.cpp │ │ │ └── StructsFromJson.h │ │ ├── InventoryChanger.cpp │ │ ├── InventoryChanger.h │ │ ├── InventoryConfig.cpp │ │ ├── InventoryConfig.h │ │ ├── ItemGenerator │ │ │ ├── AttributeGenerator.h │ │ │ ├── CMakeLists.txt │ │ │ ├── DefaultGenerator.h │ │ │ ├── DropGenerator.h │ │ │ ├── ItemGenerator.cpp │ │ │ ├── ItemGenerator.h │ │ │ ├── TournamentMatches.cpp │ │ │ ├── TournamentMatches.h │ │ │ └── Utils.h │ │ ├── README.md │ │ ├── WeaponNames.cpp │ │ └── WeaponNames.h │ ├── JsonForward.h │ ├── Memory.cpp │ ├── Memory.h │ ├── Netvars.cpp │ ├── Netvars.h │ ├── Osiris.cpp │ ├── Osiris.vcxproj │ ├── Osiris.vcxproj.filters │ ├── ProtobufReader.h │ ├── Resources │ │ ├── Resource.h │ │ ├── Shaders │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ └── default_vs.hlsl │ │ ├── avatar_ct.h │ │ └── avatar_tt.h │ ├── SDK │ │ ├── AnimState.h │ │ ├── CMakeLists.txt │ │ ├── Client.h │ │ ├── ClientClass.h │ │ ├── ClientMode.h │ │ ├── ConVar.h │ │ ├── Constants │ │ │ ├── ClassId.h │ │ │ ├── FrameStage.h │ │ │ ├── PaintkitConditionChances.h │ │ │ ├── ProPlayer.h │ │ │ ├── Tournament.h │ │ │ ├── TournamentTeam.h │ │ │ └── UserMessages.h │ │ ├── Cvar.h │ │ ├── EconItemView.cpp │ │ ├── EconItemView.h │ │ ├── Engine.h │ │ ├── EngineTrace.h │ │ ├── Entity.cpp │ │ ├── Entity.h │ │ ├── EntityList.h │ │ ├── FileSystem.h │ │ ├── GameEvent.h │ │ ├── GameMovement.h │ │ ├── GameUI.h │ │ ├── GlobalVars.cpp │ │ ├── GlobalVars.h │ │ ├── GlowObjectManager.h │ │ ├── Inconstructible.h │ │ ├── Input.h │ │ ├── InputSystem.h │ │ ├── ItemSchema.h │ │ ├── KeyValues.cpp │ │ ├── KeyValues.h │ │ ├── KeyValuesSystem.h │ │ ├── LocalPlayer.h │ │ ├── Localize.h │ │ ├── Material.h │ │ ├── MaterialSystem.h │ │ ├── ModelInfo.h │ │ ├── ModelRender.h │ │ ├── MoveHelper.h │ │ ├── NetworkChannel.h │ │ ├── NetworkStringTable.h │ │ ├── Pad.h │ │ ├── Panorama.h │ │ ├── PanoramaMarshallHelper.h │ │ ├── PhysicsSurfaceProps.h │ │ ├── PlantedC4.h │ │ ├── Platform.h │ │ ├── PlayerResource.h │ │ ├── Prediction.h │ │ ├── Recv.h │ │ ├── RenderContext.h │ │ ├── RenderView.h │ │ ├── Sound.h │ │ ├── SoundEmitter.h │ │ ├── SoundInfo.h │ │ ├── Steam.h │ │ ├── StudioRender.h │ │ ├── Surface.h │ │ ├── UserCmd.h │ │ ├── Utils.cpp │ │ ├── Utils.h │ │ ├── UtlMap.h │ │ ├── UtlMemory.h │ │ ├── UtlString.h │ │ ├── UtlVector.h │ │ ├── VarMapping.h │ │ ├── Vector.h │ │ ├── ViewRenderBeams.h │ │ ├── VirtualMethod.h │ │ ├── WeaponData.h │ │ ├── WeaponId.h │ │ ├── WeaponSystem.h │ │ └── matrix3x4.h │ ├── SGX_MDL_u.c │ ├── SGX_MDL_u.h │ ├── SmallVariant.h │ ├── SortFilter.h │ ├── Texture.cpp │ ├── Texture.h │ ├── imguiCustom.cpp │ ├── imguiCustom.h │ ├── pch-c.c │ ├── pch.cpp │ └── pch.h └── Tests │ ├── CMakeLists.txt │ ├── HelpersTests.cpp │ ├── InventoryChanger │ ├── Backend │ │ ├── CMakeLists.txt │ │ ├── ItemConstRemoverTests.cpp │ │ ├── PickEmTests.cpp │ │ ├── Request │ │ │ ├── CMakeLists.txt │ │ │ ├── ItemModificationHandlerTests.cpp │ │ │ ├── PickEmHandlerTests.cpp │ │ │ └── RequestBuilderTests.cpp │ │ ├── Response │ │ │ └── ItemInResponseTests.cpp │ │ ├── ResponseQueueTests.cpp │ │ ├── StorageUnitManagerTests.cpp │ │ └── XRayScannerTests.cpp │ ├── CMakeLists.txt │ ├── GameItems │ │ ├── CMakeLists.txt │ │ ├── ItemSorterTests.cpp │ │ ├── ItemTests.cpp │ │ ├── LookupTests.cpp │ │ └── StorageTests.cpp │ ├── Inventory │ │ ├── CMakeLists.txt │ │ └── StructsFromJsonTests.cpp │ ├── ItemGenerator │ │ ├── AttributeGeneratorTests.cpp │ │ ├── CMakeLists.txt │ │ └── DefaultGeneratorTests.cpp │ ├── ItemGeneratorTests.cpp │ └── StaticDataTests.cpp │ └── SortFilterTests.cpp ├── LICENSE.md ├── README.md ├── comp_study ├── history.py ├── ks_acca.py ├── os_cac.py ├── os_lac.py ├── os_smac.py ├── th_acca.py ├── th_kill.py └── th_vara.py ├── eval.py ├── experiments ├── exp_atk.py ├── exp_bench.py ├── exp_cnt.py ├── exp_obs.py ├── exp_roc.py ├── exp_std.py ├── sim_atk.py └── stat_obs.py ├── makefile ├── preprocess.py ├── requirements.txt ├── train.py └── utils ├── __init__.py ├── ml_util.py ├── plot_util.py └── util.py /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | __pycache__ 3 | data_processed 4 | data_loss 5 | trained_models 6 | figures 7 | bench 8 | *.pickle -------------------------------------------------------------------------------- /Demo/.gitattributes: -------------------------------------------------------------------------------- 1 | *.h linguist-language=C++ 2 | Source/freetype/** linguist-vendored 3 | * text=auto 4 | -------------------------------------------------------------------------------- /Demo/Dependencies/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(imgui) 2 | 3 | if (WIN32) 4 | add_subdirectory(freetype) 5 | add_subdirectory(MinHook) 6 | 7 | target_compile_definitions(OsirisOBJ PRIVATE NOMINMAX) 8 | endif() 9 | 10 | target_include_directories(OsirisOBJ PUBLIC range-v3) 11 | -------------------------------------------------------------------------------- /Demo/Dependencies/MinHook/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | buffer.c 3 | hde/hde32.c 4 | hde/hde64.c 5 | hook.c 6 | trampoline.c 7 | ) 8 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | src/autofit/autofit.c 3 | src/cff/cff.c 4 | src/base/ftbase.c 5 | src/base/ftbitmap.c 6 | src/base/ftdebug.c 7 | src/base/ftglyph.c 8 | src/base/ftinit.c 9 | src/base/ftsynth.c 10 | src/base/ftsystem.c 11 | src/psaux/psaux.c 12 | src/pshinter/pshinter.c 13 | src/psnames/psnames.c 14 | src/raster/raster.c 15 | src/sfnt/sfnt.c 16 | src/smooth/smooth.c 17 | src/truetype/truetype.c) 18 | 19 | target_compile_definitions(OsirisOBJ PRIVATE FT2_BUILD_LIBRARY) 20 | target_include_directories(OsirisOBJ PRIVATE .) 21 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/freetype/config/ftmodule.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file registers the FreeType modules compiled into the library. 3 | * 4 | * If you use GNU make, this file IS NOT USED! Instead, it is created in 5 | * the objects directory (normally `/objs/`) based on information 6 | * from `/modules.cfg`. 7 | * 8 | * Please read `docs/INSTALL.ANY` and `docs/CUSTOMIZE` how to compile 9 | * FreeType without GNU make. 10 | * 11 | */ 12 | 13 | FT_USE_MODULE( FT_Module_Class, autofit_module_class ) 14 | FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) 15 | //FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) 16 | FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) 17 | //FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) 18 | //FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) 19 | //FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) 20 | //FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) 21 | //FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) 22 | FT_USE_MODULE( FT_Module_Class, psaux_module_class ) 23 | FT_USE_MODULE( FT_Module_Class, psnames_module_class ) 24 | FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) 25 | FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) 26 | FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) 27 | FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) 28 | //FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) 29 | 30 | /* EOF */ 31 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/freetype/internal/ftpsprop.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ftpsprop.h 4 | * 5 | * Get and set properties of PostScript drivers (specification). 6 | * 7 | * Copyright (C) 2017-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef FTPSPROP_H_ 20 | #define FTPSPROP_H_ 21 | 22 | 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | 29 | FT_BASE_CALLBACK( FT_Error ) 30 | ps_property_set( FT_Module module, /* PS_Driver */ 31 | const char* property_name, 32 | const void* value, 33 | FT_Bool value_is_string ); 34 | 35 | FT_BASE_CALLBACK( FT_Error ) 36 | ps_property_get( FT_Module module, /* PS_Driver */ 37 | const char* property_name, 38 | void* value ); 39 | 40 | 41 | FT_END_HEADER 42 | 43 | 44 | #endif /* FTPSPROP_H_ */ 45 | 46 | 47 | /* END */ 48 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/freetype/internal/services/svkern.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * svkern.h 4 | * 5 | * The FreeType Kerning service (specification). 6 | * 7 | * Copyright (C) 2006-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef SVKERN_H_ 20 | #define SVKERN_H_ 21 | 22 | #include 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | #define FT_SERVICE_ID_KERNING "kerning" 29 | 30 | 31 | typedef FT_Error 32 | (*FT_Kerning_TrackGetFunc)( FT_Face face, 33 | FT_Fixed point_size, 34 | FT_Int degree, 35 | FT_Fixed* akerning ); 36 | 37 | FT_DEFINE_SERVICE( Kerning ) 38 | { 39 | FT_Kerning_TrackGetFunc get_track; 40 | }; 41 | 42 | /* */ 43 | 44 | 45 | FT_END_HEADER 46 | 47 | 48 | #endif /* SVKERN_H_ */ 49 | 50 | 51 | /* END */ 52 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/freetype/internal/services/svtteng.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * svtteng.h 4 | * 5 | * The FreeType TrueType engine query service (specification). 6 | * 7 | * Copyright (C) 2006-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef SVTTENG_H_ 20 | #define SVTTENG_H_ 21 | 22 | #include 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | 29 | /* 30 | * SFNT table loading service. 31 | */ 32 | 33 | #define FT_SERVICE_ID_TRUETYPE_ENGINE "truetype-engine" 34 | 35 | /* 36 | * Used to implement FT_Get_TrueType_Engine_Type 37 | */ 38 | 39 | FT_DEFINE_SERVICE( TrueTypeEngine ) 40 | { 41 | FT_TrueTypeEngineType engine_type; 42 | }; 43 | 44 | /* */ 45 | 46 | 47 | FT_END_HEADER 48 | 49 | 50 | #endif /* SVTTENG_H_ */ 51 | 52 | 53 | /* END */ 54 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/freetype/internal/services/svwinfnt.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * svwinfnt.h 4 | * 5 | * The FreeType Windows FNT/FONT service (specification). 6 | * 7 | * Copyright (C) 2003-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef SVWINFNT_H_ 20 | #define SVWINFNT_H_ 21 | 22 | #include 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | 29 | #define FT_SERVICE_ID_WINFNT "winfonts" 30 | 31 | typedef FT_Error 32 | (*FT_WinFnt_GetHeaderFunc)( FT_Face face, 33 | FT_WinFNT_HeaderRec *aheader ); 34 | 35 | 36 | FT_DEFINE_SERVICE( WinFnt ) 37 | { 38 | FT_WinFnt_GetHeaderFunc get_header; 39 | }; 40 | 41 | /* */ 42 | 43 | 44 | FT_END_HEADER 45 | 46 | 47 | #endif /* SVWINFNT_H_ */ 48 | 49 | 50 | /* END */ 51 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/ft2build.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ft2build.h 4 | * 5 | * FreeType 2 build and setup macros. 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This is the 'entry point' for FreeType header file inclusions, to be 22 | * loaded before all other header files. 23 | * 24 | * A typical example is 25 | * 26 | * ``` 27 | * #include 28 | * #include 29 | * ``` 30 | * 31 | */ 32 | 33 | 34 | #ifndef FT2BUILD_H_ 35 | #define FT2BUILD_H_ 36 | 37 | #include 38 | 39 | #endif /* FT2BUILD_H_ */ 40 | 41 | 42 | /* END */ 43 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/autofit/afangles.h: -------------------------------------------------------------------------------- 1 | /* 2 | * afangles.h 3 | * 4 | * This is a dummy file, used to please the build system. It is never 5 | * included by the auto-fitter sources. 6 | * 7 | */ 8 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/autofit/afdummy.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * afdummy.h 4 | * 5 | * Auto-fitter dummy routines to be used if no hinting should be 6 | * performed (specification). 7 | * 8 | * Copyright (C) 2003-2020 by 9 | * David Turner, Robert Wilhelm, and Werner Lemberg. 10 | * 11 | * This file is part of the FreeType project, and may only be used, 12 | * modified, and distributed under the terms of the FreeType project 13 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 14 | * this file you indicate that you have read the license and 15 | * understand and accept it fully. 16 | * 17 | */ 18 | 19 | 20 | #ifndef AFDUMMY_H_ 21 | #define AFDUMMY_H_ 22 | 23 | #include "aftypes.h" 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | /* A dummy writing system used when no hinting should be performed. */ 29 | 30 | AF_DECLARE_WRITING_SYSTEM_CLASS( af_dummy_writing_system_class ) 31 | 32 | /* */ 33 | 34 | FT_END_HEADER 35 | 36 | 37 | #endif /* AFDUMMY_H_ */ 38 | 39 | 40 | /* END */ 41 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/autofit/aferrors.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * aferrors.h 4 | * 5 | * Autofitter error codes (specification only). 6 | * 7 | * Copyright (C) 2005-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This file is used to define the Autofitter error enumeration 22 | * constants. 23 | * 24 | */ 25 | 26 | #ifndef AFERRORS_H_ 27 | #define AFERRORS_H_ 28 | 29 | #include 30 | 31 | #undef FTERRORS_H_ 32 | 33 | #undef FT_ERR_PREFIX 34 | #define FT_ERR_PREFIX AF_Err_ 35 | #define FT_ERR_BASE FT_Mod_Err_Autofit 36 | 37 | #include 38 | 39 | #endif /* AFERRORS_H_ */ 40 | 41 | 42 | /* END */ 43 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/autofit/afindic.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * afindic.h 4 | * 5 | * Auto-fitter hinting routines for Indic writing system 6 | * (specification). 7 | * 8 | * Copyright (C) 2007-2020 by 9 | * Rahul Bhalerao , . 10 | * 11 | * This file is part of the FreeType project, and may only be used, 12 | * modified, and distributed under the terms of the FreeType project 13 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 14 | * this file you indicate that you have read the license and 15 | * understand and accept it fully. 16 | * 17 | */ 18 | 19 | 20 | #ifndef AFINDIC_H_ 21 | #define AFINDIC_H_ 22 | 23 | #include "afhints.h" 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | 29 | /* the `indic' writing system */ 30 | 31 | AF_DECLARE_WRITING_SYSTEM_CLASS( af_indic_writing_system_class ) 32 | 33 | 34 | /* */ 35 | 36 | FT_END_HEADER 37 | 38 | #endif /* AFINDIC_H_ */ 39 | 40 | 41 | /* END */ 42 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/autofit/aflatin2.h: -------------------------------------------------------------------------------- 1 | /* ATTENTION: This file doesn't compile. It is only here as a reference */ 2 | /* of an alternative latin hinting algorithm that was always */ 3 | /* marked as experimental. */ 4 | 5 | 6 | /**************************************************************************** 7 | * 8 | * aflatin2.h 9 | * 10 | * Auto-fitter hinting routines for latin writing system 11 | * (specification). 12 | * 13 | * Copyright (C) 2003-2020 by 14 | * David Turner, Robert Wilhelm, and Werner Lemberg. 15 | * 16 | * This file is part of the FreeType project, and may only be used, 17 | * modified, and distributed under the terms of the FreeType project 18 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 19 | * this file you indicate that you have read the license and 20 | * understand and accept it fully. 21 | * 22 | */ 23 | 24 | 25 | #ifndef AFLATIN2_H_ 26 | #define AFLATIN2_H_ 27 | 28 | #include "afhints.h" 29 | 30 | 31 | FT_BEGIN_HEADER 32 | 33 | 34 | /* the `latin' writing system */ 35 | 36 | AF_DECLARE_WRITING_SYSTEM_CLASS( af_latin2_writing_system_class ) 37 | 38 | 39 | /* */ 40 | 41 | FT_END_HEADER 42 | 43 | #endif /* AFLATIN_H_ */ 44 | 45 | 46 | /* END */ 47 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/autofit/afranges.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * afranges.h 4 | * 5 | * Auto-fitter Unicode script ranges (specification). 6 | * 7 | * Copyright (C) 2013-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef AFRANGES_H_ 20 | #define AFRANGES_H_ 21 | 22 | 23 | #include "aftypes.h" 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | #undef SCRIPT 29 | #define SCRIPT( s, S, d, h, H, ss ) \ 30 | extern const AF_Script_UniRangeRec af_ ## s ## _uniranges[]; 31 | 32 | #include "afscript.h" 33 | 34 | #undef SCRIPT 35 | #define SCRIPT( s, S, d, h, H, ss ) \ 36 | extern const AF_Script_UniRangeRec af_ ## s ## _nonbase_uniranges[]; 37 | 38 | #include "afscript.h" 39 | 40 | /* */ 41 | 42 | FT_END_HEADER 43 | 44 | #endif /* AFRANGES_H_ */ 45 | 46 | 47 | /* END */ 48 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/autofit/autofit.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * autofit.c 4 | * 5 | * Auto-fitter module (body). 6 | * 7 | * Copyright (C) 2003-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "afangles.c" 22 | #include "afblue.c" 23 | #include "afcjk.c" 24 | #include "afdummy.c" 25 | #include "afglobal.c" 26 | #include "afhints.c" 27 | #include "afindic.c" 28 | #include "aflatin.c" 29 | #include "aflatin2.c" 30 | #include "afloader.c" 31 | #include "afmodule.c" 32 | #include "afranges.c" 33 | #include "afshaper.c" 34 | #include "afwarp.c" 35 | 36 | 37 | /* END */ 38 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/base/ftbase.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ftbase.c 4 | * 5 | * Single object library component (body only). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "ftadvanc.c" 22 | #include "ftcalc.c" 23 | #include "ftcolor.c" 24 | #include "ftdbgmem.c" 25 | #include "fterrors.c" 26 | #include "ftfntfmt.c" 27 | #include "ftgloadr.c" 28 | #include "fthash.c" 29 | #include "ftlcdfil.c" 30 | #include "ftmac.c" 31 | #include "ftobjs.c" 32 | #include "ftoutln.c" 33 | #include "ftpsprop.c" 34 | #include "ftrfork.c" 35 | #include "ftsnames.c" 36 | #include "ftstream.c" 37 | #include "fttrigon.c" 38 | #include "ftutil.c" 39 | 40 | 41 | /* END */ 42 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/base/fterrors.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * fterrors.c 4 | * 5 | * FreeType API for error code handling. 6 | * 7 | * Copyright (C) 2018-2020 by 8 | * Armin Hasitzka, David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #include 20 | #include 21 | 22 | 23 | /* documentation is in fterrors.h */ 24 | 25 | FT_EXPORT_DEF( const char* ) 26 | FT_Error_String( FT_Error error_code ) 27 | { 28 | if ( error_code < 0 || 29 | error_code >= FT_ERR_CAT( FT_ERR_PREFIX, Max ) ) 30 | return NULL; 31 | 32 | #if defined( FT_CONFIG_OPTION_ERROR_STRINGS ) || \ 33 | defined( FT_DEBUG_LEVEL_ERROR ) 34 | 35 | #undef FTERRORS_H_ 36 | #define FT_ERROR_START_LIST switch ( FT_ERROR_BASE( error_code ) ) { 37 | #define FT_ERRORDEF( e, v, s ) case v: return s; 38 | #define FT_ERROR_END_LIST } 39 | 40 | #include 41 | 42 | #endif /* defined( FT_CONFIG_OPTION_ERROR_STRINGS ) || ... */ 43 | 44 | return NULL; 45 | } 46 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/base/ftfntfmt.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ftfntfmt.c 4 | * 5 | * FreeType utility file for font formats (body). 6 | * 7 | * Copyright (C) 2002-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #include 20 | #include 21 | #include 22 | 23 | 24 | /* documentation is in ftfntfmt.h */ 25 | 26 | FT_EXPORT_DEF( const char* ) 27 | FT_Get_Font_Format( FT_Face face ) 28 | { 29 | const char* result = NULL; 30 | 31 | 32 | if ( face ) 33 | FT_FACE_FIND_SERVICE( face, result, FONT_FORMAT ); 34 | 35 | return result; 36 | } 37 | 38 | 39 | /* deprecated function name; retained for ABI compatibility */ 40 | 41 | FT_EXPORT_DEF( const char* ) 42 | FT_Get_X11_Font_Format( FT_Face face ) 43 | { 44 | const char* result = NULL; 45 | 46 | 47 | if ( face ) 48 | FT_FACE_FIND_SERVICE( face, result, FONT_FORMAT ); 49 | 50 | return result; 51 | } 52 | 53 | 54 | /* END */ 55 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/base/ftpatent.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ftpatent.c 4 | * 5 | * FreeType API for checking patented TrueType bytecode instructions 6 | * (body). Obsolete, retained for backward compatibility. 7 | * 8 | * Copyright (C) 2007-2020 by 9 | * David Turner. 10 | * 11 | * This file is part of the FreeType project, and may only be used, 12 | * modified, and distributed under the terms of the FreeType project 13 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 14 | * this file you indicate that you have read the license and 15 | * understand and accept it fully. 16 | * 17 | */ 18 | 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | 27 | /* documentation is in freetype.h */ 28 | 29 | FT_EXPORT_DEF( FT_Bool ) 30 | FT_Face_CheckTrueTypePatents( FT_Face face ) 31 | { 32 | FT_UNUSED( face ); 33 | 34 | return FALSE; 35 | } 36 | 37 | 38 | /* documentation is in freetype.h */ 39 | 40 | FT_EXPORT_DEF( FT_Bool ) 41 | FT_Face_SetUnpatentedHinting( FT_Face face, 42 | FT_Bool value ) 43 | { 44 | FT_UNUSED( face ); 45 | FT_UNUSED( value ); 46 | 47 | return FALSE; 48 | } 49 | 50 | /* END */ 51 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/cff/cff.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * cff.c 4 | * 5 | * FreeType OpenType driver component (body only). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "cffcmap.c" 22 | #include "cffdrivr.c" 23 | #include "cffgload.c" 24 | #include "cffparse.c" 25 | #include "cffload.c" 26 | #include "cffobjs.c" 27 | 28 | /* END */ 29 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/cff/cffdrivr.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * cffdrivr.h 4 | * 5 | * High-level OpenType driver interface (specification). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef CFFDRIVER_H_ 20 | #define CFFDRIVER_H_ 21 | 22 | 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | FT_DECLARE_DRIVER( cff_driver_class ) 29 | 30 | FT_END_HEADER 31 | 32 | #endif /* CFFDRIVER_H_ */ 33 | 34 | 35 | /* END */ 36 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/cff/cfferrs.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * cfferrs.h 4 | * 5 | * CFF error codes (specification only). 6 | * 7 | * Copyright (C) 2001-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This file is used to define the CFF error enumeration constants. 22 | * 23 | */ 24 | 25 | #ifndef CFFERRS_H_ 26 | #define CFFERRS_H_ 27 | 28 | #include 29 | 30 | #undef FTERRORS_H_ 31 | 32 | #undef FT_ERR_PREFIX 33 | #define FT_ERR_PREFIX CFF_Err_ 34 | #define FT_ERR_BASE FT_Mod_Err_CFF 35 | 36 | 37 | #include 38 | 39 | #endif /* CFFERRS_H_ */ 40 | 41 | 42 | /* END */ 43 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/psaux/psaux.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * psaux.c 4 | * 5 | * FreeType auxiliary PostScript driver component (body only). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "afmparse.c" 22 | #include "psauxmod.c" 23 | #include "psconv.c" 24 | #include "psobjs.c" 25 | #include "t1cmap.c" 26 | #include "t1decode.c" 27 | #include "cffdecode.c" 28 | 29 | #include "psarrst.c" 30 | #include "psblues.c" 31 | #include "pserror.c" 32 | #include "psfont.c" 33 | #include "psft.c" 34 | #include "pshints.c" 35 | #include "psintrp.c" 36 | #include "psread.c" 37 | #include "psstack.c" 38 | 39 | 40 | /* END */ 41 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/psaux/psauxerr.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * psauxerr.h 4 | * 5 | * PS auxiliary module error codes (specification only). 6 | * 7 | * Copyright (C) 2001-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This file is used to define the PS auxiliary module error enumeration 22 | * constants. 23 | * 24 | */ 25 | 26 | #ifndef PSAUXERR_H_ 27 | #define PSAUXERR_H_ 28 | 29 | #include 30 | 31 | #undef FTERRORS_H_ 32 | 33 | #undef FT_ERR_PREFIX 34 | #define FT_ERR_PREFIX PSaux_Err_ 35 | #define FT_ERR_BASE FT_Mod_Err_PSaux 36 | 37 | #include 38 | 39 | #endif /* PSAUXERR_H_ */ 40 | 41 | 42 | /* END */ 43 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/pshinter/pshinter.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * pshinter.c 4 | * 5 | * FreeType PostScript Hinting module 6 | * 7 | * Copyright (C) 2001-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "pshalgo.c" 22 | #include "pshglob.c" 23 | #include "pshmod.c" 24 | #include "pshrec.c" 25 | 26 | 27 | /* END */ 28 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/pshinter/pshmod.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * pshmod.h 4 | * 5 | * PostScript hinter module interface (specification). 6 | * 7 | * Copyright (C) 2001-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef PSHMOD_H_ 20 | #define PSHMOD_H_ 21 | 22 | 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | 29 | FT_DECLARE_MODULE( pshinter_module_class ) 30 | 31 | 32 | FT_END_HEADER 33 | 34 | 35 | #endif /* PSHMOD_H_ */ 36 | 37 | 38 | /* END */ 39 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/pshinter/pshnterr.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * pshnterr.h 4 | * 5 | * PS Hinter error codes (specification only). 6 | * 7 | * Copyright (C) 2003-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This file is used to define the PSHinter error enumeration constants. 22 | * 23 | */ 24 | 25 | #ifndef PSHNTERR_H_ 26 | #define PSHNTERR_H_ 27 | 28 | #include 29 | 30 | #undef FTERRORS_H_ 31 | 32 | #undef FT_ERR_PREFIX 33 | #define FT_ERR_PREFIX PSH_Err_ 34 | #define FT_ERR_BASE FT_Mod_Err_PShinter 35 | 36 | #include 37 | 38 | #endif /* PSHNTERR_H_ */ 39 | 40 | 41 | /* END */ 42 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/psnames/psmodule.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * psmodule.h 4 | * 5 | * High-level psnames module interface (specification). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef PSMODULE_H_ 20 | #define PSMODULE_H_ 21 | 22 | 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | 29 | FT_DECLARE_MODULE( psnames_module_class ) 30 | 31 | 32 | FT_END_HEADER 33 | 34 | #endif /* PSMODULE_H_ */ 35 | 36 | 37 | /* END */ 38 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/psnames/psnamerr.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * psnamerr.h 4 | * 5 | * PS names module error codes (specification only). 6 | * 7 | * Copyright (C) 2001-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This file is used to define the PS names module error enumeration 22 | * constants. 23 | * 24 | */ 25 | 26 | #ifndef PSNAMERR_H_ 27 | #define PSNAMERR_H_ 28 | 29 | #include 30 | 31 | #undef FTERRORS_H_ 32 | 33 | #undef FT_ERR_PREFIX 34 | #define FT_ERR_PREFIX PSnames_Err_ 35 | #define FT_ERR_BASE FT_Mod_Err_PSnames 36 | 37 | #include 38 | 39 | #endif /* PSNAMERR_H_ */ 40 | 41 | 42 | /* END */ 43 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/psnames/psnames.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * psnames.c 4 | * 5 | * FreeType psnames module component (body only). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "psmodule.c" 22 | 23 | 24 | /* END */ 25 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/raster/ftraster.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ftraster.h 4 | * 5 | * The FreeType glyph rasterizer (specification). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used 11 | * modified and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef FTRASTER_H_ 20 | #define FTRASTER_H_ 21 | 22 | 23 | #include 24 | #include FT_CONFIG_CONFIG_H 25 | #include 26 | 27 | #include 28 | 29 | FT_BEGIN_HEADER 30 | 31 | 32 | /************************************************************************** 33 | * 34 | * Uncomment the following line if you are using ftraster.c as a 35 | * standalone module, fully independent of FreeType. 36 | */ 37 | /* #define STANDALONE_ */ 38 | 39 | FT_EXPORT_VAR( const FT_Raster_Funcs ) ft_standard_raster; 40 | 41 | 42 | FT_END_HEADER 43 | 44 | #endif /* FTRASTER_H_ */ 45 | 46 | 47 | /* END */ 48 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/raster/ftrend1.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ftrend1.h 4 | * 5 | * The FreeType glyph rasterizer interface (specification). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef FTREND1_H_ 20 | #define FTREND1_H_ 21 | 22 | 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | 29 | FT_DECLARE_RENDERER( ft_raster1_renderer_class ) 30 | 31 | 32 | FT_END_HEADER 33 | 34 | #endif /* FTREND1_H_ */ 35 | 36 | 37 | /* END */ 38 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/raster/raster.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * raster.c 4 | * 5 | * FreeType monochrome rasterer module component (body only). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "ftraster.c" 22 | #include "ftrend1.c" 23 | 24 | 25 | /* END */ 26 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/raster/rasterrs.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * rasterrs.h 4 | * 5 | * monochrome renderer error codes (specification only). 6 | * 7 | * Copyright (C) 2001-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This file is used to define the monochrome renderer error enumeration 22 | * constants. 23 | * 24 | */ 25 | 26 | #ifndef RASTERRS_H_ 27 | #define RASTERRS_H_ 28 | 29 | #include 30 | 31 | #undef FTERRORS_H_ 32 | 33 | #undef FT_ERR_PREFIX 34 | #define FT_ERR_PREFIX Raster_Err_ 35 | #define FT_ERR_BASE FT_Mod_Err_Raster 36 | 37 | #include 38 | 39 | #endif /* RASTERRS_H_ */ 40 | 41 | 42 | /* END */ 43 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/pngshim.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * pngshim.h 4 | * 5 | * PNG Bitmap glyph support. 6 | * 7 | * Copyright (C) 2013-2020 by 8 | * Google, Inc. 9 | * Written by Stuart Gill and Behdad Esfahbod. 10 | * 11 | * This file is part of the FreeType project, and may only be used, 12 | * modified, and distributed under the terms of the FreeType project 13 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 14 | * this file you indicate that you have read the license and 15 | * understand and accept it fully. 16 | * 17 | */ 18 | 19 | 20 | #ifndef PNGSHIM_H_ 21 | #define PNGSHIM_H_ 22 | 23 | 24 | #include "ttload.h" 25 | 26 | 27 | FT_BEGIN_HEADER 28 | 29 | #ifdef FT_CONFIG_OPTION_USE_PNG 30 | 31 | FT_LOCAL( FT_Error ) 32 | Load_SBit_Png( FT_GlyphSlot slot, 33 | FT_Int x_offset, 34 | FT_Int y_offset, 35 | FT_Int pix_bits, 36 | TT_SBit_Metrics metrics, 37 | FT_Memory memory, 38 | FT_Byte* data, 39 | FT_UInt png_len, 40 | FT_Bool populate_map_and_metrics, 41 | FT_Bool metrics_only ); 42 | 43 | #endif 44 | 45 | FT_END_HEADER 46 | 47 | #endif /* PNGSHIM_H_ */ 48 | 49 | 50 | /* END */ 51 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/sfdriver.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * sfdriver.h 4 | * 5 | * High-level SFNT driver interface (specification). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef SFDRIVER_H_ 20 | #define SFDRIVER_H_ 21 | 22 | 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | FT_DECLARE_MODULE( sfnt_module_class ) 29 | 30 | FT_END_HEADER 31 | 32 | #endif /* SFDRIVER_H_ */ 33 | 34 | 35 | /* END */ 36 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/sferrors.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * sferrors.h 4 | * 5 | * SFNT error codes (specification only). 6 | * 7 | * Copyright (C) 2001-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This file is used to define the SFNT error enumeration constants. 22 | * 23 | */ 24 | 25 | #ifndef SFERRORS_H_ 26 | #define SFERRORS_H_ 27 | 28 | #include 29 | 30 | #undef FTERRORS_H_ 31 | 32 | #undef FT_ERR_PREFIX 33 | #define FT_ERR_PREFIX SFNT_Err_ 34 | #define FT_ERR_BASE FT_Mod_Err_SFNT 35 | 36 | #include 37 | 38 | #endif /* SFERRORS_H_ */ 39 | 40 | 41 | /* END */ 42 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/sfnt.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * sfnt.c 4 | * 5 | * Single object library component. 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "pngshim.c" 22 | #include "sfdriver.c" 23 | #include "sfobjs.c" 24 | #include "sfwoff.c" 25 | #include "sfwoff2.c" 26 | #include "ttbdf.c" 27 | #include "ttcmap.c" 28 | #include "ttcolr.c" 29 | #include "ttcpal.c" 30 | 31 | #include "ttkern.c" 32 | #include "ttload.c" 33 | #include "ttmtx.c" 34 | #include "ttpost.c" 35 | #include "ttsbit.c" 36 | #include "woff2tags.c" 37 | 38 | 39 | /* END */ 40 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/sfwoff.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * sfwoff.h 4 | * 5 | * WOFFF format management (specification). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef SFWOFF_H_ 20 | #define SFWOFF_H_ 21 | 22 | 23 | #include 24 | #include 25 | 26 | 27 | FT_BEGIN_HEADER 28 | 29 | 30 | FT_LOCAL( FT_Error ) 31 | woff_open_font( FT_Stream stream, 32 | TT_Face face ); 33 | 34 | 35 | FT_END_HEADER 36 | 37 | #endif /* SFWOFF_H_ */ 38 | 39 | 40 | /* END */ 41 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/ttbdf.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ttbdf.h 4 | * 5 | * TrueType and OpenType embedded BDF properties (specification). 6 | * 7 | * Copyright (C) 2005-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef TTBDF_H_ 20 | #define TTBDF_H_ 21 | 22 | 23 | #include "ttload.h" 24 | #include 25 | 26 | 27 | FT_BEGIN_HEADER 28 | 29 | 30 | #ifdef TT_CONFIG_OPTION_BDF 31 | 32 | FT_LOCAL( void ) 33 | tt_face_free_bdf_props( TT_Face face ); 34 | 35 | 36 | FT_LOCAL( FT_Error ) 37 | tt_face_find_bdf_prop( TT_Face face, 38 | const char* property_name, 39 | BDF_PropertyRec *aprop ); 40 | 41 | #endif /* TT_CONFIG_OPTION_BDF */ 42 | 43 | 44 | FT_END_HEADER 45 | 46 | #endif /* TTBDF_H_ */ 47 | 48 | 49 | /* END */ 50 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/ttcmapc.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ttcmapc.h 4 | * 5 | * TT CMAP classes definitions (specification only). 6 | * 7 | * Copyright (C) 2009-2020 by 8 | * Oran Agra and Mickey Gabel. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifdef TT_CONFIG_CMAP_FORMAT_0 20 | TTCMAPCITEM( tt_cmap0_class_rec ) 21 | #endif 22 | 23 | #ifdef TT_CONFIG_CMAP_FORMAT_2 24 | TTCMAPCITEM( tt_cmap2_class_rec ) 25 | #endif 26 | 27 | #ifdef TT_CONFIG_CMAP_FORMAT_4 28 | TTCMAPCITEM( tt_cmap4_class_rec ) 29 | #endif 30 | 31 | #ifdef TT_CONFIG_CMAP_FORMAT_6 32 | TTCMAPCITEM( tt_cmap6_class_rec ) 33 | #endif 34 | 35 | #ifdef TT_CONFIG_CMAP_FORMAT_8 36 | TTCMAPCITEM( tt_cmap8_class_rec ) 37 | #endif 38 | 39 | #ifdef TT_CONFIG_CMAP_FORMAT_10 40 | TTCMAPCITEM( tt_cmap10_class_rec ) 41 | #endif 42 | 43 | #ifdef TT_CONFIG_CMAP_FORMAT_12 44 | TTCMAPCITEM( tt_cmap12_class_rec ) 45 | #endif 46 | 47 | #ifdef TT_CONFIG_CMAP_FORMAT_13 48 | TTCMAPCITEM( tt_cmap13_class_rec ) 49 | #endif 50 | 51 | #ifdef TT_CONFIG_CMAP_FORMAT_14 52 | TTCMAPCITEM( tt_cmap14_class_rec ) 53 | #endif 54 | 55 | 56 | /* END */ 57 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/ttcpal.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ttcpal.h 4 | * 5 | * TrueType and OpenType color palette support (specification). 6 | * 7 | * Copyright (C) 2018-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * Originally written by Shao Yu Zhang . 11 | * 12 | * This file is part of the FreeType project, and may only be used, 13 | * modified, and distributed under the terms of the FreeType project 14 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 15 | * this file you indicate that you have read the license and 16 | * understand and accept it fully. 17 | * 18 | */ 19 | 20 | 21 | #ifndef __TTCPAL_H__ 22 | #define __TTCPAL_H__ 23 | 24 | 25 | #include "ttload.h" 26 | 27 | 28 | FT_BEGIN_HEADER 29 | 30 | 31 | FT_LOCAL( FT_Error ) 32 | tt_face_load_cpal( TT_Face face, 33 | FT_Stream stream ); 34 | 35 | FT_LOCAL( void ) 36 | tt_face_free_cpal( TT_Face face ); 37 | 38 | FT_LOCAL( FT_Error ) 39 | tt_face_palette_set( TT_Face face, 40 | FT_UInt palette_index ); 41 | 42 | 43 | FT_END_HEADER 44 | 45 | 46 | #endif /* __TTCPAL_H__ */ 47 | 48 | /* END */ 49 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/ttkern.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ttkern.h 4 | * 5 | * Load the basic TrueType kerning table. This doesn't handle 6 | * kerning data within the GPOS table at the moment. 7 | * 8 | * Copyright (C) 1996-2020 by 9 | * David Turner, Robert Wilhelm, and Werner Lemberg. 10 | * 11 | * This file is part of the FreeType project, and may only be used, 12 | * modified, and distributed under the terms of the FreeType project 13 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 14 | * this file you indicate that you have read the license and 15 | * understand and accept it fully. 16 | * 17 | */ 18 | 19 | 20 | #ifndef TTKERN_H_ 21 | #define TTKERN_H_ 22 | 23 | 24 | #include 25 | #include 26 | 27 | 28 | FT_BEGIN_HEADER 29 | 30 | 31 | FT_LOCAL( FT_Error ) 32 | tt_face_load_kern( TT_Face face, 33 | FT_Stream stream ); 34 | 35 | FT_LOCAL( void ) 36 | tt_face_done_kern( TT_Face face ); 37 | 38 | FT_LOCAL( FT_Int ) 39 | tt_face_get_kerning( TT_Face face, 40 | FT_UInt left_glyph, 41 | FT_UInt right_glyph ); 42 | 43 | #define TT_FACE_HAS_KERNING( face ) ( (face)->kern_avail_bits != 0 ) 44 | 45 | 46 | FT_END_HEADER 47 | 48 | #endif /* TTKERN_H_ */ 49 | 50 | 51 | /* END */ 52 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/ttpost.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ttpost.h 4 | * 5 | * PostScript name table processing for TrueType and OpenType fonts 6 | * (specification). 7 | * 8 | * Copyright (C) 1996-2020 by 9 | * David Turner, Robert Wilhelm, and Werner Lemberg. 10 | * 11 | * This file is part of the FreeType project, and may only be used, 12 | * modified, and distributed under the terms of the FreeType project 13 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 14 | * this file you indicate that you have read the license and 15 | * understand and accept it fully. 16 | * 17 | */ 18 | 19 | 20 | #ifndef TTPOST_H_ 21 | #define TTPOST_H_ 22 | 23 | 24 | #include 25 | #include FT_CONFIG_CONFIG_H 26 | #include 27 | 28 | 29 | FT_BEGIN_HEADER 30 | 31 | 32 | FT_LOCAL( FT_Error ) 33 | tt_face_get_ps_name( TT_Face face, 34 | FT_UInt idx, 35 | FT_String** PSname ); 36 | 37 | FT_LOCAL( void ) 38 | tt_face_free_ps_names( TT_Face face ); 39 | 40 | 41 | FT_END_HEADER 42 | 43 | #endif /* TTPOST_H_ */ 44 | 45 | 46 | /* END */ 47 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/sfnt/woff2tags.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * woff2tags.h 4 | * 5 | * WOFFF2 Font table tags (specification). 6 | * 7 | * Copyright (C) 2019-2020 by 8 | * Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef WOFF2TAGS_H 20 | #define WOFF2TAGS_H 21 | 22 | 23 | #include 24 | #include 25 | 26 | 27 | FT_BEGIN_HEADER 28 | 29 | 30 | FT_LOCAL( FT_ULong ) 31 | woff2_known_tags( FT_Byte index ); 32 | 33 | 34 | FT_END_HEADER 35 | 36 | #endif /* WOFF2TAGS_H */ 37 | 38 | 39 | /* END */ 40 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/smooth/ftsmerrs.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ftsmerrs.h 4 | * 5 | * smooth renderer error codes (specification only). 6 | * 7 | * Copyright (C) 2001-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This file is used to define the smooth renderer error enumeration 22 | * constants. 23 | * 24 | */ 25 | 26 | #ifndef FTSMERRS_H_ 27 | #define FTSMERRS_H_ 28 | 29 | #include 30 | 31 | #undef FTERRORS_H_ 32 | 33 | #undef FT_ERR_PREFIX 34 | #define FT_ERR_PREFIX Smooth_Err_ 35 | #define FT_ERR_BASE FT_Mod_Err_Smooth 36 | 37 | #include 38 | 39 | #endif /* FTSMERRS_H_ */ 40 | 41 | 42 | /* END */ 43 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/smooth/ftsmooth.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ftsmooth.h 4 | * 5 | * Anti-aliasing renderer interface (specification). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef FTSMOOTH_H_ 20 | #define FTSMOOTH_H_ 21 | 22 | 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | 29 | FT_DECLARE_RENDERER( ft_smooth_renderer_class ) 30 | 31 | 32 | FT_END_HEADER 33 | 34 | #endif /* FTSMOOTH_H_ */ 35 | 36 | 37 | /* END */ 38 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/smooth/smooth.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * smooth.c 4 | * 5 | * FreeType anti-aliasing rasterer module component (body only). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "ftgrays.c" 22 | #include "ftsmooth.c" 23 | 24 | 25 | /* END */ 26 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/truetype/truetype.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * truetype.c 4 | * 5 | * FreeType TrueType driver component (body only). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #define FT_MAKE_OPTION_SINGLE_OBJECT 20 | 21 | #include "ttdriver.c" /* driver interface */ 22 | #include "ttgload.c" /* glyph loader */ 23 | #include "ttgxvar.c" /* gx distortable font */ 24 | #include "ttinterp.c" 25 | #include "ttobjs.c" /* object manager */ 26 | #include "ttpload.c" /* tables loader */ 27 | #include "ttsubpix.c" 28 | 29 | 30 | /* END */ 31 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/truetype/ttdriver.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * ttdriver.h 4 | * 5 | * High-level TrueType driver interface (specification). 6 | * 7 | * Copyright (C) 1996-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | #ifndef TTDRIVER_H_ 20 | #define TTDRIVER_H_ 21 | 22 | 23 | #include 24 | 25 | 26 | FT_BEGIN_HEADER 27 | 28 | FT_DECLARE_DRIVER( tt_driver_class ) 29 | 30 | FT_END_HEADER 31 | 32 | #endif /* TTDRIVER_H_ */ 33 | 34 | 35 | /* END */ 36 | -------------------------------------------------------------------------------- /Demo/Dependencies/freetype/src/truetype/tterrors.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * 3 | * tterrors.h 4 | * 5 | * TrueType error codes (specification only). 6 | * 7 | * Copyright (C) 2001-2020 by 8 | * David Turner, Robert Wilhelm, and Werner Lemberg. 9 | * 10 | * This file is part of the FreeType project, and may only be used, 11 | * modified, and distributed under the terms of the FreeType project 12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute 13 | * this file you indicate that you have read the license and 14 | * understand and accept it fully. 15 | * 16 | */ 17 | 18 | 19 | /************************************************************************** 20 | * 21 | * This file is used to define the TrueType error enumeration 22 | * constants. 23 | * 24 | */ 25 | 26 | #ifndef TTERRORS_H_ 27 | #define TTERRORS_H_ 28 | 29 | #include 30 | 31 | #undef FTERRORS_H_ 32 | 33 | #undef FT_ERR_PREFIX 34 | #define FT_ERR_PREFIX TT_Err_ 35 | #define FT_ERR_BASE FT_Mod_Err_TrueType 36 | 37 | #include 38 | 39 | #endif /* TTERRORS_H_ */ 40 | 41 | 42 | /* END */ 43 | -------------------------------------------------------------------------------- /Demo/Dependencies/imgui/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | imgui_demo.cpp 3 | imgui_draw.cpp 4 | imgui_freetype.cpp 5 | imgui_stdlib.cpp 6 | imgui_tables.cpp 7 | imgui_widgets.cpp 8 | imgui.cpp 9 | ) 10 | 11 | if (WIN32) 12 | target_sources(OsirisOBJ PRIVATE imgui_impl_dx9.cpp imgui_impl_win32.cpp) 13 | else() 14 | target_sources(OsirisOBJ PRIVATE imgui_impl_opengl3.cpp imgui_impl_sdl.cpp) 15 | find_package(Freetype REQUIRED) 16 | find_package(SDL2 REQUIRED) 17 | find_package(OpenGL REQUIRED) 18 | target_include_directories(OsirisOBJ PUBLIC ${SDL2_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS}) 19 | target_link_libraries(OsirisOBJ PRIVATE SDL2 GL Freetype::Freetype) 20 | endif() 21 | -------------------------------------------------------------------------------- /Demo/Dependencies/imgui/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014-2019 Omar Cornut 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Demo/Dependencies/imgui/imgui_impl_dx9.h: -------------------------------------------------------------------------------- 1 | // dear imgui: Renderer for DirectX9 2 | // This needs to be used along with a Platform Binding (e.g. Win32) 3 | 4 | // Implemented features: 5 | // [X] Renderer: User texture binding. Use 'LPDIRECT3DTEXTURE9' as ImTextureID. Read the FAQ about ImTextureID in imgui.cpp. 6 | // [X] Renderer: Support for large meshes (64k+ vertices) with 16-bits indices. 7 | 8 | // You can copy and use unmodified imgui_impl_* files in your project. See main.cpp for an example of using this. 9 | // If you are new to dear imgui, read examples/README.txt and read the documentation at the top of imgui.cpp. 10 | // https://github.com/ocornut/imgui 11 | 12 | #pragma once 13 | 14 | struct IDirect3DDevice9; 15 | struct ImDrawData; 16 | 17 | bool ImGui_ImplDX9_Init(IDirect3DDevice9* device); 18 | void ImGui_ImplDX9_Shutdown(); 19 | void ImGui_ImplDX9_NewFrame(); 20 | void ImGui_ImplDX9_RenderDrawData(ImDrawData* draw_data); 21 | 22 | void ImGui_ImplDX9_DestroyFontsTexture(); 23 | 24 | // Use if you want to reset your rendering device without losing ImGui state. 25 | bool ImGui_ImplDX9_CreateDeviceObjects(); 26 | void ImGui_ImplDX9_InvalidateDeviceObjects(); 27 | 28 | void* ImGui_CreateTextureRGBA(int width, int height, const unsigned char* data); 29 | void ImGui_DestroyTexture(void* texture); 30 | -------------------------------------------------------------------------------- /Demo/Dependencies/imgui/imgui_stdlib.h: -------------------------------------------------------------------------------- 1 | // imgui_stdlib.h 2 | // Wrappers for C++ standard library (STL) types (std::string, etc.) 3 | // This is also an example of how you may wrap your own similar types. 4 | 5 | // Compatibility: 6 | // - std::string support is only guaranteed to work from C++11. 7 | // If you try to use it pre-C++11, please share your findings (w/ info about compiler/architecture) 8 | 9 | // Changelog: 10 | // - v0.10: Initial version. Added InputText() / InputTextMultiline() calls with std::string 11 | 12 | #pragma once 13 | 14 | #include 15 | 16 | namespace ImGui 17 | { 18 | // ImGui::InputText() with std::string 19 | // Because text input needs dynamic resizing, we need to setup a callback to grow the capacity 20 | IMGUI_API bool InputText(const char* label, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); 21 | IMGUI_API bool InputTextMultiline(const char* label, std::string* str, const ImVec2& size = ImVec2(0, 0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); 22 | IMGUI_API bool InputTextWithHint(const char* label, const char* hint, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); 23 | IMGUI_API bool InputTextWithHint(const char* label, const char* hint, std::u8string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); 24 | } 25 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/all.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2013,2014. 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_ALL_HPP 15 | #define RANGES_V3_ALL_HPP 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/at.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // Copyright Gonzalo Brito Gadeschi 2017 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_AT_HPP 15 | #define RANGES_V3_AT_HPP 16 | 17 | #include 18 | RANGES_DEPRECATED_HEADER( 19 | "This header is deprecated. Please #include instead.") 20 | 21 | #include 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/back.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_BACK_HPP 14 | #define RANGES_V3_BACK_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/begin_end.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_BEGIN_END_HPP 14 | #define RANGES_V3_BEGIN_END_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/core.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2013-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_CORE_HPP 15 | #define RANGES_V3_CORE_HPP 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/data.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Casey Carter 2016 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_DATA_HPP 14 | #define RANGES_V3_DATA_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif // RANGES_V3_DATA_HPP 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/detail/epilogue.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_PROLOGUE_INCLUDED 14 | #error "Including epilogue, but prologue not included!" 15 | #endif 16 | #undef RANGES_PROLOGUE_INCLUDED 17 | 18 | #undef template 19 | #undef AND 20 | 21 | RANGES_DIAGNOSTIC_POP 22 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/detail/prologue.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_DETAIL_PROLOGUE_HPP 14 | #define RANGES_V3_DETAIL_PROLOGUE_HPP 15 | #include 16 | #endif 17 | 18 | #ifdef RANGES_PROLOGUE_INCLUDED 19 | #error "Prologue already included!" 20 | #endif 21 | #define RANGES_PROLOGUE_INCLUDED 22 | 23 | RANGES_DIAGNOSTIC_PUSH 24 | 25 | #ifdef RANGES_FEWER_WARNINGS 26 | RANGES_DIAGNOSTIC_IGNORE_UNDEFINED_INTERNAL 27 | RANGES_DIAGNOSTIC_IGNORE_INDENTATION 28 | RANGES_DIAGNOSTIC_IGNORE_CXX17_COMPAT 29 | #endif 30 | 31 | RANGES_DIAGNOSTIC_KEYWORD_MACRO 32 | 33 | #define template(...) \ 34 | CPP_PP_IGNORE_CXX2A_COMPAT_BEGIN \ 35 | template<__VA_ARGS__ CPP_TEMPLATE_AUX_ \ 36 | 37 | #define AND CPP_and 38 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/distance.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // Copyright Michel Morin 2014 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_DISTANCE_HPP 15 | #define RANGES_V3_DISTANCE_HPP 16 | 17 | #include 18 | RANGES_DEPRECATED_HEADER( 19 | "This header is deprecated. Please #include " 20 | "instead.") 21 | 22 | #include 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/empty.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_EMPTY_HPP 14 | #define RANGES_V3_EMPTY_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/front.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_FRONT_HPP 14 | #define RANGES_V3_FRONT_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/functional.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2019-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_FUNCTIONAL_HPP 15 | #define RANGES_V3_FUNCTIONAL_HPP 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/functional/identity.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2013-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | #ifndef RANGES_V3_FUNCTIONAL_IDENTITY_HPP 14 | #define RANGES_V3_FUNCTIONAL_IDENTITY_HPP 15 | 16 | #include 17 | 18 | #include 19 | 20 | namespace ranges 21 | { 22 | /// \addtogroup group-functional 23 | /// @{ 24 | struct identity 25 | { 26 | template 27 | constexpr T && operator()(T && t) const noexcept 28 | { 29 | return (T &&) t; 30 | } 31 | using is_transparent = void; 32 | }; 33 | 34 | /// \cond 35 | using ident RANGES_DEPRECATED("Replace uses of ranges::ident with ranges::identity") = 36 | identity; 37 | /// \endcond 38 | 39 | namespace cpp20 40 | { 41 | using ranges::identity; 42 | } 43 | /// @} 44 | } // namespace ranges 45 | 46 | #include 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/getlines.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_GETLINES_HPP 14 | #define RANGES_V3_GETLINES_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/index.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // Copyright Gonzalo Brito Gadeschi 2017 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_INDEX_HPP 15 | #define RANGES_V3_INDEX_HPP 16 | 17 | #include 18 | RANGES_DEPRECATED_HEADER( 19 | "This header is deprecated. Please #include instead.") 20 | 21 | #include 22 | 23 | #endif // RANGES_V3_INDEX_HPP 24 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/istream_range.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_ISTREAM_RANGE_HPP 14 | #define RANGES_V3_ISTREAM_RANGE_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/iterator.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2019-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_ITERATOR_HPP 15 | #define RANGES_V3_ITERATOR_HPP 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/iterator/default_sentinel.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2014-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | #ifndef RANGES_V3_ITERATOR_DEFAULT_SENTINEL_HPP 14 | #define RANGES_V3_ITERATOR_DEFAULT_SENTINEL_HPP 15 | 16 | #include 17 | #include 18 | 19 | #include 20 | 21 | namespace ranges 22 | { 23 | /// \addtogroup group-iterator 24 | /// @{ 25 | struct default_sentinel_t 26 | {}; 27 | 28 | // Default sentinel 29 | RANGES_INLINE_VARIABLE(default_sentinel_t, default_sentinel) 30 | 31 | namespace cpp20 32 | { 33 | using ranges::default_sentinel; 34 | using ranges::default_sentinel_t; 35 | } // namespace cpp20 36 | /// @} 37 | } // namespace ranges 38 | 39 | #include 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/numeric.hpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////// 2 | /// \file numeric.hpp 3 | /// Contains range-based versions of the numeric algorithms 4 | // 5 | // Copyright Eric Niebler 2014-present 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See 8 | // accompanying file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | 11 | #ifndef RANGES_V3_NUMERIC_HPP 12 | #define RANGES_V3_NUMERIC_HPP 13 | 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/range.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2019-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_ITERATOR_HPP 15 | #define RANGES_V3_ITERATOR_HPP 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/range_access.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // Copyright Casey Carter 2016 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_OLD_RANGE_ACCESS_HPP 15 | #define RANGES_V3_OLD_RANGE_ACCESS_HPP 16 | 17 | #include 18 | RANGES_DEPRECATED_HEADER( 19 | "This header is deprecated. Please #include instead.") 20 | 21 | #include 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/range_concepts.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_DEPRECATED_RANGE_CONCEPTS_HPP 14 | #define RANGES_V3_DEPRECATED_RANGE_CONCEPTS_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/range_traits.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_OLD_RANGE_TRAITS_HPP 14 | #define RANGES_V3_OLD_RANGE_TRAITS_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/size.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_SIZE_HPP 14 | #define RANGES_V3_SIZE_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/span.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Casey Carter 2016-2017 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_SPAN_HPP 14 | #define RANGES_V3_SPAN_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif // RANGES_V3_SPAN_HPP 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/to_container.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_TO_CONTAINER_HPP 14 | #define RANGES_V3_TO_CONTAINER_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2019-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_ITERATOR_HPP 15 | #define RANGES_V3_ITERATOR_HPP 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/associated_types.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-2014, 2016 4 | // Copyright Casey Carter 2016 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_UTILITY_ASSOCIATED_TYPES_HPP 15 | #define RANGES_V3_UTILITY_ASSOCIATED_TYPES_HPP 16 | 17 | #include 18 | RANGES_DEPRECATED_HEADER( 19 | "This header is deprecated. Please #include instead.") 20 | 21 | #include 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/basic_iterator.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // Copyright Casey Carter 2016 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | #ifndef RANGES_V3_UTILITY_BASIC_ITERATOR_HPP 14 | #define RANGES_V3_UTILITY_BASIC_ITERATOR_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include " 19 | "instead.") 20 | 21 | #include 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/common_iterator.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // Copyright Casey Carter 2016 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | #ifndef RANGES_V3_UTILITY_COMMON_ITERATOR_HPP 14 | #define RANGES_V3_UTILITY_COMMON_ITERATOR_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include " 19 | "instead.") 20 | 21 | #include 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/concepts.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_UTILITY_CONCEPTS_HPP 14 | #define RANGES_V3_UTILITY_CONCEPTS_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #include 23 | 24 | #include 25 | #include 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/counted_iterator.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | #ifndef RANGES_V3_UTILITY_COUNTED_ITERATOR_HPP 13 | #define RANGES_V3_UTILITY_COUNTED_ITERATOR_HPP 14 | 15 | #include 16 | RANGES_DEPRECATED_HEADER( 17 | "This header is deprecated. Please #include " 18 | "instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/dangling.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_UTILITY_DANGLING_HPP 14 | #define RANGES_V3_UTILITY_DANGLING_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/in_place.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2013-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_UTILITY_IN_PLACE_HPP 15 | #define RANGES_V3_UTILITY_IN_PLACE_HPP 16 | 17 | #include 18 | 19 | #include 20 | 21 | #include 22 | 23 | namespace ranges 24 | { 25 | /// \ingroup group-utility 26 | struct in_place_t 27 | {}; 28 | RANGES_INLINE_VARIABLE(in_place_t, in_place) 29 | } // namespace ranges 30 | 31 | #include 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/invoke.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // Copyright Casey Carter 2016 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | #ifndef RANGES_V3_UTILITY_INVOKE_HPP 14 | #define RANGES_V3_UTILITY_INVOKE_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This file has been deprecated. Please #include " 19 | "instead.") 20 | 21 | #include 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/iterator.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_UTILITY_ITERATOR_HPP 14 | #define RANGES_V3_UTILITY_ITERATOR_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | R"(This header is deprecated. Please include one of the following depending on your need: 19 | , 20 | , 21 | , 22 | , 23 | )") 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/iterator_concepts.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_UTILITY_ITERATOR_CONCEPTS_HPP 14 | #define RANGES_V3_UTILITY_ITERATOR_CONCEPTS_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include " 19 | "instead.") 20 | 21 | #include 22 | 23 | #endif // RANGES_V3_UTILITY_ITERATOR_CONCEPTS_HPP 24 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/iterator_traits.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_UTILITY_ITERATOR_TRAITS_HPP 14 | #define RANGES_V3_UTILITY_ITERATOR_TRAITS_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif // RANGES_V3_UTILITY_ITERATOR_TRAITS_HPP 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/nullptr_v.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013,2014. 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_UTILITY_NULLPTR_V_HPP 14 | #define RANGES_V3_UTILITY_NULLPTR_V_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated and will be removed from a future version of range-v3.") 19 | 20 | #include 21 | 22 | namespace ranges 23 | { 24 | /// \ingroup group-utility 25 | template 26 | constexpr T * _nullptr_v() 27 | { 28 | return nullptr; 29 | } 30 | 31 | #if RANGES_CXX_VARIABLE_TEMPLATES 32 | /// \ingroup group-utility 33 | template 34 | constexpr T * nullptr_v = nullptr; 35 | #endif 36 | } // namespace ranges 37 | 38 | #include 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/semiregular.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2013-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_UTILITY_SEMIREGULAR_HPP 15 | #define RANGES_V3_UTILITY_SEMIREGULAR_HPP 16 | 17 | #include 18 | RANGES_DEPRECATED_HEADER( 19 | "This header is deprecated. Please #include " 20 | "instead.") 21 | 22 | #include 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/static_const.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2013-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | 13 | #ifndef RANGES_V3_UTILITY_STATIC_CONST_HPP 14 | #define RANGES_V3_UTILITY_STATIC_CONST_HPP 15 | 16 | namespace ranges 17 | { 18 | /// \ingroup group-utility 19 | 20 | template 21 | struct static_const 22 | { 23 | static constexpr T value{}; 24 | }; 25 | 26 | /// \ingroup group-utility 27 | /// \sa `static_const` 28 | template 29 | constexpr T static_const::value; 30 | } // namespace ranges 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/tagged_tuple.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2013-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | 13 | #ifndef RANGES_V3_UTILITY_TAGGED_TUPLE_HPP 14 | #define RANGES_V3_UTILITY_TAGGED_TUPLE_HPP 15 | 16 | #include 17 | 18 | #include 19 | 20 | #include 21 | 22 | #include 23 | 24 | RANGES_DIAGNOSTIC_PUSH 25 | RANGES_DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS 26 | 27 | namespace ranges 28 | { 29 | template 30 | using tagged_tuple RANGES_DEPRECATED("ranges::tagged_tuple is deprecated.") = 31 | tagged...>, detail::tag_spec...>; 32 | 33 | template 34 | RANGES_DEPRECATED("ranges::make_tagged_tuple is deprecated.") 35 | constexpr tagged_tuple)...> make_tagged_tuple(Ts &&... ts) 36 | { 37 | return tagged_tuple)...>{static_cast(ts)...}; 38 | } 39 | } // namespace ranges 40 | 41 | RANGES_DIAGNOSTIC_POP 42 | 43 | #include 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/utility/unreachable.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | #ifndef RANGES_V3_UTILITY_UNREACHABLE_HPP 13 | #define RANGES_V3_UTILITY_UNREACHABLE_HPP 14 | 15 | #include 16 | RANGES_DEPRECATED_HEADER( 17 | "This header is deprecated. Please #include " 18 | " instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/version.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2017-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | 14 | #ifndef RANGES_V3_VERSION_HPP 15 | #define RANGES_V3_VERSION_HPP 16 | 17 | #define RANGE_V3_MAJOR 0 18 | #define RANGE_V3_MINOR 11 19 | #define RANGE_V3_PATCHLEVEL 0 20 | 21 | #define RANGE_V3_VERSION \ 22 | (RANGE_V3_MAJOR * 10000 + RANGE_V3_MINOR * 100 + RANGE_V3_PATCHLEVEL) 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/view/bounded.hpp: -------------------------------------------------------------------------------- 1 | /// \file 2 | // Range v3 library 3 | // 4 | // Copyright Eric Niebler 2014-present 5 | // 6 | // Use, modification and distribution is subject to the 7 | // Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt) 10 | // 11 | // Project home: https://github.com/ericniebler/range-v3 12 | // 13 | #ifndef RANGES_V3_VIEW_BOUNDED_HPP 14 | #define RANGES_V3_VIEW_BOUNDED_HPP 15 | 16 | #include 17 | RANGES_DEPRECATED_HEADER( 18 | "This header is deprecated. Please #include instead.") 19 | 20 | #include 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/view_adaptor.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | #ifndef RANGES_V3_OLD_VIEW_ADAPTOR_HPP 13 | #define RANGES_V3_OLD_VIEW_ADAPTOR_HPP 14 | 15 | #include 16 | RANGES_DEPRECATED_HEADER( 17 | "This header is deprecated. Please #include instead.") 18 | 19 | #include 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/view_facade.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | #ifndef RANGES_V3_OLD_VIEW_FACADE_HPP 13 | #define RANGES_V3_OLD_VIEW_FACADE_HPP 14 | 15 | #include 16 | RANGES_DEPRECATED_HEADER( 17 | "This header is deprecated. Please #include instead.") 18 | 19 | #include 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /Demo/Dependencies/range-v3/range/v3/view_interface.hpp: -------------------------------------------------------------------------------- 1 | // Range v3 library 2 | // 3 | // Copyright Eric Niebler 2014-present 4 | // 5 | // Use, modification and distribution is subject to the 6 | // Boost Software License, Version 1.0. (See accompanying 7 | // file LICENSE_1_0.txt or copy at 8 | // http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | // Project home: https://github.com/ericniebler/range-v3 11 | // 12 | #ifndef RANGES_V3_OLD_VIEW_INTERFACE_HPP 13 | #define RANGES_V3_OLD_VIEW_INTERFACE_HPP 14 | 15 | #include 16 | RANGES_DEPRECATED_HEADER( 17 | "This header is deprecated. Please #include instead.") 18 | 19 | #include 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /Demo/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018-2022 Daniel Krupiński 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Demo/SGX_MDL/GRU.h: -------------------------------------------------------------------------------- 1 | #ifndef _GRU_H_ 2 | #define _GRU_H_ 3 | 4 | #define WIN_SIZE 20 5 | #define IPT_SIZE 3 6 | 7 | struct GRU_cell 8 | { 9 | unsigned int in_size; 10 | unsigned int out_size; 11 | double* W_ir; 12 | double* W_hr; 13 | double* W_iz; 14 | double* W_hz; 15 | double* W_in; 16 | double* W_hn; 17 | double* B_ir; 18 | double* B_hr; 19 | double* B_iz; 20 | double* B_hz; 21 | double* B_in; 22 | double* B_hn; 23 | }; 24 | 25 | struct GRU 26 | { 27 | unsigned int input_size; 28 | unsigned int hidden_size; 29 | unsigned int frame_size; 30 | struct GRU_cell* layer[3]; 31 | struct GRU_cell* layer_reverse[3]; 32 | }; 33 | 34 | struct GRU_cell* init_gru_cell(unsigned int in, unsigned int out, double* Wih, double* Whh, double* Bih, double* Bhh); 35 | void free_gru_cell(struct GRU_cell* ptr); 36 | void run_gru_cell(struct GRU_cell* cell, double* input, double* h, double* output); 37 | struct GRU* init_gru(); 38 | void free_gru(struct GRU* ptr); 39 | void run_gru(struct GRU* layer, double* input, double* output); 40 | void run_network(struct GRU* gru, double* input, double* output); 41 | #endif 42 | -------------------------------------------------------------------------------- /Demo/SGX_MDL/SGX_MDL.config.xml: -------------------------------------------------------------------------------- 1 | 2 | 0 3 | 0 4 | 0x40000 5 | 0x400000 6 | 1 7 | 1 8 | 0 9 | 0 10 | 0xFFFFFFFF 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | -------------------------------------------------------------------------------- /Demo/SGX_MDL/SGX_MDL.edl: -------------------------------------------------------------------------------- 1 | enclave { 2 | from "sgx_tstdc.edl" import *; 3 | 4 | trusted { 5 | public void process([user_check] char *username, [user_check] double *input, [out, size=len] char *output_buf, size_t len, [out]size_t *res_size); 6 | public void init_sgx([out, size=256] uint8_t *enc); 7 | }; 8 | 9 | untrusted { 10 | /* define OCALLs here. */ 11 | 12 | }; 13 | }; 14 | -------------------------------------------------------------------------------- /Demo/SGX_MDL/SGX_MDL_t.h: -------------------------------------------------------------------------------- 1 | #ifndef SGX_MDL_T_H__ 2 | #define SGX_MDL_T_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | #include "sgx_edger8r.h" /* for sgx_ocall etc. */ 8 | 9 | 10 | #define SGX_CAST(type, item) ((type)(item)) 11 | 12 | #ifdef __cplusplus 13 | extern "C" { 14 | #endif 15 | 16 | void process(char* username, double* input, char* output_buf, size_t len, size_t* res_size); 17 | void init_sgx(uint8_t* enc); 18 | 19 | sgx_status_t SGX_CDECL sgx_oc_cpuidex(int cpuinfo[4], int leaf, int subleaf); 20 | sgx_status_t SGX_CDECL sgx_thread_wait_untrusted_event_ocall(int* retval, const void* self); 21 | sgx_status_t SGX_CDECL sgx_thread_set_untrusted_event_ocall(int* retval, const void* waiter); 22 | sgx_status_t SGX_CDECL sgx_thread_setwait_untrusted_events_ocall(int* retval, const void* waiter, const void* self); 23 | sgx_status_t SGX_CDECL sgx_thread_set_multiple_untrusted_events_ocall(int* retval, const void** waiters, size_t total); 24 | 25 | #ifdef __cplusplus 26 | } 27 | #endif /* __cplusplus */ 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /Demo/SGX_MDL/matrix_utils.h: -------------------------------------------------------------------------------- 1 | #ifndef _MATRIX_UTILS_H_ 2 | #define _MATRIX_UTILS_H_ 3 | void mat_sum(double* A, double* B, double* C, unsigned int N, unsigned int M); 4 | void mat_mul(double* A, double* B, double* C, unsigned int N, unsigned int K, unsigned int M); 5 | void mat_emul(double* A, double* B, double* C, unsigned int N, unsigned int M); 6 | void mat_sigmoid(double* src, double* dst, unsigned int N, unsigned int M); 7 | void mat_tanh(double* src, double* dst, unsigned int N, unsigned int M); 8 | void mat_1mz(double* src, double* dst, unsigned int N, unsigned int M); 9 | #endif -------------------------------------------------------------------------------- /Demo/SGX_MDL/sha256.h: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Filename: sha256.h 3 | * Author: Brad Conte (brad AT bradconte.com) 4 | * Copyright: 5 | * Disclaimer: This code is presented "as is" without any guarantees. 6 | * Details: Defines the API for the corresponding SHA1 implementation. 7 | *********************************************************************/ 8 | 9 | #ifndef SHA256_H 10 | #define SHA256_H 11 | 12 | /*************************** HEADER FILES ***************************/ 13 | #include 14 | 15 | /****************************** MACROS ******************************/ 16 | #define SHA256_BLOCK_SIZE 32 // SHA256 outputs a 32 byte digest 17 | 18 | /**************************** DATA TYPES ****************************/ 19 | typedef unsigned char BYTE; // 8-bit byte 20 | typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines 21 | 22 | typedef struct { 23 | BYTE data[64]; 24 | WORD datalen; 25 | unsigned long long bitlen; 26 | WORD state[8]; 27 | } SHA256_CTX; 28 | 29 | /*********************** FUNCTION DECLARATIONS **********************/ 30 | void sha256_init(SHA256_CTX *ctx); 31 | void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len); 32 | void sha256_final(SHA256_CTX *ctx, BYTE hash[]); 33 | 34 | #endif // SHA256_H 35 | -------------------------------------------------------------------------------- /Demo/Source/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | Config.cpp 3 | ConfigStructs.cpp 4 | EventListener.cpp 5 | GameData.cpp 6 | GUI.cpp 7 | Helpers.cpp 8 | Hooks.cpp 9 | imguiCustom.cpp 10 | InputUtil.cpp 11 | Memory.cpp 12 | Netvars.cpp 13 | Texture.cpp 14 | ) 15 | 16 | add_subdirectory(Hacks) 17 | add_subdirectory(Hooks) 18 | add_subdirectory(InventoryChanger) 19 | add_subdirectory(SDK) 20 | -------------------------------------------------------------------------------- /Demo/Source/EventListener.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace EventListener 4 | { 5 | void init() noexcept; 6 | void remove() noexcept; 7 | } 8 | -------------------------------------------------------------------------------- /Demo/Source/GUI.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | struct ImFont; 6 | 7 | class GUI { 8 | public: 9 | GUI() noexcept; 10 | void render() noexcept; 11 | void handleToggle() noexcept; 12 | [[nodiscard]] bool isOpen() const noexcept { return open; } 13 | private: 14 | bool open = true; 15 | 16 | void updateColors() const noexcept; 17 | void renderMenuBar() noexcept; 18 | void renderAimbotWindow(bool contentOnly = false) noexcept; 19 | void renderTriggerbotWindow(bool contentOnly = false) noexcept; 20 | void renderChamsWindow(bool contentOnly = false) noexcept; 21 | void renderStyleWindow(bool contentOnly = false) noexcept; 22 | void renderConfigWindow(bool contentOnly = false) noexcept; 23 | void renderGuiStyle2() noexcept; 24 | 25 | struct { 26 | bool aimbot = false; 27 | bool triggerbot = false; 28 | bool chams = false; 29 | bool sound = false; 30 | bool style = false; 31 | bool config = false; 32 | } window; 33 | 34 | struct { 35 | ImFont* normal15px = nullptr; 36 | } fonts; 37 | 38 | float timeToNextConfigRefresh = 0.1f; 39 | }; 40 | 41 | inline std::optional gui; 42 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/Aimbot.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct UserCmd; 4 | struct Vector; 5 | 6 | namespace Aimbot 7 | { 8 | Vector calculateRelativeAngle(const Vector& source, const Vector& destination, const Vector& viewAngles) noexcept; 9 | void run(UserCmd*) noexcept; 10 | 11 | void updateInput() noexcept; 12 | } 13 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/AntiAim.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../JsonForward.h" 4 | 5 | struct UserCmd; 6 | struct Vector; 7 | 8 | #define OSIRIS_ANTIAIM() true 9 | 10 | namespace AntiAim 11 | { 12 | void run(UserCmd* cmd, const Vector& previousViewAngles, const Vector& currentViewAngles, bool& sendPacket) noexcept; 13 | 14 | // GUI 15 | void menuBarItem() noexcept; 16 | void tabItem() noexcept; 17 | void drawGUI(bool contentOnly) noexcept; 18 | 19 | // Config 20 | json toJson() noexcept; 21 | void fromJson(const json& j) noexcept; 22 | void resetConfig() noexcept; 23 | } 24 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/Backtrack.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "../JsonForward.h" 7 | 8 | #include "../SDK/matrix3x4.h" 9 | #include "../SDK/Vector.h" 10 | 11 | namespace csgo { enum class FrameStage; } 12 | struct UserCmd; 13 | 14 | #define OSIRIS_BACKTRACK() true 15 | 16 | namespace Backtrack 17 | { 18 | void update(csgo::FrameStage) noexcept; 19 | void run(UserCmd*) noexcept; 20 | 21 | struct Record { 22 | Vector origin; 23 | float simulationTime; 24 | matrix3x4 matrix[256]; 25 | }; 26 | 27 | const std::deque* getRecords(std::size_t index) noexcept; 28 | bool valid(float simtime) noexcept; 29 | void init() noexcept; 30 | 31 | // GUI 32 | void menuBarItem() noexcept; 33 | void tabItem() noexcept; 34 | void drawGUI(bool contentOnly) noexcept; 35 | 36 | // Config 37 | json toJson() noexcept; 38 | void fromJson(const json& j) noexcept; 39 | void resetConfig() noexcept; 40 | } 41 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | Aimbot.cpp 3 | AntiAim.cpp 4 | Backtrack.cpp 5 | Chams.cpp 6 | EnginePrediction.cpp 7 | Glow.cpp 8 | Misc.cpp 9 | Sound.cpp 10 | StreamProofESP.cpp 11 | Triggerbot.cpp 12 | Visuals.cpp 13 | ) 14 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/Chams.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "../Config.h" 6 | 7 | class Entity; 8 | struct ModelRenderInfo; 9 | class matrix3x4; 10 | 11 | class Chams { 12 | public: 13 | bool render(void*, void*, const ModelRenderInfo&, matrix3x4*) noexcept; 14 | static void updateInput() noexcept; 15 | private: 16 | void renderPlayer(Entity* player) noexcept; 17 | void renderWeapons() noexcept; 18 | void renderHands() noexcept; 19 | void renderSleeves() noexcept; 20 | 21 | bool appliedChams; 22 | void* ctx; 23 | void* state; 24 | const ModelRenderInfo* info; 25 | matrix3x4* customBoneToWorld; 26 | 27 | void applyChams(const std::array& chams, int health = 0, const matrix3x4* customMatrix = nullptr) noexcept; 28 | }; 29 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/Dump.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../SDK/GameEvent.h" 3 | namespace Dump 4 | { 5 | void DumpGameData() noexcept; 6 | void DumpEvent(GameEvent* event) noexcept; 7 | } 8 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/EnginePrediction.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct UserCmd; 4 | 5 | namespace EnginePrediction 6 | { 7 | void run(UserCmd* cmd) noexcept; 8 | int getFlags() noexcept; 9 | } 10 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/Glow.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../JsonForward.h" 4 | 5 | #define OSIRIS_GLOW() true 6 | 7 | namespace Glow 8 | { 9 | void render() noexcept; 10 | void clearCustomObjects() noexcept; 11 | void updateInput() noexcept; 12 | 13 | // GUI 14 | void menuBarItem() noexcept; 15 | void tabItem() noexcept; 16 | void drawGUI(bool contentOnly) noexcept; 17 | 18 | // Config 19 | json toJson() noexcept; 20 | void fromJson(const json& j) noexcept; 21 | void resetConfig() noexcept; 22 | } 23 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/Sound.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "../JsonForward.h" 6 | 7 | #define OSIRIS_SOUND() true 8 | 9 | namespace Sound 10 | { 11 | void modulateSound(std::string_view name, int entityIndex, float& volume) noexcept; 12 | 13 | // GUI 14 | void menuBarItem() noexcept; 15 | void tabItem() noexcept; 16 | void drawGUI(bool contentOnly) noexcept; 17 | 18 | // Config 19 | json toJson() noexcept; 20 | void fromJson(const json& j) noexcept; 21 | void resetConfig() noexcept; 22 | } 23 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/StreamProofESP.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace StreamProofESP 4 | { 5 | void render() noexcept; 6 | void updateInput() noexcept; 7 | 8 | // GUI 9 | void menuBarItem() noexcept; 10 | void tabItem() noexcept; 11 | void drawGUI(bool contentOnly) noexcept; 12 | } 13 | -------------------------------------------------------------------------------- /Demo/Source/Hacks/Triggerbot.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct UserCmd; 4 | 5 | namespace Triggerbot 6 | { 7 | void run(UserCmd*) noexcept; 8 | void updateInput() noexcept; 9 | } 10 | -------------------------------------------------------------------------------- /Demo/Source/Hooks/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | VmtSwap.cpp 3 | ) 4 | 5 | if (WIN32) 6 | target_sources(OsirisOBJ PRIVATE 7 | MinHook.cpp 8 | VmtHook.cpp 9 | ) 10 | endif() 11 | -------------------------------------------------------------------------------- /Demo/Source/Hooks/MinHook.cpp: -------------------------------------------------------------------------------- 1 | #include "MinHook.h" 2 | #include 3 | #include "../Helpers.h" 4 | 5 | void MinHook::init(void* base) noexcept 6 | { 7 | this->base = base; 8 | originals = std::make_unique(Helpers::calculateVmtLength(*reinterpret_cast(base))); 9 | } 10 | 11 | void MinHook::hookAt(std::size_t index, void* fun) noexcept 12 | { 13 | void* orig; 14 | MH_CreateHook((*reinterpret_cast(base))[index], fun, &orig); 15 | originals[index] = uintptr_t(orig); 16 | } 17 | -------------------------------------------------------------------------------- /Demo/Source/Hooks/MinHook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #ifdef _WIN32 7 | #include 8 | #endif 9 | 10 | #include "../Memory.h" 11 | #include "../SDK/Platform.h" 12 | 13 | class MinHook { 14 | public: 15 | void init(void* base) noexcept; 16 | void restore() noexcept {} 17 | void hookAt(std::size_t index, void* fun) noexcept; 18 | 19 | template 20 | constexpr auto getOriginal(Args...) const noexcept 21 | { 22 | return reinterpret_cast(originals[Idx]); 23 | } 24 | 25 | template 26 | constexpr auto callOriginal(Args... args) const noexcept 27 | { 28 | #ifdef _WIN32 29 | return x86RetSpoof::invokeThiscall(std::uintptr_t(base), originals[Idx], memory->jmpEbxGadgetInClient, args...); 30 | #else 31 | return getOriginal(args...)(base, args...); 32 | #endif 33 | } 34 | 35 | private: 36 | void* base; 37 | std::unique_ptr originals; 38 | }; 39 | -------------------------------------------------------------------------------- /Demo/Source/Hooks/VmtHook.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #ifdef _WIN32 4 | #include 5 | #endif 6 | 7 | #include "VmtHook.h" 8 | #include "../Helpers.h" 9 | 10 | void VmtHook::init(void* base) noexcept 11 | { 12 | this->base = base; 13 | auto vmt = *reinterpret_cast(base); 14 | length = Helpers::calculateVmtLength(vmt); 15 | oldVmt = std::make_unique(length); 16 | std::copy(vmt, vmt + length, oldVmt.get()); 17 | } 18 | 19 | void VmtHook::restore() const noexcept 20 | { 21 | auto vmt = *reinterpret_cast(base); 22 | #ifdef _WIN32 23 | if (DWORD oldProtection; VirtualProtect(vmt, length, PAGE_EXECUTE_READWRITE, &oldProtection)) { 24 | std::copy(oldVmt.get(), oldVmt.get() + length, vmt); 25 | VirtualProtect(vmt, length, oldProtection, nullptr); 26 | } 27 | #endif 28 | } 29 | 30 | void VmtHook::hookAt(std::size_t index, void* fun) const noexcept 31 | { 32 | auto address = *reinterpret_cast(base) + index; 33 | #ifdef _WIN32 34 | if (DWORD oldProtection; VirtualProtect(address, sizeof(address), PAGE_EXECUTE_READWRITE, &oldProtection)) { 35 | *address = std::uintptr_t(fun); 36 | VirtualProtect(address, sizeof(address), oldProtection, nullptr); 37 | } 38 | #endif 39 | } 40 | -------------------------------------------------------------------------------- /Demo/Source/Hooks/VmtHook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "../SDK/Platform.h" 8 | 9 | class VmtHook { 10 | public: 11 | void init(void* base) noexcept; 12 | void restore() const noexcept; 13 | void hookAt(std::size_t index, void* fun) const noexcept; 14 | 15 | template 16 | constexpr auto getOriginal(Args...) const noexcept 17 | { 18 | return reinterpret_cast(oldVmt[Idx]); 19 | } 20 | 21 | template 22 | constexpr auto callOriginal(Args... args) const noexcept 23 | { 24 | return getOriginal(args...)(base, args...); 25 | } 26 | 27 | private: 28 | void* base; 29 | std::size_t length; 30 | std::unique_ptr oldVmt; 31 | }; 32 | -------------------------------------------------------------------------------- /Demo/Source/Hooks/VmtSwap.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "VmtSwap.h" 4 | #include "../Helpers.h" 5 | 6 | void VmtSwap::init(void* base) noexcept 7 | { 8 | this->base = base; 9 | oldVmt = *reinterpret_cast(base); 10 | std::size_t length = Helpers::calculateVmtLength(oldVmt) + dynamicCastInfoLength; 11 | newVmt = std::make_unique(length); 12 | std::copy(oldVmt - dynamicCastInfoLength, oldVmt - dynamicCastInfoLength + length, newVmt.get()); 13 | *reinterpret_cast(base) = newVmt.get() + dynamicCastInfoLength; 14 | } 15 | -------------------------------------------------------------------------------- /Demo/Source/Hooks/VmtSwap.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "../SDK/Platform.h" 8 | 9 | class VmtSwap { 10 | public: 11 | void init(void* base) noexcept; 12 | void restore() noexcept 13 | { 14 | *reinterpret_cast(base) = oldVmt; 15 | } 16 | 17 | template 18 | void hookAt(std::size_t index, T fun) const noexcept 19 | { 20 | newVmt[index + dynamicCastInfoLength] = reinterpret_cast(fun); 21 | } 22 | 23 | template 24 | constexpr auto getOriginal(Args...) const noexcept 25 | { 26 | return reinterpret_cast(oldVmt[Idx]); 27 | } 28 | 29 | template 30 | constexpr auto callOriginal(Args... args) const noexcept 31 | { 32 | return getOriginal(args...)(base, args...); 33 | } 34 | 35 | private: 36 | static constexpr auto dynamicCastInfoLength = WIN32_LINUX(1, 2); 37 | 38 | void* base = nullptr; 39 | std::uintptr_t* oldVmt = nullptr; 40 | std::unique_ptr newVmt; 41 | std::size_t length = 0; 42 | }; 43 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | Request/RequestHandler.cpp 3 | ) 4 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/Item.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | namespace inventory_changer::backend 10 | { 11 | using ItemList = std::list; 12 | using ItemMutableIterator = ItemList::iterator; 13 | using ItemIterator = ItemList::const_iterator; 14 | 15 | struct ItemConstRemover { 16 | explicit ItemConstRemover(ItemList& itemList) : itemList{ itemList } {} 17 | 18 | [[nodiscard]] inventory::Item& operator()(ItemIterator it) const noexcept 19 | { 20 | return *itemList.erase(it, it); 21 | } 22 | 23 | private: 24 | ItemList& itemList; 25 | }; 26 | } 27 | 28 | template <> 29 | struct std::hash { 30 | [[nodiscard]] std::size_t operator()(inventory_changer::backend::ItemIterator iterator) const noexcept 31 | { 32 | return std::hash{}(std::to_address(iterator)); 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/Items.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Item.h" 4 | #include "ItemIDMap.h" 5 | #include "Loadout.h" 6 | #include "Response/ResponseQueue.h" 7 | #include "StorageUnitManager.h" 8 | #include "XRayScanner.h" 9 | 10 | namespace inventory_changer::backend 11 | { 12 | 13 | struct Items { 14 | ItemList inventory; 15 | Loadout loadout; 16 | ResponseQueue<> responseQueue; 17 | ItemIDMap itemIDMap; 18 | XRayScanner xRayScanner; 19 | StorageUnitManager storageUnitManager; 20 | }; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/PickEm.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | namespace inventory_changer::backend 10 | { 11 | 12 | class PickEm { 13 | public: 14 | struct PickPosition { 15 | csgo::Tournament tournament; 16 | std::uint16_t group; 17 | std::uint8_t indexInGroup; 18 | 19 | friend auto operator<=>(const PickPosition&, const PickPosition&) = default; 20 | }; 21 | 22 | void pick(PickPosition position, csgo::TournamentTeam team) 23 | { 24 | picks[position] = team; 25 | } 26 | 27 | [[nodiscard]] csgo::TournamentTeam getPickedTeam(PickPosition position) const 28 | { 29 | if (const auto pick = picks.find(position); pick != picks.end()) 30 | return pick->second; 31 | return csgo::TournamentTeam::None; 32 | } 33 | 34 | [[nodiscard]] const auto& getPicks() const noexcept 35 | { 36 | return picks; 37 | } 38 | 39 | void clear() noexcept 40 | { 41 | picks.clear(); 42 | } 43 | 44 | private: 45 | std::map picks; 46 | }; 47 | 48 | } 49 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/README.md: -------------------------------------------------------------------------------- 1 | # Inventory Changer / Backend 2 | 3 | ## What is Backend 4 | 5 | The Backend is a component of the Inventory Changer which implements the functionality of CSGO's item server for items created by the Inventory Changer. 6 | The main class which is used by other Inventory Changer components to interact with the backend is [BackendSimulator](BackendSimulator.h). 7 | 8 | ## What is a Request 9 | 10 | To ensure integrity and synchronization between the backend and CSGO's inventory, item properties are **not modifiable** from outside the backend. 11 | In order to modify a item, a backend request is needed. Backend request-related code is located in [Request](Request/) subdirectory. Requests are handled immediately. 12 | 13 | ## What is a Response 14 | 15 | A response is the way to tell CSGO's inventory to update in response to changes in the backend. Backend response-related code is located in [Response](Response/) subdirectory. Responses are queued (to simulate the delay of the real item server) and dispatched by `BackendSimulator::run()` method. 16 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/Request/InventoryHandler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace inventory_changer::backend 7 | { 8 | 9 | template 10 | class InventoryHandler { 11 | public: 12 | InventoryHandler(ItemList& inventory, ResponseAccumulator responseAccumulator) 13 | : inventory{ inventory }, responseAccumulator{ responseAccumulator } {} 14 | 15 | void moveItemToFront(ItemIterator item) const 16 | { 17 | inventory.splice(inventory.end(), inventory, item); 18 | responseAccumulator(response::ItemMovedToFront{ item }); 19 | } 20 | 21 | ItemIterator addItem(inventory::Item item, bool asUnacknowledged) const 22 | { 23 | inventory.push_back(std::move(item)); 24 | const auto added = std::prev(inventory.end()); 25 | responseAccumulator(response::ItemAdded{ added, asUnacknowledged }); 26 | return added; 27 | } 28 | 29 | private: 30 | ItemList& inventory; 31 | ResponseAccumulator responseAccumulator; 32 | }; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/Request/ItemModificationHandler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | namespace inventory_changer::backend 10 | { 11 | 12 | template 13 | class ItemModificationHandler { 14 | public: 15 | ItemModificationHandler(ItemConstRemover constRemover, ResponseAccumulator responseAccumulator) 16 | : constRemover{ constRemover }, responseAccumulator{ responseAccumulator } {} 17 | 18 | void updateStatTrak(ItemIterator item, int newStatTrak) const 19 | { 20 | const auto statTrak = inventory::getStatTrak(constRemover(item)); 21 | if (!statTrak) 22 | return; 23 | 24 | *statTrak = newStatTrak; 25 | responseAccumulator(response::StatTrakUpdated{ item, newStatTrak }); 26 | } 27 | 28 | void selectTeamGraffiti(ItemIterator tournamentCoin, std::uint16_t graffitiID) const 29 | { 30 | assert(tournamentCoin->gameItem().isTournamentCoin()); 31 | responseAccumulator(response::TeamGraffitiSelected{ tournamentCoin, graffitiID }); 32 | } 33 | 34 | private: 35 | ItemConstRemover constRemover; 36 | ResponseAccumulator responseAccumulator; 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/Request/LoadoutHandler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | namespace inventory_changer::backend 10 | { 11 | 12 | template 13 | class LoadoutHandler { 14 | public: 15 | LoadoutHandler(Loadout& loadout, ResponseAccumulator responseAccumulator) 16 | : loadout{ loadout }, responseAccumulator{ responseAccumulator } {} 17 | 18 | void equipItem(ItemIterator item, Loadout::Slot slot, csgo::Team team) const 19 | { 20 | if (markItemEquipped(item, slot, team)) 21 | responseAccumulator(response::ItemEquipped{ item, slot, team }); 22 | } 23 | 24 | bool markItemEquipped(ItemIterator item, Loadout::Slot slot, csgo::Team team) const 25 | { 26 | switch (team) { 27 | case csgo::Team::None: 28 | loadout.equipItemNoTeam(item, slot); 29 | return true; 30 | case csgo::Team::TT: 31 | loadout.equipItemTT(item, slot); 32 | return true; 33 | case csgo::Team::CT: 34 | loadout.equipItemCT(item, slot); 35 | return true; 36 | default: 37 | return false; 38 | } 39 | } 40 | 41 | private: 42 | Loadout& loadout; 43 | ResponseAccumulator responseAccumulator; 44 | }; 45 | 46 | } 47 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/Request/PickEmHandler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | 8 | namespace inventory_changer::backend 9 | { 10 | 11 | template 12 | class PickEmHandler { 13 | public: 14 | PickEmHandler(PickEm& pickEm, ResponseAccumulator responseAccumulator) 15 | : pickEm{ pickEm }, responseAccumulator{ responseAccumulator } {} 16 | 17 | void pickSticker(PickEm::PickPosition position, csgo::TournamentTeam team) const 18 | { 19 | pickEm.pick(position, team); 20 | responseAccumulator(response::PickEmUpdated{}); 21 | } 22 | 23 | void clearPicks() const 24 | { 25 | pickEm.clear(); 26 | responseAccumulator(response::PickEmUpdated{}); 27 | } 28 | 29 | private: 30 | PickEm& pickEm; 31 | ResponseAccumulator responseAccumulator; 32 | }; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/Response/Response.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "ResponseTypes.h" 8 | 9 | namespace inventory_changer::backend 10 | { 11 | 12 | using Response = std::variant< 13 | response::ContainerOpened, 14 | response::GraffitiUnsealed, 15 | response::ItemAdded, 16 | response::ItemEquipped, 17 | response::ItemHidden, 18 | response::ItemMovedToFront, 19 | response::ItemRemoved, 20 | response::ItemUpdated, 21 | response::NameTagAdded, 22 | response::NameTagRemoved, 23 | response::PatchApplied, 24 | response::PatchRemoved, 25 | response::PickEmUpdated, 26 | response::SouvenirTokenActivated, 27 | response::StatTrakSwapped, 28 | response::StatTrakUpdated, 29 | response::StickerApplied, 30 | response::StickerRemoved, 31 | response::StickerScraped, 32 | response::TeamGraffitiSelected, 33 | response::ViewerPassActivated, 34 | response::XRayItemClaimed, 35 | response::XRayScannerUsed, 36 | response::StorageUnitNamed, 37 | response::StorageUnitModified, 38 | response::ItemBoundToStorageUnit, 39 | response::ItemRemovedFromStorageUnit, 40 | response::ItemAddedToStorageUnit, 41 | response::TradabilityUpdated 42 | >; 43 | 44 | } 45 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/Response/ResponseAccumulator.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Response.h" 4 | #include "ResponseQueue.h" 5 | 6 | namespace inventory_changer::backend 7 | { 8 | 9 | struct ResponseAccumulator { 10 | explicit ResponseAccumulator(ResponseQueue<>& responseQueue) 11 | : responseQueue{ responseQueue } {} 12 | 13 | void operator()(const Response& response) const 14 | { 15 | responseQueue.add(response); 16 | } 17 | 18 | private: 19 | ResponseQueue<>& responseQueue; 20 | }; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/Response/ResponseQueue.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "ItemInResponse.h" 9 | #include "Response.h" 10 | 11 | namespace inventory_changer::backend 12 | { 13 | 14 | template 15 | class ResponseQueue { 16 | public: 17 | static_assert(Clock::is_steady); 18 | 19 | void add(const Response& response) 20 | { 21 | responses.emplace_back(Clock::now(), response); 22 | } 23 | 24 | void removeResponsesReferencingItem(ItemIterator item) 25 | { 26 | std::erase_if(responses, [item](const std::pair& pair) { return responseContainsItem(pair.second, item); }); 27 | } 28 | 29 | template 30 | void visit(Visitor&& visitor, std::chrono::milliseconds delay) 31 | { 32 | while (!responses.empty()) { 33 | const auto& [timestamp, response] = responses.front(); 34 | if (Clock::now() - timestamp < delay) 35 | break; 36 | std::visit(std::forward(visitor), response); 37 | responses.pop_front(); 38 | } 39 | } 40 | 41 | private: 42 | std::deque> responses; 43 | }; 44 | 45 | } 46 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Backend/XRayScanner.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Item.h" 6 | 7 | namespace inventory_changer::backend 8 | { 9 | 10 | class XRayScanner { 11 | public: 12 | struct Items { 13 | ItemIterator reward; 14 | ItemIterator crate; 15 | }; 16 | 17 | void storeItems(Items newItems) 18 | { 19 | items = newItems; 20 | } 21 | 22 | void onItemRemoval(ItemIterator item) noexcept 23 | { 24 | if (items.has_value() && (item == items->reward || item == items->crate)) 25 | items.reset(); 26 | } 27 | 28 | [[nodiscard]] std::optional getItems() const noexcept 29 | { 30 | return items; 31 | } 32 | 33 | private: 34 | std::optional items; 35 | }; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | InventoryChanger.cpp 3 | InventoryConfig.cpp 4 | WeaponNames.cpp 5 | ) 6 | 7 | add_subdirectory(Backend) 8 | add_subdirectory(GameIntegration) 9 | add_subdirectory(GameItems) 10 | add_subdirectory(Inventory) 11 | add_subdirectory(ItemGenerator) 12 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/EconRarities.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | 8 | namespace inventory_changer 9 | { 10 | 11 | class EconRarities { 12 | public: 13 | EconRarities() = default; 14 | 15 | template 16 | constexpr EconRarities(Args... args) noexcept 17 | { 18 | (set(args), ...); 19 | } 20 | 21 | constexpr void set(EconRarity rarity) noexcept 22 | { 23 | if (const auto rarityBit = static_cast(rarity); rarityBit < std::numeric_limits::digits) 24 | bits |= (std::byte{ 1 } << rarityBit); 25 | } 26 | 27 | [[nodiscard]] constexpr EconRarity getNthRarity(std::uint8_t n) const noexcept 28 | { 29 | for (std::uint8_t i = 0; i < std::numeric_limits::digits; ++i) { 30 | if (std::to_integer(bits & (std::byte{ 1 } << i)) != 0) { 31 | if (n == 0) 32 | return static_cast(i); 33 | --n; 34 | } 35 | } 36 | return EconRarity::Default; 37 | } 38 | 39 | [[nodiscard]] constexpr std::size_t count() const noexcept 40 | { 41 | return static_cast(std::popcount(std::to_integer(bits))); 42 | } 43 | 44 | [[nodiscard]] constexpr bool operator==(const EconRarities&) const = default; 45 | 46 | private: 47 | std::byte bits{ 0 }; 48 | }; 49 | 50 | } 51 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/GameIntegration/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | CrateLoot.cpp 3 | Inventory.cpp 4 | Items.cpp 5 | ) 6 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/GameIntegration/CrateLoot.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | class EconLootListDefinition; 6 | class ItemSchema; 7 | 8 | namespace inventory_changer::game_items 9 | { 10 | class CrateLoot; 11 | } 12 | 13 | namespace inventory_changer::game_integration 14 | { 15 | 16 | class CrateLoot { 17 | public: 18 | CrateLoot(ItemSchema& itemSchema, const game_items::Lookup& gameItemLookup) 19 | : itemSchema{ itemSchema }, gameItemLookup{ gameItemLookup } {} 20 | 21 | void getLoot(game_items::CrateLoot& crateLoot); 22 | 23 | private: 24 | [[nodiscard]] const game_items::Item* findStickerlikeItem(WeaponId weaponID, int stickerKit) const; 25 | void fillLootFromLootList(EconLootListDefinition& lootList, game_items::CrateLoot& crateLoot); 26 | void rebuildMissingLootList(game_items::CrateLoot& crateLoot); 27 | 28 | ItemSchema& itemSchema; 29 | const game_items::Lookup& gameItemLookup; 30 | }; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/GameIntegration/Items.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | class ItemSchema; 8 | 9 | namespace inventory_changer::game_integration 10 | { 11 | 12 | class Items { 13 | public: 14 | Items(ItemSchema& itemSchema, Localize& localize) : itemSchema{ itemSchema }, toUtf8{ localize } {} 15 | 16 | void getMusicKits(game_items::Storage& storage); 17 | void getStickers(game_items::Storage& storage); 18 | void getSkinsAndGloves(game_items::Storage& storage); 19 | void getOtherItems(game_items::Storage& storage); 20 | 21 | private: 22 | ItemSchema& itemSchema; 23 | ToUtf8Converter<> toUtf8; 24 | Helpers::ToUpperConverter toUpperConverter; 25 | }; 26 | 27 | 28 | [[nodiscard]] game_items::Storage createGameItemStorage(Items& items); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/GameItems/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | Storage.cpp 3 | ) 4 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/GameItems/Enums.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace inventory_changer 7 | { 8 | 9 | enum class TournamentMap : std::uint8_t { 10 | None = 0, 11 | Ancient, 12 | Cache, 13 | Cobblestone, 14 | Dust2, 15 | Inferno, 16 | Mirage, 17 | Nuke, 18 | Overpass, 19 | Train, 20 | Vertigo 21 | }; 22 | 23 | constexpr auto operator<=>(TournamentMap a, TournamentMap b) noexcept 24 | { 25 | return static_cast>(a) <=> static_cast>(b); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Inventory/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | StructsFromJson.cpp 3 | ) 4 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/Inventory/StructsFromJson.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include 6 | 7 | #include "Structs.h" 8 | 9 | namespace inventory_changer::inventory 10 | { 11 | 12 | [[nodiscard]] Gloves glovesFromJson(const json& j); 13 | [[nodiscard]] SouvenirPackage souvenirPackageFromJson(const json& j); 14 | [[nodiscard]] Music musicFromJson(const json& j); 15 | [[nodiscard]] ServiceMedal serviceMedalFromJson(const json& j); 16 | [[nodiscard]] Graffiti graffitiFromJson(const json& j); 17 | [[nodiscard]] std::array skinStickersFromJson(const json& j); 18 | [[nodiscard]] Skin skinFromJson(const json& j); 19 | [[nodiscard]] std::array agentPatchesFromJson(const json& j); 20 | [[nodiscard]] Agent agentFromJson(const json& j); 21 | [[nodiscard]] StorageUnit storageUnitFromJson(const json& j); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/InventoryConfig.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../JsonForward.h" 4 | 5 | namespace inventory_changer 6 | { 7 | class InventoryChanger; 8 | 9 | json toJson(const InventoryChanger& inventoryChanger); 10 | void fromJson(const json& j, InventoryChanger& inventoryChanger); 11 | } 12 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/ItemGenerator/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | ItemGenerator.cpp 3 | TournamentMatches.cpp 4 | ) 5 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/ItemGenerator/ItemGenerator.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | namespace inventory_changer::item_generator 14 | { 15 | [[nodiscard]] std::optional generateItemFromContainer(const game_items::Lookup& gameItemLookup, const game_items::CrateLootLookup& crateLootLookup, const inventory::Item& caseItem, const inventory::Item* crateKey) noexcept; 16 | inventory::Item::Properties createDefaultDynamicData(const game_items::Storage& gameItemStorage, const game_items::Item& item) noexcept; 17 | } 18 | 19 | [[nodiscard]] std::time_t getStartOfYearTimestamp(std::uint16_t year) noexcept; 20 | [[nodiscard]] std::time_t getEndOfYearTimestamp(std::uint16_t year) noexcept; 21 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/ItemGenerator/TournamentMatches.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | #include 13 | 14 | namespace csgo { enum class Tournament : std::uint8_t; } 15 | 16 | namespace inventory_changer 17 | { 18 | enum class TournamentMap : std::uint8_t; 19 | } 20 | 21 | namespace inventory_changer::item_generator 22 | { 23 | 24 | struct MatchWithMVPs { 25 | TournamentMap map; 26 | TournamentStage stage; 27 | csgo::TournamentTeam team1; 28 | csgo::TournamentTeam team2; 29 | std::array mvpPlayers; 30 | }; 31 | 32 | [[nodiscard]] constexpr std::size_t countMVPs(const MatchWithMVPs& matchWithMVPs) 33 | { 34 | return static_cast(std::distance(matchWithMVPs.mvpPlayers.begin(), std::ranges::find(matchWithMVPs.mvpPlayers, csgo::ProPlayer{}))); 35 | } 36 | 37 | struct Match { 38 | TournamentMap map; 39 | TournamentStage stage; 40 | csgo::TournamentTeam team1; 41 | csgo::TournamentTeam team2; 42 | }; 43 | 44 | [[nodiscard]] std::variant, std::span> getTournamentMatchesOnMap(csgo::Tournament tournament, TournamentMap map) noexcept; 45 | 46 | } 47 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/ItemGenerator/Utils.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | namespace inventory_changer::item_generator 6 | { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/WeaponNames.cpp: -------------------------------------------------------------------------------- 1 | #include "WeaponNames.h" 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | namespace inventory_changer 10 | { 11 | 12 | [[nodiscard]] static WeaponNames createWeaponNamesStorage(ItemSchema* itemSchema) 13 | { 14 | WeaponNames storage; 15 | ToUtf8Converter converter{ *interfaces->localize }; 16 | Helpers::ToUpperConverter toUpperConverter; 17 | 18 | for (const auto& node : itemSchema->itemsSorted) { 19 | const auto item = node.value; 20 | const auto nameWide = interfaces->localize->findSafe(item->getItemBaseName()); 21 | storage.add(item->getWeaponId(), converter.convertUnicodeToAnsi(nameWide), toUpperConverter.toUpper(nameWide)); 22 | } 23 | return storage; 24 | } 25 | 26 | const WeaponNames& WeaponNames::instance() 27 | { 28 | static const WeaponNames weaponNames{ createWeaponNamesStorage(memory->itemSystem()->getItemSchema()) }; 29 | return weaponNames; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Demo/Source/InventoryChanger/WeaponNames.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | enum class WeaponId : short; 10 | 11 | namespace inventory_changer 12 | { 13 | 14 | class WeaponNames { 15 | public: 16 | [[nodiscard]] std::string_view getWeaponName(WeaponId weaponID) const 17 | { 18 | if (const auto it = names.find(weaponID); it != names.end()) 19 | return it->second.first; 20 | return ""; 21 | } 22 | 23 | [[nodiscard]] std::wstring_view getWeaponNameUpper(WeaponId weaponID) const 24 | { 25 | if (const auto it = names.find(weaponID); it != names.end()) 26 | return it->second.second; 27 | return L""; 28 | } 29 | 30 | void add(WeaponId weaponID, std::string_view name, std::wstring_view nameUpperCase) 31 | { 32 | names.emplace(weaponID, std::make_pair(pool.add(name), poolWide.add(nameUpperCase))); 33 | } 34 | 35 | static const WeaponNames& instance(); 36 | 37 | private: 38 | StringPool pool; 39 | StringPool poolWide; 40 | std::unordered_map> names; 41 | }; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Demo/Source/Netvars.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "fnv.h" 7 | 8 | namespace Netvars 9 | { 10 | void init() noexcept; 11 | void restore() noexcept; 12 | std::uint32_t get(std::uint32_t hash) noexcept; 13 | } 14 | 15 | #define PNETVAR_OFFSET(funcname, class_name, var_name, offset, type) \ 16 | [[nodiscard]] auto funcname() noexcept \ 17 | { \ 18 | constexpr auto hash = fnv::hash(class_name "->" var_name); \ 19 | return reinterpret_cast>(std::uintptr_t(this) + Netvars::get(hash) + offset); \ 20 | } 21 | 22 | #define PNETVAR(funcname, class_name, var_name, type) \ 23 | PNETVAR_OFFSET(funcname, class_name, var_name, 0, type) 24 | 25 | #define NETVAR_OFFSET(funcname, class_name, var_name, offset, type) \ 26 | [[nodiscard]] std::add_lvalue_reference_t funcname() noexcept \ 27 | { \ 28 | constexpr auto hash = fnv::hash(class_name "->" var_name); \ 29 | return *reinterpret_cast>(std::uintptr_t(this) + Netvars::get(hash) + offset); \ 30 | } 31 | 32 | #define NETVAR(funcname, class_name, var_name, type) \ 33 | NETVAR_OFFSET(funcname, class_name, var_name, 0, type) 34 | -------------------------------------------------------------------------------- /Demo/Source/Osiris.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #ifdef _WIN32 4 | #include 5 | #include 6 | #endif 7 | 8 | #include "Hooks.h" 9 | 10 | #ifdef _WIN32 11 | 12 | extern "C" BOOL WINAPI _CRT_INIT(HMODULE moduleHandle, DWORD reason, LPVOID reserved); 13 | 14 | BOOL APIENTRY DllEntryPoint(HMODULE moduleHandle, DWORD reason, LPVOID reserved) 15 | { 16 | if (!_CRT_INIT(moduleHandle, reason, reserved)) 17 | return FALSE; 18 | 19 | if (reason == DLL_PROCESS_ATTACH) { 20 | std::setlocale(LC_CTYPE, ".utf8"); 21 | hooks.emplace(moduleHandle); 22 | } 23 | return TRUE; 24 | } 25 | 26 | #else 27 | 28 | void __attribute__((constructor)) DllEntryPoint() 29 | { 30 | hooks.emplace(Hooks{}); 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Demo/Source/Resources/Resource.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace Resource 7 | { 8 | template 9 | constexpr auto decodeBase85(const char(&input)[N]) noexcept 10 | { 11 | std::array out{}; 12 | 13 | constexpr auto decode85Byte = [](char c) constexpr -> unsigned int { return c >= '\\' ? c - 36 : c - 35; }; 14 | 15 | for (std::size_t i = 0, j = 0; i < N - 1; i += 5, j += 4) { 16 | unsigned int tmp = decode85Byte(input[i]) + 85 * (decode85Byte(input[i + 1]) + 85 * (decode85Byte(input[i + 2]) + 85 * (decode85Byte(input[i + 3]) + 85 * decode85Byte(input[i + 4])))); 17 | out[j] = ((tmp >> 0) & 0xFF); out[j + 1] = ((tmp >> 8) & 0xFF); out[j + 2] = ((tmp >> 16) & 0xFF); out[j + 3] = ((tmp >> 24) & 0xFF); 18 | } 19 | 20 | return out; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Demo/Source/Resources/Shaders/.gitignore: -------------------------------------------------------------------------------- 1 | Build/ 2 | -------------------------------------------------------------------------------- /Demo/Source/Resources/Shaders/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_custom_target(Shaders 2 | DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Build/default_vs.h 3 | ) 4 | 5 | set(FXC "$ENV{ProgramFiles\(x86\)}\\Windows Kits\\10\\bin\\${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}\\x86\\fxc.exe") 6 | 7 | add_custom_command( 8 | OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Build/default_vs.h 9 | COMMAND FXC ${CMAKE_CURRENT_SOURCE_DIR}/default_vs.hlsl /Vn default_vs /T vs_2_0 /Fh ${CMAKE_CURRENT_SOURCE_DIR}/Build/default_vs.h 10 | DEPENDS default_vs.hlsl 11 | VERBATIM) 12 | -------------------------------------------------------------------------------- /Demo/Source/Resources/Shaders/default_vs.hlsl: -------------------------------------------------------------------------------- 1 | float4x4 projectionMatrix; 2 | 3 | struct VS_INPUT 4 | { 5 | float2 pos : POSITION0; 6 | float4 col : COLOR0; 7 | float2 uv : TEXCOORD0; 8 | }; 9 | 10 | struct PS_INPUT 11 | { 12 | float4 pos : POSITION0; 13 | float4 col : COLOR0; 14 | float2 uv : TEXCOORD0; 15 | }; 16 | 17 | PS_INPUT main(VS_INPUT input) 18 | { 19 | PS_INPUT output; 20 | output.pos = mul(projectionMatrix, float4(input.pos, 0.0f, 1.0f)); 21 | output.col = input.col; 22 | output.uv = input.uv; 23 | return output; 24 | } 25 | -------------------------------------------------------------------------------- /Demo/Source/Resources/avatar_ct.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Resource.h" 4 | 5 | namespace Resource 6 | { 7 | 8 | // File: 'avatar_ct.png' (957 bytes) 9 | // Exported using binary_to_compressed_c.cpp 10 | inline constexpr auto avatar_ct = decodeBase85( 11 | "=pxq9_8v7&0C/2'K(HH=CD4;-CD4;-.,###AYPRO?%###6/s*>][t4:201b,LT3&5W.Sr860c*,LV0/PW8f79+r0BHM%N#64>ld=_BVfFqbZfjWUL02R'?[YE%.J-ic3" 12 | "gF0>`*bkX:+1R)>Tr$b>Y%pX/cY,?6eht=UGH`j4O)sL;=s=H=l0h$RhD_lXjQDCS_Eo]BGVvDH//W_IA]$s:-uqc=:9&KLu-E#vp/&&K))AMca#4i6ZCv&;'>e8_;JUvmZ]<`F,#b2mou" 14 | "@oo)AnqTf'pJKbF%N'JqXGXEfbk[5P%1W3H1#,TuEiKaZ(VUM*T?$Pf:86X-=&]uKI;?b0OehN^flb$tP3#SVjNpGDZQS6hG[CK5q3&" 15 | "+8G7BnU@2J,%q,_s[]0T%KgU1xxM$/,xNGXJ83di3eD,ba5eh^?1pq30P?Q<%w,3(U:w^>cm3ENE$iW5BoM'p$MSH-n:cC;+[6e1EO_(`^+?k#ZMKJP" 16 | "+_9BilQECUOC/Qd]Kb$j^lpPi^e$M_*m`d&o.sR2-k<:b->5(?e;)(2K/1v&[8+k)iOcD+d5+k:M)`HkImIVB$W3wB#:3.,,TXG&j'nsA0tQd:AJk'?-(HxvS&v@B`7t'Ao" 17 | "l(')(98au8j'O4h`@4.*?&5UQcr5>k+bF]lPSG[_L2M-JGT]@P9jrLrljmWga8-iolx4lZ%o8$kxHpj5:eoB`+ki?*'e)0$9CX:@'w$/#Hen7t7;G:F49@:(#%to0qHsIUQjin@bAZS6" 18 | "KEUmEN6c8(VcRl_5i/)P&)(`pP64cDg`bZek8?IM,XW0LQ=n^UC`h#Duk[9qLaWB,:]tQKlJ4,[jQIaw:HL-NqKc$.ZRe#'kE$a8l4t^w#55L9RC3tan#m7YYg:&/9j/0M,S:vxa" 19 | "oVY5LcuWEt]'=KK=ClX,nqrZ`e:XkH=[[cRYPjeA=8B=WPw:Da0fIT9rcw85e%###Ub90 4 | 5 | struct AnimState { 6 | std::byte pad[164]; 7 | float duckAmount; 8 | std::byte pad1[80]; 9 | float footSpeed; 10 | float footSpeed2; 11 | std::byte pad2[22]; 12 | float stopToFullRunningFraction; 13 | std::byte pad3[532]; 14 | float velocitySubtractY; 15 | }; 16 | -------------------------------------------------------------------------------- /Demo/Source/SDK/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(OsirisOBJ PRIVATE 2 | EconItemView.cpp 3 | Entity.cpp 4 | GlobalVars.cpp 5 | KeyValues.cpp 6 | Utils.cpp 7 | ) 8 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Client.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | struct ClientClass; 7 | 8 | class Client { 9 | public: 10 | INCONSTRUCTIBLE(Client) 11 | 12 | VIRTUAL_METHOD(ClientClass*, getAllClasses, 8, (), (this)) 13 | VIRTUAL_METHOD(bool, dispatchUserMessage, 38, (int messageType, int passthroughFlags, int size, const void* data), (this, messageType, passthroughFlags, size, data)) 14 | }; 15 | -------------------------------------------------------------------------------- /Demo/Source/SDK/ClientClass.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Constants/ClassId.h" 6 | #include "Platform.h" 7 | 8 | class Entity; 9 | struct RecvTable; 10 | 11 | struct ClientClass { 12 | std::add_pointer_t createFunction; 13 | void* createEventFunction; 14 | char* networkName; 15 | RecvTable* recvTable; 16 | ClientClass* next; 17 | ClassId classId; 18 | }; 19 | -------------------------------------------------------------------------------- /Demo/Source/SDK/ClientMode.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Inconstructible.h" 6 | #include "Platform.h" 7 | 8 | class HudChat { 9 | public: 10 | INCONSTRUCTIBLE(HudChat) 11 | 12 | template 13 | void printf(int filter, const char* fmt, Args... args) noexcept 14 | { 15 | (*reinterpret_cast(this))[WIN32_LINUX(26, 29)](this, filter, fmt, args...); 16 | } 17 | }; 18 | 19 | class ClientMode { 20 | public: 21 | INCONSTRUCTIBLE(ClientMode) 22 | 23 | auto getHudChat() noexcept 24 | { 25 | return *reinterpret_cast(std::uintptr_t(this) + WIN32_LINUX(28, 48)); 26 | } 27 | }; 28 | -------------------------------------------------------------------------------- /Demo/Source/SDK/ConVar.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Inconstructible.h" 6 | #include "Pad.h" 7 | #include "Platform.h" 8 | #include "UtlVector.h" 9 | #include "VirtualMethod.h" 10 | 11 | struct ConVar { 12 | INCONSTRUCTIBLE(ConVar) 13 | 14 | VIRTUAL_METHOD(float, getFloat, WIN32_LINUX(12, 15), (), (this)) 15 | VIRTUAL_METHOD(int, getInt, WIN32_LINUX(13, 16), (), (this)) 16 | VIRTUAL_METHOD(void, setValue, WIN32_LINUX(14, 17), (const char* value), (this, value)) 17 | VIRTUAL_METHOD(void, setValue, WIN32_LINUX(15, 18), (float value), (this, value)) 18 | VIRTUAL_METHOD(void, setValue, WIN32_LINUX(16, 19), (int value), (this, value)) 19 | 20 | PAD(WIN32_LINUX(24, 48)) 21 | std::add_pointer_t changeCallback; 22 | ConVar* parent; 23 | const char* defaultValue; 24 | char* string; 25 | PAD(28) 26 | UtlVector onChangeCallbacks; 27 | }; 28 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Constants/ClassId.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | enum class ClassId { 4 | BaseCSGrenadeProjectile = 9, 5 | BreachChargeProjectile = 29, 6 | BumpMineProjectile = 33, 7 | C4, 8 | Chicken = 36, 9 | CSPlayer = 40, 10 | CSPlayerResource, 11 | CSRagdoll = 42, 12 | Deagle = 46, 13 | DecoyProjectile = 48, 14 | Drone, 15 | Dronegun, 16 | DynamicProp = 52, 17 | EconEntity = 53, 18 | EconWearable, 19 | Hostage = 97, 20 | Inferno = 100, 21 | Healthshot = 104, 22 | Cash, 23 | Knife = 107, 24 | KnifeGG, 25 | MolotovProjectile = 114, 26 | AmmoBox = 125, 27 | LootCrate, 28 | RadarJammer, 29 | WeaponUpgrade, 30 | PlantedC4, 31 | PropDoorRotating = 143, 32 | SensorGrenadeProjectile = 153, 33 | SmokeGrenadeProjectile = 157, 34 | SnowballPile = 160, 35 | SnowballProjectile, 36 | Tablet = 172, 37 | Aug = 232, 38 | Awp, 39 | Elite = 239, 40 | FiveSeven = 241, 41 | G3sg1, 42 | Glock = 245, 43 | P2000, 44 | P250 = 258, 45 | Scar20 = 261, 46 | Sg553 = 265, 47 | Ssg08 = 267, 48 | Tec9 = 269 49 | }; 50 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Constants/FrameStage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace csgo 4 | { 5 | 6 | enum class FrameStage { 7 | UNDEFINED = -1, 8 | START, 9 | NET_UPDATE_START, 10 | NET_UPDATE_POSTDATAUPDATE_START, 11 | NET_UPDATE_POSTDATAUPDATE_END, 12 | NET_UPDATE_END, 13 | RENDER_START, 14 | RENDER_END 15 | }; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Constants/PaintkitConditionChances.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace csgo::paintkit_condition_chances 4 | { 5 | 6 | constexpr auto factoryNewChance = 14.71f; 7 | constexpr auto minimalWearChance = 24.68f; 8 | constexpr auto fieldTestedChance = 43.18f; 9 | constexpr auto wellWornChance = 7.92f; 10 | constexpr auto battleScarredChance = 9.93f; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Constants/Tournament.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | namespace csgo 6 | { 7 | 8 | enum class Tournament : std::uint8_t { 9 | DreamHack2013 = 1, 10 | EmsOneKatowice2014 = 3, 11 | EslOneCologne2014, 12 | DreamHack2014, 13 | EslOneKatowice2015, 14 | EslOneCologne2015, 15 | DreamHackClujNapoka2015, 16 | MlgColumbus2016, 17 | EslOneCologne2016, 18 | EleagueAtlanta2017, 19 | PglKrakow2017, 20 | EleagueBoston2018, 21 | FaceitLondon2018, 22 | IemKatowice2019, 23 | PglStockholm2021 = 18, 24 | PglAntwerp2022 25 | }; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Constants/UserMessages.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // https://github.com/SteamDatabase/Protobufs/blob/master/csgo/cstrike15_usermessages.proto 4 | 5 | namespace csgo 6 | { 7 | 8 | enum class UserMessageType { 9 | Text = 7, 10 | VoteStart = 46, 11 | VotePass = 47, 12 | VoteFailed = 48, 13 | }; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Cvar.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | struct ConVar; 7 | 8 | class Cvar { 9 | public: 10 | INCONSTRUCTIBLE(Cvar) 11 | 12 | VIRTUAL_METHOD(ConVar*, findVar, 15, (const char* name), (this, name)) 13 | }; 14 | -------------------------------------------------------------------------------- /Demo/Source/SDK/EconItemView.cpp: -------------------------------------------------------------------------------- 1 | #include "EconItemView.h" 2 | #include "../Memory.h" 3 | 4 | void EconItemView::clearInventoryImageRGBA() noexcept 5 | { 6 | memory->clearInventoryImageRGBA(this); 7 | } 8 | -------------------------------------------------------------------------------- /Demo/Source/SDK/EconItemView.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Inconstructible.h" 6 | #include "Platform.h" 7 | 8 | template class UtlVector; 9 | 10 | class EconItemView { 11 | public: 12 | INCONSTRUCTIBLE(EconItemView) 13 | 14 | std::uintptr_t getAttributeList() noexcept 15 | { 16 | return std::uintptr_t(this) + WIN32_LINUX(0x244, 0x2F8); 17 | } 18 | 19 | UtlVector& customMaterials() noexcept 20 | { 21 | return *reinterpret_cast*>(std::uintptr_t(this) + WIN32_LINUX(0x14, 0x28)); 22 | } 23 | 24 | UtlVector& visualDataProcessors() noexcept 25 | { 26 | return *reinterpret_cast*>(std::uintptr_t(this) + WIN32_LINUX(0x230, 0x2D8)); 27 | } 28 | 29 | void clearInventoryImageRGBA() noexcept; 30 | }; 31 | -------------------------------------------------------------------------------- /Demo/Source/SDK/EntityList.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class Entity; 7 | 8 | class EntityList { 9 | public: 10 | INCONSTRUCTIBLE(EntityList) 11 | 12 | VIRTUAL_METHOD(Entity*, getEntity, 3, (int index), (this, index)) 13 | #ifdef _WIN32 14 | VIRTUAL_METHOD(Entity*, getEntityFromHandle, 4, (int handle), (this, handle)) 15 | #else 16 | VIRTUAL_METHOD(Entity*, getEntityFromHandle, 4, (int handle), (this, &handle)) 17 | #endif 18 | VIRTUAL_METHOD(int, getHighestEntityIndex, 6, (), (this)) 19 | }; 20 | -------------------------------------------------------------------------------- /Demo/Source/SDK/FileSystem.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class BaseFileSystem { 7 | public: 8 | INCONSTRUCTIBLE(BaseFileSystem) 9 | 10 | VIRTUAL_METHOD(int, read, 0, (void* output, int size, void* handle), (this, output, size, handle)) 11 | VIRTUAL_METHOD(void*, open, 2, (const char* fileName, const char* options, const char* pathID), (this, fileName, options, pathID)) 12 | VIRTUAL_METHOD(void, close, 3, (void* handle), (this, handle)) 13 | VIRTUAL_METHOD(unsigned int, size, WIN32_LINUX(7, 6), (void* handle), (this, handle)) 14 | }; 15 | -------------------------------------------------------------------------------- /Demo/Source/SDK/GameMovement.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class Entity; 7 | class MoveData; 8 | 9 | class GameMovement { 10 | public: 11 | INCONSTRUCTIBLE(GameMovement) 12 | 13 | VIRTUAL_METHOD_V(void, processMovement, 1, (Entity* localPlayer, MoveData* moveData), (this, localPlayer, moveData)) 14 | }; 15 | -------------------------------------------------------------------------------- /Demo/Source/SDK/GameUI.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class GameUI { 7 | public: 8 | INCONSTRUCTIBLE(GameUI) 9 | 10 | VIRTUAL_METHOD(void, createCommandMsgBox, 19, (const char* title, const char* message, bool showOk = true, bool showCancel = false, const char* okCommand = nullptr, const char* cancelCommand = nullptr, const char* closedCommand = nullptr, const char* legend = nullptr, const char* unknown = nullptr), (this, title, message, showOk, showCancel, okCommand, cancelCommand, closedCommand, legend, unknown)) 11 | }; 12 | -------------------------------------------------------------------------------- /Demo/Source/SDK/GlobalVars.cpp: -------------------------------------------------------------------------------- 1 | #include "Entity.h" 2 | #include "GlobalVars.h" 3 | #include "LocalPlayer.h" 4 | #include "UserCmd.h" 5 | 6 | float GlobalVars::serverTime(UserCmd* cmd) const noexcept 7 | { 8 | static int tick; 9 | static UserCmd* lastCmd; 10 | 11 | if (cmd) { 12 | if (localPlayer && (!lastCmd || lastCmd->hasbeenpredicted)) 13 | tick = localPlayer->tickBase(); 14 | else 15 | tick++; 16 | lastCmd = cmd; 17 | } 18 | return tick * intervalPerTick; 19 | } 20 | -------------------------------------------------------------------------------- /Demo/Source/SDK/GlobalVars.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | struct UserCmd; 6 | 7 | struct GlobalVars { 8 | const float realtime; 9 | const int framecount; 10 | const float absoluteFrameTime; 11 | const std::byte pad[4]; 12 | float currenttime; 13 | float frametime; 14 | const int maxClients; 15 | const int tickCount; 16 | const float intervalPerTick; 17 | 18 | float serverTime(UserCmd* = nullptr) const noexcept; 19 | }; 20 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Inconstructible.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define INCONSTRUCTIBLE(className) \ 4 | className() = delete; \ 5 | className(className&&) = delete; \ 6 | className(const className&) = delete; \ 7 | className& operator=(const className&) = delete; 8 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Input.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Pad.h" 4 | #include "Vector.h" 5 | 6 | class Input { 7 | public: 8 | PAD(WIN32_LINUX(12, 16)) 9 | bool isTrackIRAvailable; 10 | bool isMouseInitialized; 11 | bool isMouseActive; 12 | PAD(WIN32_LINUX(154, 162)) 13 | bool isCameraInThirdPerson; 14 | bool cameraMovingWithMouse; 15 | Vector cameraOffset; 16 | }; 17 | -------------------------------------------------------------------------------- /Demo/Source/SDK/InputSystem.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class InputSystem { 7 | public: 8 | INCONSTRUCTIBLE(InputSystem) 9 | 10 | VIRTUAL_METHOD(void, enableInput, 11, (bool enable), (this, enable)) 11 | VIRTUAL_METHOD(void, resetInputState, 39, (), (this)) 12 | }; 13 | -------------------------------------------------------------------------------- /Demo/Source/SDK/KeyValues.cpp: -------------------------------------------------------------------------------- 1 | #include "KeyValues.h" 2 | #include "KeyValuesSystem.h" 3 | #include "../Memory.h" 4 | 5 | KeyValues* KeyValues::fromString(const char* name, const char* value) noexcept 6 | { 7 | #ifdef _WIN32 8 | const auto keyValuesFromString = memory->keyValuesFromString; 9 | KeyValues* keyValues; 10 | __asm { 11 | push 0 12 | mov edx, value 13 | mov ecx, name 14 | call keyValuesFromString 15 | add esp, 4 16 | mov keyValues, eax 17 | } 18 | return keyValues; 19 | #else 20 | return reinterpret_cast(memory->keyValuesFromString)(name, value, nullptr); 21 | #endif 22 | } 23 | 24 | KeyValues* KeyValues::findKey(const char* keyName, bool create) noexcept 25 | { 26 | return memory->keyValuesFindKey(this, keyName, create); 27 | } 28 | 29 | void KeyValues::setString(const char* keyName, const char* value) noexcept 30 | { 31 | if (const auto key = findKey(keyName, true)) 32 | memory->keyValuesSetString(key, value); 33 | } 34 | 35 | const char* KeyValues::getName() noexcept 36 | { 37 | #ifdef _WIN32 38 | return memory->keyValuesSystem->getStringForSymbol(*reinterpret_cast(std::uintptr_t(this) + 3) | (*reinterpret_cast(std::uintptr_t(this) + 18) << 8)); 39 | #else 40 | return nullptr; 41 | #endif 42 | } 43 | -------------------------------------------------------------------------------- /Demo/Source/SDK/KeyValues.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class KeyValues { 4 | public: 5 | static KeyValues* fromString(const char* name, const char* value) noexcept; 6 | KeyValues* findKey(const char* keyName, bool create) noexcept; 7 | void setString(const char* keyName, const char* value) noexcept; 8 | const char* getName() noexcept; 9 | }; 10 | -------------------------------------------------------------------------------- /Demo/Source/SDK/KeyValuesSystem.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "VirtualMethod.h" 4 | 5 | class KeyValuesSystem { 6 | public: 7 | VIRTUAL_METHOD(const char*, getStringForSymbol, 4, (int symbol), (this, symbol)) 8 | }; 9 | -------------------------------------------------------------------------------- /Demo/Source/SDK/LocalPlayer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | class Entity; 6 | 7 | class LocalPlayer { 8 | public: 9 | void init(Entity** entity) noexcept 10 | { 11 | assert(!localEntity); 12 | localEntity = entity; 13 | } 14 | 15 | constexpr operator bool() noexcept 16 | { 17 | assert(localEntity); 18 | return *localEntity != nullptr; 19 | } 20 | 21 | constexpr auto operator->() noexcept 22 | { 23 | assert(localEntity && *localEntity); 24 | return *localEntity; 25 | } 26 | 27 | constexpr auto get() noexcept 28 | { 29 | assert(localEntity && *localEntity); 30 | return *localEntity; 31 | } 32 | private: 33 | Entity** localEntity = nullptr; 34 | }; 35 | 36 | inline LocalPlayer localPlayer; 37 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Localize.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Inconstructible.h" 6 | #include "VirtualMethod.h" 7 | 8 | class Localize { 9 | public: 10 | INCONSTRUCTIBLE(Localize) 11 | 12 | VIRTUAL_METHOD(const wchar_t*, find, 11, (const char* tokenName), (this, tokenName)) 13 | VIRTUAL_METHOD(const wchar_t*, findSafe, 12, (const char* tokenName), (this, tokenName)) 14 | VIRTUAL_METHOD(int, convertAnsiToUnicode, 15, (const char* ansi, wchar_t* unicode, int unicodeBufferSizeInBytes), (this, ansi, unicode, unicodeBufferSizeInBytes)) 15 | VIRTUAL_METHOD(int, convertUnicodeToAnsi, 16, (const wchar_t* unicode, char* ansi, int ansiBufferSize), (this, unicode, ansi, ansiBufferSize)) 16 | VIRTUAL_METHOD(const char*, findAsUTF8, 47, (const char* tokenName), (this, tokenName)) 17 | }; 18 | 19 | template 20 | class ToUtf8Converter { 21 | public: 22 | ToUtf8Converter(Localize& localize) : localize{ localize } {} 23 | 24 | [[nodiscard]] std::string_view convertUnicodeToAnsi(const wchar_t* string) 25 | { 26 | localize.convertUnicodeToAnsi(string, buffer.data(), buffer.size()); 27 | buffer.back() = '\0'; 28 | return buffer.data(); 29 | } 30 | 31 | private: 32 | Localize& localize; 33 | std::array buffer; 34 | }; 35 | -------------------------------------------------------------------------------- /Demo/Source/SDK/MaterialSystem.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class KeyValues; 7 | class Material; 8 | class RenderContext; 9 | 10 | class MaterialSystem { 11 | public: 12 | INCONSTRUCTIBLE(MaterialSystem) 13 | 14 | VIRTUAL_METHOD(Material*, createMaterial, 83, (const char* materialName, KeyValues* keyValues), (this, materialName, keyValues)) 15 | VIRTUAL_METHOD(Material*, findMaterial, 84, (const char* materialName, const char* textureGroupName = nullptr, bool complain = true, const char* complainPrefix = nullptr), (this, materialName, textureGroupName, complain, complainPrefix)) 16 | VIRTUAL_METHOD(short, firstMaterial, 86, (), (this)) 17 | VIRTUAL_METHOD(short, nextMaterial, 87, (short handle), (this, handle)) 18 | VIRTUAL_METHOD(short, invalidMaterial, 88, (), (this)) 19 | VIRTUAL_METHOD(Material*, getMaterial, 89, (short handle), (this, handle)) 20 | VIRTUAL_METHOD(RenderContext*, getRenderContext, 115, (), (this)) 21 | }; 22 | -------------------------------------------------------------------------------- /Demo/Source/SDK/ModelRender.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Utils.h" 4 | #include "Vector.h" 5 | 6 | class matrix3x4; 7 | 8 | struct Model { 9 | void* handle; 10 | char name[260]; 11 | int loadFlags; 12 | int serverCount; 13 | int type; 14 | int flags; 15 | Vector mins, maxs; 16 | }; 17 | 18 | struct ModelRenderInfo { 19 | Vector origin; 20 | Vector angles; 21 | char pad[4]; 22 | void* renderable; 23 | const Model* model; 24 | const matrix3x4* modelToWorld; 25 | const matrix3x4* lightingOffset; 26 | const Vector* lightingOrigin; 27 | int flags; 28 | int entityIndex; 29 | }; 30 | -------------------------------------------------------------------------------- /Demo/Source/SDK/MoveHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class Entity; 7 | 8 | class MoveHelper { 9 | public: 10 | INCONSTRUCTIBLE(MoveHelper) 11 | 12 | VIRTUAL_METHOD(void, setHost, 1, (Entity* host), (this, host)) 13 | }; 14 | -------------------------------------------------------------------------------- /Demo/Source/SDK/NetworkChannel.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class NetworkChannel { 7 | public: 8 | INCONSTRUCTIBLE(NetworkChannel) 9 | 10 | VIRTUAL_METHOD(float, getLatency, 9, (int flow), (this, flow)) 11 | 12 | std::byte pad[44]; 13 | int chokedPackets; 14 | }; 15 | -------------------------------------------------------------------------------- /Demo/Source/SDK/NetworkStringTable.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class NetworkStringTable { 7 | public: 8 | INCONSTRUCTIBLE(NetworkStringTable) 9 | 10 | VIRTUAL_METHOD_V(int, addString, 8, (bool isServer, const char* value, int length = -1, const void* userdata = nullptr), (this, isServer, value, length, userdata)) 11 | }; 12 | 13 | class NetworkStringTableContainer { 14 | public: 15 | INCONSTRUCTIBLE(NetworkStringTableContainer) 16 | 17 | VIRTUAL_METHOD_V(NetworkStringTable*, findTable, 3, (const char* name), (this, name)) 18 | }; 19 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Pad.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #define CONCAT(a, b) a##b 6 | #define PAD_NAME(n) CONCAT(pad, n) 7 | 8 | #define PAD(size) \ 9 | private: \ 10 | std::byte PAD_NAME(__LINE__) [size]; \ 11 | public: 12 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Panorama.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class UIPanel { 7 | public: 8 | INCONSTRUCTIBLE(UIPanel) 9 | 10 | VIRTUAL_METHOD_V(int, getChildCount, 48, (), (this)) 11 | VIRTUAL_METHOD_V(UIPanel*, getChild, 49, (int n), (this, n)) 12 | VIRTUAL_METHOD(bool, hasClass, 139, (const char* name), (this, name)) 13 | VIRTUAL_METHOD(void, setHasClass, 145, (const char* name, bool hasClass), (this, name, hasClass)) 14 | VIRTUAL_METHOD(float, getAttributeFloat, 278, (const char* name, float defaultValue), (this, name, defaultValue)) 15 | VIRTUAL_METHOD(void, setAttributeFloat, WIN32_LINUX(288, 283), (const char* name, float value), (this, name, value)) 16 | }; 17 | 18 | struct PanoramaEventRegistration { 19 | int numberOfArgs; 20 | PAD(4) 21 | void* (CDECL_CONV* makeEvent)(void*); 22 | void* (CDECL_CONV* createEventFromString)(void*, const char* args, const char** result); 23 | PAD(WIN32_LINUX(24, 48)) 24 | }; 25 | 26 | class UIEngine { 27 | public: 28 | INCONSTRUCTIBLE(UIEngine) 29 | 30 | VIRTUAL_METHOD_V(void, dispatchEvent, 52, (void* eventPtr), (this, eventPtr)) 31 | }; 32 | 33 | class PanoramaUIEngine { 34 | public: 35 | INCONSTRUCTIBLE(PanoramaUIEngine) 36 | 37 | VIRTUAL_METHOD(UIEngine*, accessUIEngine, 11, (), (this)) 38 | }; 39 | -------------------------------------------------------------------------------- /Demo/Source/SDK/PanoramaMarshallHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "Platform.h" 5 | #include "VirtualMethod.h" 6 | 7 | class PanoramaMarshallHelper { 8 | public: 9 | INCONSTRUCTIBLE(PanoramaMarshallHelper) 10 | 11 | VIRTUAL_METHOD(void, setResult, WIN32_LINUX(14, 11), (void* params, int result), (this, params, result)) 12 | }; 13 | -------------------------------------------------------------------------------- /Demo/Source/SDK/PhysicsSurfaceProps.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "Pad.h" 5 | #include "VirtualMethod.h" 6 | 7 | struct SurfaceData { 8 | PAD(80) 9 | float maxspeedfactor; 10 | float jumpfactor; 11 | float penetrationmodifier; 12 | float damagemodifier; 13 | short material; 14 | bool climbable; 15 | }; 16 | 17 | class PhysicsSurfaceProps { 18 | public: 19 | INCONSTRUCTIBLE(PhysicsSurfaceProps) 20 | 21 | VIRTUAL_METHOD_V(SurfaceData*, getSurfaceData, 5, (int index), (this, index)) 22 | }; 23 | -------------------------------------------------------------------------------- /Demo/Source/SDK/PlantedC4.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Entity.h" 4 | #include "Inconstructible.h" 5 | 6 | class PlantedC4 : public Entity { 7 | public: 8 | INCONSTRUCTIBLE(PlantedC4) 9 | 10 | NETVAR(c4BlowTime, "CPlantedC4", "m_flC4Blow", float) 11 | NETVAR(c4TimerLength, "CPlantedC4", "m_flTimerLength", float) 12 | NETVAR(c4BombSite, "CPlantedC4", "m_nBombSite", int) 13 | NETVAR(c4Ticking, "CPlantedC4", "m_bBombTicking", bool) 14 | NETVAR(c4DefuseCountDown, "CPlantedC4", "m_flDefuseCountDown", float) 15 | NETVAR(c4DefuseLength, "CPlantedC4", "m_flDefuseLength", float) 16 | NETVAR(c4Defuser, "CPlantedC4", "m_hBombDefuser", int) 17 | }; 18 | -------------------------------------------------------------------------------- /Demo/Source/SDK/PlayerResource.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "../Netvars.h" 5 | #include "VirtualMethod.h" 6 | 7 | struct Vector; 8 | 9 | class IPlayerResource { 10 | public: 11 | INCONSTRUCTIBLE(IPlayerResource) 12 | 13 | VIRTUAL_METHOD_V(bool, isAlive, 5, (int index), (this, index)) 14 | VIRTUAL_METHOD_V(const char*, getPlayerName, 8, (int index), (this, index)) 15 | VIRTUAL_METHOD_V(int, getPlayerHealth, 14, (int index), (this, index)) 16 | }; 17 | 18 | class PlayerResource { 19 | public: 20 | INCONSTRUCTIBLE(PlayerResource) 21 | 22 | auto getIPlayerResource() noexcept 23 | { 24 | return reinterpret_cast(std::uintptr_t(this) + WIN32_LINUX(0x9D8, 0xF68)); 25 | } 26 | 27 | NETVAR(bombsiteCenterA, "CCSPlayerResource", "m_bombsiteCenterA", Vector) 28 | NETVAR(bombsiteCenterB, "CCSPlayerResource", "m_bombsiteCenterB", Vector) 29 | NETVAR(musicID, "CCSPlayerResource", "m_nMusicID", int[65]) 30 | NETVAR(activeCoinRank, "CCSPlayerResource", "m_nActiveCoinRank", int[65]) 31 | }; 32 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Prediction.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class Entity; 7 | class MoveData; 8 | class MoveHelper; 9 | struct UserCmd; 10 | 11 | class Prediction { 12 | public: 13 | INCONSTRUCTIBLE(Prediction) 14 | 15 | VIRTUAL_METHOD_V(void, setupMove, 20, (Entity* localPlayer, UserCmd* cmd, MoveHelper* moveHelper, MoveData* moveData), (this, localPlayer, cmd, moveHelper, moveData)) 16 | VIRTUAL_METHOD_V(void, finishMove, 21, (Entity* localPlayer, UserCmd* cmd, MoveData* moveData), (this, localPlayer, cmd, moveData)) 17 | }; 18 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Recv.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "Platform.h" 7 | #include "Vector.h" 8 | 9 | struct RecvProp; 10 | 11 | struct recvProxyData { 12 | const RecvProp* recvProp; 13 | union { 14 | float _float; 15 | long _int; 16 | char* _string; 17 | void* data; 18 | Vector vector; 19 | int64_t int64; 20 | } value; 21 | }; 22 | 23 | using recvProxy = std::add_pointer_t; 24 | 25 | struct RecvProp { 26 | char* name; 27 | int type; 28 | int flags; 29 | int stringBufferSize; 30 | int insideArray; 31 | const void* extraData; 32 | RecvProp* arrayProp; 33 | void* arrayLengthProxy; 34 | recvProxy proxy; 35 | void* dataTableProxy; 36 | struct RecvTable* dataTable; 37 | int offset; 38 | int elementStride; 39 | int elementCount; 40 | const char* parentArrayPropName; 41 | }; 42 | 43 | struct RecvTable { 44 | RecvProp* props; 45 | int propCount; 46 | void* decoder; 47 | char* netTableName; 48 | bool isInitialized; 49 | bool isInMainList; 50 | }; 51 | -------------------------------------------------------------------------------- /Demo/Source/SDK/RenderContext.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Inconstructible.h" 6 | #include "VirtualMethod.h" 7 | 8 | class RenderContext { 9 | public: 10 | INCONSTRUCTIBLE(RenderContext) 11 | 12 | VIRTUAL_METHOD(void, release, 1, (), (this)) 13 | VIRTUAL_METHOD(void, beginRender, 2, (), (this)) 14 | VIRTUAL_METHOD(void, endRender, 3, (), (this)) 15 | VIRTUAL_METHOD(void, getViewport, 41, (int& x, int& y, int& width, int& height), (this, std::ref(x), std::ref(y), std::ref(width), std::ref(height))) 16 | }; 17 | -------------------------------------------------------------------------------- /Demo/Source/SDK/RenderView.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class RenderView { 7 | public: 8 | INCONSTRUCTIBLE(RenderView) 9 | 10 | VIRTUAL_METHOD(void, setBlend, 4, (float alpha), (this, alpha)) 11 | VIRTUAL_METHOD(void, setColorModulation, 6, (const float* colors), (this, colors)) 12 | 13 | constexpr void setColorModulation(float r, float g, float b) noexcept 14 | { 15 | float color[3]{ r, g, b }; 16 | setColorModulation(color); 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Sound.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Pad.h" 4 | #include "Vector.h" 5 | 6 | struct ActiveChannels { 7 | int count; 8 | short list[128]; 9 | }; 10 | 11 | struct Channel { 12 | #ifdef _WIN32 13 | PAD(244) 14 | #else 15 | PAD(260) 16 | #endif 17 | int soundSource; 18 | PAD(56) 19 | Vector origin; 20 | Vector direction; 21 | PAD(80) 22 | }; 23 | -------------------------------------------------------------------------------- /Demo/Source/SDK/SoundEmitter.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class SoundEmitter { 7 | public: 8 | INCONSTRUCTIBLE(SoundEmitter) 9 | 10 | VIRTUAL_METHOD(const char*, getSoundName, 46, (int index), (this, index)) 11 | }; 12 | -------------------------------------------------------------------------------- /Demo/Source/SDK/SoundInfo.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Pad.h" 4 | #include "Platform.h" 5 | 6 | struct SoundInfo { 7 | PAD(WIN32_LINUX(40, 44)) 8 | float volume; 9 | PAD(12) 10 | int entityIndex; 11 | int channel; 12 | int pitch; 13 | int flags; 14 | int soundIndex; 15 | }; 16 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Steam.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Inconstructible.h" 6 | #include "VirtualMethod.h" 7 | 8 | class SteamFriends { 9 | public: 10 | INCONSTRUCTIBLE(SteamFriends) 11 | 12 | VIRTUAL_METHOD(int, getSmallFriendAvatar, 34, (std::uint64_t steamID), (this, steamID)) 13 | }; 14 | 15 | class SteamUtils { 16 | public: 17 | INCONSTRUCTIBLE(SteamUtils) 18 | 19 | VIRTUAL_METHOD(bool, getImageRGBA, 6, (int image, std::uint8_t* buff, int buffSize), (this, image, buff, buffSize)) 20 | }; 21 | 22 | struct SteamAPIContext { 23 | void* steamClient; 24 | void* steamUser; 25 | SteamFriends* steamFriends; 26 | SteamUtils* steamUtils; 27 | }; 28 | -------------------------------------------------------------------------------- /Demo/Source/SDK/StudioRender.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "Inconstructible.h" 7 | #include "Material.h" 8 | #include "VirtualMethod.h" 9 | 10 | enum class OverrideType { 11 | Normal = 0, 12 | BuildShadows, 13 | DepthWrite, 14 | CustomMaterial, // weapon skins 15 | SsaoDepthWrite 16 | }; 17 | 18 | class StudioRender { 19 | std::byte pad_0[WIN32_LINUX(592, 600)]; 20 | Material* materialOverride; 21 | std::byte pad_1[WIN32_LINUX(12, 24)]; 22 | OverrideType overrideType; 23 | public: 24 | INCONSTRUCTIBLE(StudioRender) 25 | 26 | VIRTUAL_METHOD(void, forcedMaterialOverride, 33, (Material* material, OverrideType type = OverrideType::Normal, int index = -1), (this, material, type, index)) 27 | 28 | bool isForcedMaterialOverride() noexcept 29 | { 30 | if (!materialOverride) 31 | return overrideType == OverrideType::DepthWrite || overrideType == OverrideType::SsaoDepthWrite; // see CStudioRenderContext::IsForcedMaterialOverride 32 | return std::string_view{ materialOverride->getName() }.starts_with("dev/glow"); 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Surface.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | class Surface { 7 | public: 8 | INCONSTRUCTIBLE(Surface) 9 | 10 | VIRTUAL_METHOD(void, unlockCursor, 66, (), (this)) 11 | }; 12 | -------------------------------------------------------------------------------- /Demo/Source/SDK/UserCmd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Vector.h" 4 | 5 | struct UserCmd { 6 | enum { 7 | IN_ATTACK = 1 << 0, 8 | IN_JUMP = 1 << 1, 9 | IN_DUCK = 1 << 2, 10 | IN_FORWARD = 1 << 3, 11 | IN_BACK = 1 << 4, 12 | IN_USE = 1 << 5, 13 | IN_MOVELEFT = 1 << 9, 14 | IN_MOVERIGHT = 1 << 10, 15 | IN_ATTACK2 = 1 << 11, 16 | IN_SCORE = 1 << 16, 17 | IN_BULLRUSH = 1 << 22 18 | }; 19 | void* vmt; 20 | int commandNumber; 21 | int tickCount; 22 | Vector viewangles; 23 | Vector aimdirection; 24 | float forwardmove; 25 | float sidemove; 26 | float upmove; 27 | int buttons; 28 | char impulse; 29 | int weaponselect; 30 | int weaponsubtype; 31 | int randomSeed; 32 | short mousedx; 33 | short mousedy; 34 | bool hasbeenpredicted; 35 | }; 36 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Utils.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "GlobalVars.h" 5 | #include "../Memory.h" 6 | #include "Utils.h" 7 | 8 | std::tuple rainbowColor(float speed) noexcept 9 | { 10 | constexpr float pi = std::numbers::pi_v; 11 | return std::make_tuple(std::sin(speed * memory->globalVars->realtime) * 0.5f + 0.5f, 12 | std::sin(speed * memory->globalVars->realtime + 2 * pi / 3) * 0.5f + 0.5f, 13 | std::sin(speed * memory->globalVars->realtime + 4 * pi / 3) * 0.5f + 0.5f); 14 | } 15 | -------------------------------------------------------------------------------- /Demo/Source/SDK/Utils.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | std::tuple rainbowColor(float speed) noexcept; 6 | -------------------------------------------------------------------------------- /Demo/Source/SDK/UtlMap.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "UtlMemory.h" 4 | 5 | template 6 | struct Node { 7 | int left; 8 | int right; 9 | int parent; 10 | int type; 11 | Key key; 12 | Value value; 13 | }; 14 | 15 | template 16 | struct UtlMap { 17 | auto begin() const noexcept { return memory.memory; } 18 | auto end() const noexcept { return memory.memory + numElements; } 19 | 20 | int find(Key key) const noexcept 21 | { 22 | auto curr = root; 23 | 24 | while (curr != -1) { 25 | const auto el = memory[curr]; 26 | 27 | if (el.key < key) 28 | curr = el.right; 29 | else if (el.key > key) 30 | curr = el.left; 31 | else 32 | break; 33 | } 34 | return curr; 35 | } 36 | 37 | void* lessFunc; 38 | UtlMemory> memory; 39 | int root; 40 | int numElements; 41 | int firstFree; 42 | int lastAlloc; 43 | Node* elements; 44 | }; 45 | -------------------------------------------------------------------------------- /Demo/Source/SDK/UtlMemory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | template 4 | struct UtlMemory { 5 | T& operator[](int i) const noexcept { return memory[i]; } 6 | 7 | T* memory; 8 | int allocationCount; 9 | int growSize; 10 | }; 11 | -------------------------------------------------------------------------------- /Demo/Source/SDK/UtlString.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "UtlMemory.h" 4 | 5 | struct UtlString { 6 | UtlMemory buffer; 7 | int length; 8 | 9 | const char* data() const noexcept { return buffer.memory; } 10 | }; 11 | -------------------------------------------------------------------------------- /Demo/Source/SDK/UtlVector.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | template 4 | class UtlVector { 5 | public: 6 | constexpr T& operator[](int i) noexcept { return memory[i]; } 7 | constexpr const T& operator[](int i) const noexcept { return memory[i]; } 8 | 9 | T* memory; 10 | int allocationCount; 11 | int growSize; 12 | int size; 13 | T* elements; 14 | }; 15 | -------------------------------------------------------------------------------- /Demo/Source/SDK/VarMapping.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "UtlVector.h" 4 | 5 | struct VarEntry { 6 | unsigned short type; 7 | unsigned short needsToInterpolate; 8 | std::byte pad[8]; 9 | }; 10 | 11 | struct VarMap { 12 | UtlVector entries; 13 | int interpolatedEntries; 14 | }; 15 | -------------------------------------------------------------------------------- /Demo/Source/SDK/ViewRenderBeams.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "Vector.h" 5 | #include "VirtualMethod.h" 6 | 7 | class Entity; 8 | 9 | struct BeamInfo { 10 | int type; 11 | Entity* startEnt; 12 | int startAttachment; 13 | Entity* endEnt; 14 | int endAttachment; 15 | Vector start; 16 | Vector end; 17 | int modelIndex; 18 | const char* modelName; 19 | int haloIndex; 20 | const char* haloName; 21 | float haloScale; 22 | float life; 23 | float width; 24 | float endWidth; 25 | float fadeLength; 26 | float amplitude; 27 | float brightness; 28 | float speed; 29 | int startFrame; 30 | float frameRate; 31 | float red; 32 | float green; 33 | float blue; 34 | bool renderable; 35 | int segments; 36 | int flags; 37 | Vector ringCenter; 38 | float ringStartRadius; 39 | float ringEndRadius; 40 | }; 41 | 42 | struct Beam { 43 | PAD(WIN32_LINUX(52, 76)) 44 | int flags; 45 | PAD(144) 46 | float die; 47 | }; 48 | 49 | class ViewRenderBeams { 50 | public: 51 | INCONSTRUCTIBLE(ViewRenderBeams) 52 | 53 | VIRTUAL_METHOD(Beam*, createBeamPoints, WIN32_LINUX(12, 9), (BeamInfo& beamInfo), (this, std::ref(beamInfo))) 54 | }; 55 | -------------------------------------------------------------------------------- /Demo/Source/SDK/VirtualMethod.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Platform.h" 6 | 7 | #ifdef _WIN32 8 | #include 9 | #include "../Memory.h" 10 | #endif 11 | 12 | namespace VirtualMethod 13 | { 14 | template 15 | constexpr T call(void* classBase, Args... args) noexcept 16 | { 17 | #ifdef _WIN32 18 | return x86RetSpoof::invokeThiscall(std::uintptr_t(classBase), (*reinterpret_cast(classBase))[Idx], memory->jmpEbxGadgetInClient, args...); 19 | #else 20 | return (*reinterpret_cast(classBase))[Idx](classBase, args...); 21 | #endif 22 | } 23 | } 24 | 25 | #define VIRTUAL_METHOD(returnType, name, idx, args, argsRaw) \ 26 | returnType name args noexcept \ 27 | { \ 28 | return VirtualMethod::callargsRaw; \ 29 | } 30 | 31 | #ifdef _WIN32 32 | #define VIRTUAL_METHOD_V(returnType, name, idx, args, argsRaw) VIRTUAL_METHOD(returnType, name, idx, args, argsRaw) 33 | #else 34 | #define VIRTUAL_METHOD_V(returnType, name, idx, args, argsRaw) VIRTUAL_METHOD(returnType, name, idx + 1, args, argsRaw) 35 | #endif 36 | -------------------------------------------------------------------------------- /Demo/Source/SDK/WeaponData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Pad.h" 4 | 5 | enum class WeaponType { 6 | Knife = 0, 7 | Pistol, 8 | SubMachinegun, 9 | Rifle, 10 | Shotgun, 11 | SniperRifle, 12 | Machinegun, 13 | C4, 14 | Placeholder, 15 | Grenade, 16 | Unknown, 17 | StackableItem, 18 | Fists, 19 | BreachCharge, 20 | BumpMine, 21 | Tablet, 22 | Melee 23 | }; 24 | 25 | struct WeaponInfo { 26 | PAD(WIN32_LINUX(20, 32)) 27 | int maxClip; 28 | PAD(WIN32_LINUX(112, 204)) 29 | const char* name; 30 | PAD(WIN32_LINUX(60, 72)) 31 | WeaponType type; 32 | PAD(4) 33 | int price; 34 | PAD(WIN32_LINUX(8, 12)) 35 | float cycletime; 36 | PAD(12) 37 | bool fullAuto; 38 | PAD(3) 39 | int damage; 40 | float headshotMultiplier; 41 | float armorRatio; 42 | int bullets; 43 | float penetration; 44 | PAD(8) 45 | float range; 46 | float rangeModifier; 47 | PAD(16) 48 | bool silencer; 49 | PAD(WIN32_LINUX(15, 23)) 50 | float maxSpeed; 51 | float maxSpeedAlt; 52 | PAD(100) 53 | float recoilMagnitude; 54 | float recoilMagnitudeAlt; 55 | PAD(16) 56 | float recoveryTimeStand; 57 | }; 58 | -------------------------------------------------------------------------------- /Demo/Source/SDK/WeaponSystem.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Inconstructible.h" 4 | #include "VirtualMethod.h" 5 | 6 | enum class WeaponId : short; 7 | struct WeaponInfo; 8 | 9 | class WeaponSystem { 10 | public: 11 | INCONSTRUCTIBLE(WeaponSystem) 12 | 13 | VIRTUAL_METHOD(WeaponInfo*, getWeaponInfo, 2, (WeaponId weaponId), (this, weaponId)) 14 | }; 15 | -------------------------------------------------------------------------------- /Demo/Source/SDK/matrix3x4.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct Vector; 4 | 5 | class matrix3x4 { 6 | float mat[3][4]; 7 | public: 8 | constexpr auto operator[](int i) const noexcept { return mat[i]; } 9 | constexpr auto origin() const noexcept; 10 | }; 11 | 12 | #include "Vector.h" 13 | 14 | constexpr auto matrix3x4::origin() const noexcept 15 | { 16 | return Vector{ mat[0][3], mat[1][3], mat[2][3] }; 17 | } 18 | -------------------------------------------------------------------------------- /Demo/Source/Texture.cpp: -------------------------------------------------------------------------------- 1 | #include "Texture.h" 2 | 3 | #ifdef _WIN32 4 | #include "imgui/imgui_impl_dx9.h" 5 | #else 6 | #include "imgui/imgui_impl_opengl3.h" 7 | #endif 8 | 9 | void Texture::init(int width, int height, const std::uint8_t* data) noexcept 10 | { 11 | texture = ImGui_CreateTextureRGBA(width, height, data); 12 | } 13 | 14 | void Texture::clear() noexcept 15 | { 16 | if (texture) 17 | ImGui_DestroyTexture(texture); 18 | texture = nullptr; 19 | } 20 | -------------------------------------------------------------------------------- /Demo/Source/Texture.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | using ImTextureID = void*; 6 | 7 | class Texture { 8 | ImTextureID texture = nullptr; 9 | public: 10 | Texture() = default; 11 | ~Texture() { clear(); } 12 | Texture(const Texture&) = delete; 13 | Texture& operator=(const Texture&) = delete; 14 | Texture(Texture&& other) noexcept : texture{ other.texture } { other.texture = nullptr; } 15 | Texture& operator=(Texture&& other) noexcept { clear(); texture = other.texture; other.texture = nullptr; return *this; } 16 | 17 | void init(int width, int height, const std::uint8_t* data) noexcept; 18 | void clear() noexcept; 19 | [[nodiscard]] ImTextureID get() const noexcept { return texture; } 20 | }; 21 | -------------------------------------------------------------------------------- /Demo/Source/imguiCustom.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "imgui/imgui.h" 4 | 5 | struct Color4; 6 | struct ColorToggle; 7 | struct ColorToggle3; 8 | struct ColorToggleRounding; 9 | struct ColorToggleThickness; 10 | struct ColorToggleThicknessRounding; 11 | 12 | namespace ImGuiCustom 13 | { 14 | void colorPicker(const char* name, float color[3], float* alpha = nullptr, bool* rainbow = nullptr, float* rainbowSpeed = nullptr, bool* enable = nullptr, float* thickness = nullptr, float* rounding = nullptr) noexcept; 15 | void colorPicker(const char* name, ColorToggle3& colorConfig) noexcept; 16 | void colorPicker(const char* name, Color4& colorConfig, bool* enable = nullptr, float* thickness = nullptr) noexcept; 17 | void colorPicker(const char* name, ColorToggle& colorConfig) noexcept; 18 | void colorPicker(const char* name, ColorToggleRounding& colorConfig) noexcept; 19 | void colorPicker(const char* name, ColorToggleThickness& colorConfig) noexcept; 20 | void colorPicker(const char* name, ColorToggleThicknessRounding& colorConfig) noexcept; 21 | void arrowButtonDisabled(const char* id, ImGuiDir dir) noexcept; 22 | } 23 | 24 | class KeyBind; 25 | 26 | namespace ImGui 27 | { 28 | void progressBarFullWidth(float fraction, float height) noexcept; 29 | void textUnformattedCentered(const char* text) noexcept; 30 | void hotkey(const char* label, KeyBind& key, float samelineOffset = 0.0f, const ImVec2& size = { 100.0f, 0.0f }) noexcept; 31 | } 32 | -------------------------------------------------------------------------------- /Demo/Source/pch-c.c: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | -------------------------------------------------------------------------------- /Demo/Source/pch.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | -------------------------------------------------------------------------------- /Demo/Source/pch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifdef _WIN32 4 | #ifdef __cplusplus 5 | #include 6 | #include 7 | #endif 8 | #include 9 | #if !defined(__cplusplus) && defined(interface) 10 | #undef interface 11 | #endif 12 | #endif 13 | 14 | #ifdef __cplusplus 15 | #include 16 | #include 17 | #include 18 | 19 | #include "imgui/imgui.h" 20 | #define IMGUI_DEFINE_MATH_OPERATORS 21 | #include "imgui/imgui_internal.h" 22 | #include "nlohmann/json.hpp" 23 | #endif 24 | 25 | #ifdef _WIN32 26 | #include "freetype/freetype/internal/ftobjs.h" 27 | #endif 28 | -------------------------------------------------------------------------------- /Demo/Tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(THREADS_PREFER_PTHREAD_FLAG ON) 2 | 3 | find_package(Threads REQUIRED) 4 | 5 | include(FetchContent) 6 | FetchContent_Declare( 7 | googletest 8 | URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.zip 9 | URL_HASH SHA256=24564E3B712D3EB30AC9A85D92F7D720F60CC0173730AC166F27DDA7FED76CB2 10 | ) 11 | 12 | FetchContent_MakeAvailable(googletest) 13 | 14 | add_executable(Tests HelpersTests.cpp SortFilterTests.cpp) 15 | add_subdirectory(InventoryChanger) 16 | target_link_libraries(Tests gtest_main gmock Threads::Threads OsirisOBJ) 17 | 18 | include(GoogleTest) 19 | gtest_discover_tests(Tests DISCOVERY_TIMEOUT 60) 20 | -------------------------------------------------------------------------------- /Demo/Tests/InventoryChanger/Backend/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(Tests PRIVATE 2 | ItemConstRemoverTests.cpp 3 | PickEmTests.cpp 4 | ResponseQueueTests.cpp 5 | Response/ItemInResponseTests.cpp 6 | StorageUnitManagerTests.cpp 7 | XRayScannerTests.cpp 8 | ) 9 | 10 | add_subdirectory(Request) 11 | -------------------------------------------------------------------------------- /Demo/Tests/InventoryChanger/Backend/ItemConstRemoverTests.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | namespace inventory_changer::backend 10 | { 11 | namespace 12 | { 13 | 14 | TEST(InventoryChanger_Backend_ItemConstRemoverTest, ReferenceToTheItemCanBeRetrieved) { 15 | game_items::Item dummyGameItem{ {}, {}, {}, {}, {} }; 16 | ItemList itemList; 17 | itemList.emplace_back(dummyGameItem); 18 | 19 | ItemIterator item = std::prev(itemList.end()); 20 | EXPECT_EQ(std::addressof(ItemConstRemover{ itemList }(item)), std::to_address(item)); 21 | } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Demo/Tests/InventoryChanger/Backend/Request/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(Tests PRIVATE 2 | ItemModificationHandlerTests.cpp 3 | PickEmHandlerTests.cpp 4 | RequestBuilderTests.cpp 5 | ) 6 | -------------------------------------------------------------------------------- /Demo/Tests/InventoryChanger/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(Tests PRIVATE 2 | StaticDataTests.cpp 3 | ItemGeneratorTests.cpp 4 | ) 5 | 6 | add_subdirectory(Backend) 7 | add_subdirectory(GameItems) 8 | add_subdirectory(Inventory) 9 | add_subdirectory(ItemGenerator) 10 | -------------------------------------------------------------------------------- /Demo/Tests/InventoryChanger/GameItems/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(Tests PRIVATE 2 | ItemSorterTests.cpp 3 | ItemTests.cpp 4 | LookupTests.cpp 5 | StorageTests.cpp 6 | ) 7 | -------------------------------------------------------------------------------- /Demo/Tests/InventoryChanger/Inventory/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(Tests PRIVATE 2 | StructsFromJsonTests.cpp 3 | ) 4 | -------------------------------------------------------------------------------- /Demo/Tests/InventoryChanger/ItemGenerator/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | target_sources(Tests PRIVATE 2 | AttributeGeneratorTests.cpp 3 | DefaultGeneratorTests.cpp 4 | ) 5 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 SoftSec Lab 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /makefile: -------------------------------------------------------------------------------- 1 | ### python version ### 2 | py := python3 # python3 command 3 | 4 | ### experiment arguments ### 5 | gpu := 0 # gpu id 6 | seed := 3 # random seed 7 | 8 | ### sgru model arguments ### 9 | n_hidden := 64 # number of hidden units 10 | n_layer := 3 # number of stacked layers 11 | bat_size := 64 # batch size 12 | n_epoch := 64 # number of training epochs 13 | win_size := 20 # rnn window size 14 | stride := 2 # stride for training events 15 | duration := 10 # time duration for relevant events 16 | 17 | ### cross validation ### 18 | n_split := 7 # number of splits in k-fold cross validation 19 | split := -1 # split to experiment on 20 | 21 | ### benchmark results ### 22 | save_result := False # save bench results to a tsv file 23 | 24 | ### all arguments ### 25 | argnames := n_hidden n_layer bat_size n_epoch win_size stride duration seed gpu n_split split save_result 26 | args := $(foreach a,$(argnames), --$(a) $($(a))) 27 | 28 | ### make targets ### 29 | %: %.py 30 | @$(py) -u $^ $(args) 31 | 32 | ### dummy makefile target used for preprocessing ### 33 | exps := exp_1 exp_2 exp_3 exp_4 34 | preprocess_all: 35 | @$(foreach e, $(exps),\ 36 | $(foreach g, $(shell seq 1 10),\ 37 | $(py) -u preprocess.py $(exp_name) --game $(g);)) 38 | 39 | ##### clean everything ##### 40 | clean: 41 | @find . -name '__pycache__' -type d -exec rm -rf {} + -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | matplotlib==3.5.2 2 | more_itertools==8.10.0 3 | numpy==1.22.3 4 | pandas==1.4.2 5 | scikit_learn==1.1.1 6 | scipy==1.8.1 7 | seaborn==0.11.2 8 | torch==1.11.0 9 | tqdm==4.64.0 10 | --------------------------------------------------------------------------------